Use a partial to share code between mobile and desktop, add the new route to the RegistrationController, drop flash message for closed registrations

This commit is contained in:
flaburgan 2019-05-02 17:27:27 +02:00 committed by Benjamin Neff
parent 469983a623
commit 4feab5219e
No known key found for this signature in database
GPG key ID: 971464C3F1A90194
17 changed files with 91 additions and 94 deletions

View file

@ -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;
}
}

View file

@ -1,5 +1,4 @@
.page-registrations.action-new, .page-registrations {
.page-registrations.action-create {
.ball { .ball {
background: image-url('branding/ball.png') no-repeat; background: image-url('branding/ball.png') no-repeat;
background-size: contain; background-size: contain;
@ -12,19 +11,24 @@
height: 633px; height: 633px;
} }
@media (max-width: $screen-xs-max) {
.v-center {
height: auto;
}
}
.content { .content {
display: table-cell; display: table-cell;
vertical-align: middle; vertical-align: middle;
h2 { h1 {
font-size: 35px; font-size: 35px;
margin: 12px; margin: 12px 0;
text-align: center;
} }
} }
form { form {
max-width: 400px; max-width: 500px;
} }
.captcha-img { .captcha-img {

View file

@ -5,9 +5,9 @@
# the COPYRIGHT file. # the COPYRIGHT file.
class RegistrationsController < Devise::RegistrationsController 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 def create
@user = User.build(user_params) @user = User.build(user_params)
@ -28,17 +28,17 @@ class RegistrationsController < Devise::RegistrationsController
end end
end end
def registrations_closed
render "registrations/registrations_closed"
end
private private
def check_registrations_open_or_valid_invite! def check_registrations_open_or_valid_invite!
return true if AppConfig.settings.enable_registrations? || invite.try(:can_be_used?) return true if AppConfig.settings.enable_registrations? || invite.try(:can_be_used?)
if params[:invite] flash[:error] = t("registrations.invalid_invite") if params[:invite]
flash[:error] = t("registrations.invalid_invite") redirect_to registrations_closed_path
redirect_to new_user_session_path
else
redirect_to registration_closed_path
end
end end
def invite def invite

View file

@ -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"))

View file

@ -4,7 +4,7 @@
- if mobile - if mobile
%legend %legend
= image_tag("branding/logos/header-logo2x.png", height: 40, width: 40) = image_tag("branding/logos/header-logo2x.png", height: 40, width: 40)
= t("aspects.aspect_stream.make_something") = AppConfig.settings.pod_name
- if mobile - if mobile
= f.label :email, t("registrations.new.email"), class: "control-label", id: "emailLabel" = f.label :email, t("registrations.new.email"), class: "control-label", id: "emailLabel"

View file

@ -1,12 +1,11 @@
#registration #registration
.container .container
.row .row
.col-md-10.offset1 .col-sm-6.hidden-xs
.col-md-7.hidden-phone .ball
%h1.ball .col-sm-6.col-xs-12.v-center
.col-md-5.v-center .content.text-center
.content.text-center %h1#pod-name
%h2#pod-name = AppConfig.settings.pod_name
= AppConfig.settings.pod_name
= render partial: "form", locals: {mobile: false} = render partial: "form", locals: {mobile: false}

View file

@ -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"

View file

@ -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"

View file

@ -347,8 +347,8 @@ en:
tutorial: "tutorial" tutorial: "tutorial"
irc: "IRC" 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." 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}." find_pods: "Theres a list of pods you can sign up to at %{poduptime}."
other_questions: "If you have any other questions regarding choosing a pod, checkout our %{wiki}." other_questions: "If you have any other questions regarding choosing a pod, check out our %{wiki}."
choose_another: "Please, choose another pod" choose_another: "Please, choose another pod"
wiki: "wiki" wiki: "wiki"
faq: "FAQ" faq: "FAQ"

View file

@ -129,6 +129,7 @@ Rails.application.routes.draw do
devise_scope :user do devise_scope :user do
get "/users/sign_up" => "registrations#new", :as => :new_user_registration get "/users/sign_up" => "registrations#new", :as => :new_user_registration
post "/users" => "registrations#create", :as => :user_registration post "/users" => "registrations#create", :as => :user_registration
get "/registrations_closed" => "registrations#registrations_closed", :as => :registrations_closed
end end
get "users/invitations" => "invitations#new", :as => "new_user_invitation" get "users/invitations" => "invitations#new", :as => "new_user_invitation"
@ -205,7 +206,6 @@ Rails.application.routes.draw do
# Help # Help
get 'help' => 'help#faq', :as => 'help' get 'help' => 'help#faq', :as => 'help'
get "help/registration_closed" => "help#registration_closed", :as => "registration_closed"
get 'help/:topic' => 'help#faq' get 'help/:topic' => 'help#faq'
#Protocol Url #Protocol Url

View file

@ -98,11 +98,11 @@ Feature: new user registration
Then I should not be able to sign up Then I should not be able to sign up
And I should have a validation error on "user_password, user_password_confirmation" 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 When I log out manually
And I go to the new user registration page 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 And I submit the form
Then I should see a flash message indicating failure 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 Then I should not see a flash message indicating failure

View file

@ -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"

View file

@ -5,8 +5,7 @@ Feature: New user registration
I want to register an account I want to register an account
Background: Background:
Given I am on the login page Given I am on the new user registration page
And I follow "Create account" within "#main-nav"
Scenario: user signs up and goes to getting started Scenario: user signs up and goes to getting started
When I fill in the new user form When I fill in the new user form

View file

@ -74,3 +74,11 @@ end
Then (/^I should see the 'getting started' contents$/) do Then (/^I should see the 'getting started' contents$/) do
confirm_getting_started_contents confirm_getting_started_contents
end 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

View file

@ -218,20 +218,12 @@ When /^I view "([^\"]*)"'s first post$/ do |email|
visit post_path(post) visit post_path(post)
end 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| And /^I should be able to friend "([^\"]*)"$/ do |email|
user = User.find_by_email(email) user = User.find_by_email(email)
step 'I should see a ".aspect-dropdown"' step 'I should see a ".aspect-dropdown"'
step "I should see \"#{user.name}\"" step "I should see \"#{user.name}\""
end end
When /^I click the sign in button$/ do
click_link "Sign in"
end
Given /^I did request my photos$/ do Given /^I did request my photos$/ do
@me.perform_export_photos! @me.perform_export_photos!
end end

View file

@ -25,14 +25,14 @@ describe RegistrationsController, type: :controller do
AppConfig.settings.enable_registrations = false AppConfig.settings.enable_registrations = false
end end
it "redirects #new to the registration closed page" do it "redirects #new to the registrations closed page" do
get :new get :new
expect(response).to redirect_to registration_closed_path expect(response).to redirect_to registrations_closed_path
end end
it "redirects #create to the registration closed page" do it "redirects #create to the registrations closed page" do
post :create, params: valid_params post :create, params: valid_params
expect(response).to redirect_to registration_closed_path expect(response).to redirect_to registrations_closed_path
end end
it "does not redirect if there is a valid invite token" do 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 it "does redirect if there is an invalid invite token" do
get :new, params: {invite: {token: "fssdfsd"}} 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 end
it "does redirect if there are no invites available with this code" do 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) code.update_attributes(count: 0)
get :new, params: {invite: {token: code.token}} 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 end
it "does redirect when invitations are closed now" do it "does redirect when invitations are closed now" do
@ -59,7 +60,7 @@ describe RegistrationsController, type: :controller do
AppConfig.settings.invitations.open = false AppConfig.settings.invitations.open = false
get :new, params: {invite: {token: code.token}} 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 end
it "does not redirect when the registration is open" do it "does not redirect when the registration is open" do