From 4feab5219e7c9943a98512001e9080dc2937bbc3 Mon Sep 17 00:00:00 2001 From: flaburgan Date: Thu, 2 May 2019 17:27:27 +0200 Subject: [PATCH] Use a partial to share code between mobile and desktop, add the new route to the RegistrationController, drop flash message for closed registrations --- app/assets/stylesheets/help.scss | 23 ----------------- app/assets/stylesheets/registration.scss | 16 +++++++----- app/controllers/registrations_controller.rb | 16 ++++++------ app/views/help/registration_closed.html.haml | 25 ------------------- app/views/registrations/_form.haml | 2 +- .../_registrations_closed.haml} | 0 app/views/registrations/new.haml | 15 ++++++----- .../registrations/registrations_closed.haml | 8 ++++++ .../registrations_closed.mobile.haml | 10 ++++++++ config/locales/diaspora/en.yml | 4 +-- config/routes.rb | 2 +- ...gns_up.feature => getting_started.feature} | 6 ++--- features/desktop/registrations.feature | 24 ++++++++++++++++++ ...signs_up.feature => registrations.feature} | 3 +-- features/step_definitions/session_steps.rb | 8 ++++++ features/step_definitions/user_steps.rb | 8 ------ .../registrations_controller_spec.rb | 15 +++++------ 17 files changed, 91 insertions(+), 94 deletions(-) delete mode 100644 app/views/help/registration_closed.html.haml rename app/views/{help/registration_closed.mobile.haml => registrations/_registrations_closed.haml} (100%) create mode 100644 app/views/registrations/registrations_closed.haml create mode 100644 app/views/registrations/registrations_closed.mobile.haml rename features/desktop/{signs_up.feature => getting_started.feature} (96%) create mode 100644 features/desktop/registrations.feature rename features/mobile/{signs_up.feature => registrations.feature} (93%) diff --git a/app/assets/stylesheets/help.scss b/app/assets/stylesheets/help.scss index 3dfc335af..c19e09439 100644 --- a/app/assets/stylesheets/help.scss +++ b/app/assets/stylesheets/help.scss @@ -106,26 +106,3 @@ ul#help_nav { } } } - -.ball{ - background: image-url('branding/ball.png') no-repeat; - background-size: contain; - height: 633px; - max-width: 100%; -} - -.v-center { - display: table; - height: 633px; - } - -.content { - display: table-cell; - vertical-align: middle; - - h2 { - font-size: 35px; - margin: 12px; - text-align: left; - } -} diff --git a/app/assets/stylesheets/registration.scss b/app/assets/stylesheets/registration.scss index 123161d6a..5fb2a2bc6 100644 --- a/app/assets/stylesheets/registration.scss +++ b/app/assets/stylesheets/registration.scss @@ -1,5 +1,4 @@ -.page-registrations.action-new, -.page-registrations.action-create { +.page-registrations { .ball { background: image-url('branding/ball.png') no-repeat; background-size: contain; @@ -12,19 +11,24 @@ height: 633px; } + @media (max-width: $screen-xs-max) { + .v-center { + height: auto; + } + } + .content { display: table-cell; vertical-align: middle; - h2 { + h1 { font-size: 35px; - margin: 12px; - text-align: center; + margin: 12px 0; } } form { - max-width: 400px; + max-width: 500px; } .captcha-img { diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index 142563314..7ba743756 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -5,9 +5,9 @@ # the COPYRIGHT file. class RegistrationsController < Devise::RegistrationsController - before_action :check_registrations_open_or_valid_invite! + before_action :check_registrations_open_or_valid_invite!, except: :registrations_closed - layout -> { request.format == :mobile ? "application" : "with_header" } + layout -> { request.format == :mobile ? "application" : "with_header_with_footer" } def create @user = User.build(user_params) @@ -28,17 +28,17 @@ class RegistrationsController < Devise::RegistrationsController end end + def registrations_closed + render "registrations/registrations_closed" + end + private def check_registrations_open_or_valid_invite! return true if AppConfig.settings.enable_registrations? || invite.try(:can_be_used?) - if params[:invite] - flash[:error] = t("registrations.invalid_invite") - redirect_to new_user_session_path - else - redirect_to registration_closed_path - end + flash[:error] = t("registrations.invalid_invite") if params[:invite] + redirect_to registrations_closed_path end def invite diff --git a/app/views/help/registration_closed.html.haml b/app/views/help/registration_closed.html.haml deleted file mode 100644 index ea794a5b2..000000000 --- a/app/views/help/registration_closed.html.haml +++ /dev/null @@ -1,25 +0,0 @@ -- content_for :page_title do - = AppConfig.settings.pod_name + " - " + t("devise.shared.links.sign_up_closed") - -.container - .row - .col-md-10.offset1 - .col-md-7.hidden-phone - %h1.ball - .col-md-5.v-center - .content - %h2 - = t("devise.shared.links.sign_up_closed") - - != t("help.closed_pod", - wiki: link_to("another pod", "https://diasporafoundation.org/getting_started/sign_up")) - - != t("help.find_pods", - poduptime: link_to("Poduptime", "https://podupti.me/")) - - != t("help.other_questions", - wiki: link_to("Wiki", "https://wiki.diasporafoundation.org/Choosing_a_pod")) - - - - diff --git a/app/views/registrations/_form.haml b/app/views/registrations/_form.haml index 56bbb04fb..9cd6ce0f7 100644 --- a/app/views/registrations/_form.haml +++ b/app/views/registrations/_form.haml @@ -4,7 +4,7 @@ - if mobile %legend = image_tag("branding/logos/header-logo2x.png", height: 40, width: 40) - = t("aspects.aspect_stream.make_something") + = AppConfig.settings.pod_name - if mobile = f.label :email, t("registrations.new.email"), class: "control-label", id: "emailLabel" diff --git a/app/views/help/registration_closed.mobile.haml b/app/views/registrations/_registrations_closed.haml similarity index 100% rename from app/views/help/registration_closed.mobile.haml rename to app/views/registrations/_registrations_closed.haml diff --git a/app/views/registrations/new.haml b/app/views/registrations/new.haml index 96f9c2733..bf034f9da 100644 --- a/app/views/registrations/new.haml +++ b/app/views/registrations/new.haml @@ -1,12 +1,11 @@ #registration .container .row - .col-md-10.offset1 - .col-md-7.hidden-phone - %h1.ball - .col-md-5.v-center - .content.text-center - %h2#pod-name - = AppConfig.settings.pod_name + .col-sm-6.hidden-xs + .ball + .col-sm-6.col-xs-12.v-center + .content.text-center + %h1#pod-name + = AppConfig.settings.pod_name - = render partial: "form", locals: {mobile: false} + = render partial: "form", locals: {mobile: false} diff --git a/app/views/registrations/registrations_closed.haml b/app/views/registrations/registrations_closed.haml new file mode 100644 index 000000000..c84db60f6 --- /dev/null +++ b/app/views/registrations/registrations_closed.haml @@ -0,0 +1,8 @@ +#registration + .container + .row + .col-sm-6.hidden-xs + .ball + .col-sm-6.col-xs-12.v-center + .content + = render partial: "registrations_closed" diff --git a/app/views/registrations/registrations_closed.mobile.haml b/app/views/registrations/registrations_closed.mobile.haml new file mode 100644 index 000000000..255620aca --- /dev/null +++ b/app/views/registrations/registrations_closed.mobile.haml @@ -0,0 +1,10 @@ + +.stream#main-stream + - flash.each do |name, msg| + .expose#flash-container + .flash-message{class: "message alert alert-#{flash_class name}", role: "alert"} + = msg + + .login-form + .login-container + = render partial: "registrations_closed" diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml index a3bb4eddf..9331f797d 100644 --- a/config/locales/diaspora/en.yml +++ b/config/locales/diaspora/en.yml @@ -347,8 +347,8 @@ en: tutorial: "tutorial" irc: "IRC" closed_pod: "This pod is currently closed to new registrations. However, you can still join the diaspora* network by registering on %{wiki}. Because all pods are interconnected, you will have access to the same content there." - find_pods: "You can find pods at %{poduptime}." - other_questions: "If you have any other questions regarding choosing a pod, checkout our %{wiki}." + find_pods: "There’s a list of pods you can sign up to at %{poduptime}." + other_questions: "If you have any other questions regarding choosing a pod, check out our %{wiki}." choose_another: "Please, choose another pod" wiki: "wiki" faq: "FAQ" diff --git a/config/routes.rb b/config/routes.rb index 66b3ecf92..8517e7ee8 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -129,6 +129,7 @@ Rails.application.routes.draw do devise_scope :user do get "/users/sign_up" => "registrations#new", :as => :new_user_registration post "/users" => "registrations#create", :as => :user_registration + get "/registrations_closed" => "registrations#registrations_closed", :as => :registrations_closed end get "users/invitations" => "invitations#new", :as => "new_user_invitation" @@ -205,7 +206,6 @@ Rails.application.routes.draw do # Help get 'help' => 'help#faq', :as => 'help' - get "help/registration_closed" => "help#registration_closed", :as => "registration_closed" get 'help/:topic' => 'help#faq' #Protocol Url diff --git a/features/desktop/signs_up.feature b/features/desktop/getting_started.feature similarity index 96% rename from features/desktop/signs_up.feature rename to features/desktop/getting_started.feature index 2703069e0..bbebd5efa 100644 --- a/features/desktop/signs_up.feature +++ b/features/desktop/getting_started.feature @@ -98,11 +98,11 @@ Feature: new user registration Then I should not be able to sign up And I should have a validation error on "user_password, user_password_confirmation" - Scenario: User signs up with an already existing username and email and then tries to sign in (Issue #6136) + Scenario: User signs up with an already existing username and email and then tries to sign in When I log out manually And I go to the new user registration page - And I fill in the new user form with an existing email and username + And I fill in the new user form And I submit the form Then I should see a flash message indicating failure - When I click the sign in button + When I follow "Sign in" Then I should not see a flash message indicating failure diff --git a/features/desktop/registrations.feature b/features/desktop/registrations.feature new file mode 100644 index 000000000..1abcc09c4 --- /dev/null +++ b/features/desktop/registrations.feature @@ -0,0 +1,24 @@ +@javascript +Feature: New user registration + In order to use Diaspora* + As a desktop user + I want to register an account + + Scenario: user signs up and goes to getting started + Given I am on the new user registration page + When I fill in the new user form + And I press "Create account" + Then I should be on the getting started page + And I should see the 'getting started' contents + + Scenario: registrations are closed, user is informed + Given the registrations are closed + When I am on the new user registration page + Then I should see "Open signups are closed at this time" + + Scenario: User is unable to register even by manually sending the POST request + Given I am on the new user registration page + When I fill in the new user form + Given the registrations are closed + When I press "Create account" + Then I should see "Open signups are closed at this time" diff --git a/features/mobile/signs_up.feature b/features/mobile/registrations.feature similarity index 93% rename from features/mobile/signs_up.feature rename to features/mobile/registrations.feature index 3277ef131..43bc9dc75 100644 --- a/features/mobile/signs_up.feature +++ b/features/mobile/registrations.feature @@ -5,8 +5,7 @@ Feature: New user registration I want to register an account Background: - Given I am on the login page - And I follow "Create account" within "#main-nav" + Given I am on the new user registration page Scenario: user signs up and goes to getting started When I fill in the new user form diff --git a/features/step_definitions/session_steps.rb b/features/step_definitions/session_steps.rb index 4b08d1498..14d8f24ff 100644 --- a/features/step_definitions/session_steps.rb +++ b/features/step_definitions/session_steps.rb @@ -74,3 +74,11 @@ end Then (/^I should see the 'getting started' contents$/) do confirm_getting_started_contents end + +Given /^the registrations are closed$/ do + AppConfig.settings.enable_registrations = false +end + +When /^I fill in the new user form$/ do + fill_in_new_user_form +end diff --git a/features/step_definitions/user_steps.rb b/features/step_definitions/user_steps.rb index ee4e71b69..804642cae 100644 --- a/features/step_definitions/user_steps.rb +++ b/features/step_definitions/user_steps.rb @@ -218,20 +218,12 @@ When /^I view "([^\"]*)"'s first post$/ do |email| visit post_path(post) end -When /^I fill in the new user form/ do - fill_in_new_user_form -end - And /^I should be able to friend "([^\"]*)"$/ do |email| user = User.find_by_email(email) step 'I should see a ".aspect-dropdown"' step "I should see \"#{user.name}\"" end -When /^I click the sign in button$/ do - click_link "Sign in" -end - Given /^I did request my photos$/ do @me.perform_export_photos! end diff --git a/spec/controllers/registrations_controller_spec.rb b/spec/controllers/registrations_controller_spec.rb index c1aa7744c..7bb94bcaa 100644 --- a/spec/controllers/registrations_controller_spec.rb +++ b/spec/controllers/registrations_controller_spec.rb @@ -25,14 +25,14 @@ describe RegistrationsController, type: :controller do AppConfig.settings.enable_registrations = false end - it "redirects #new to the registration closed page" do + it "redirects #new to the registrations closed page" do get :new - expect(response).to redirect_to registration_closed_path + expect(response).to redirect_to registrations_closed_path end - it "redirects #create to the registration closed page" do + it "redirects #create to the registrations closed page" do post :create, params: valid_params - expect(response).to redirect_to registration_closed_path + expect(response).to redirect_to registrations_closed_path end it "does not redirect if there is a valid invite token" do @@ -43,7 +43,8 @@ describe RegistrationsController, type: :controller do it "does redirect if there is an invalid invite token" do get :new, params: {invite: {token: "fssdfsd"}} - expect(response).to redirect_to new_user_session_path + expect(flash[:error]).to eq(I18n.t("registrations.invalid_invite")) + expect(response).to redirect_to registrations_closed_path end it "does redirect if there are no invites available with this code" do @@ -51,7 +52,7 @@ describe RegistrationsController, type: :controller do code.update_attributes(count: 0) get :new, params: {invite: {token: code.token}} - expect(response).to redirect_to new_user_session_path + expect(response).to redirect_to registrations_closed_path end it "does redirect when invitations are closed now" do @@ -59,7 +60,7 @@ describe RegistrationsController, type: :controller do AppConfig.settings.invitations.open = false get :new, params: {invite: {token: code.token}} - expect(response).to redirect_to new_user_session_path + expect(response).to redirect_to registrations_closed_path end it "does not redirect when the registration is open" do