Skip to content

Commit

Permalink
feat(account invitation): accomplish sign up before accepting the inv…
Browse files Browse the repository at this point in the history
…itation (#30)

* feat(account invitation): accomplish sign up before accepting the invitation

* feat(account invitation): change based on the comments

* feat(account invitation): change var name
  • Loading branch information
andreybakanovsky committed Aug 27, 2023
1 parent da6fb45 commit ff4e9bc
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 2 deletions.
7 changes: 6 additions & 1 deletion app/controllers/accept_account_invitations_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@ def show
return if user_signed_in?

session[:after_sign_in_url] = request.fullpath
redirect_to new_user_session_url(email: AccountInvitation.find_by!(token: ps.fetch(:token)).email)

invitee_email = AccountInvitation.find_by!(token: ps.fetch(:token)).email
user = User.find_by(email: invitee_email)
redirect_url = user ? new_user_session_url(email: invitee_email) : new_user_registration_url(email: invitee_email)

redirect_to redirect_url
end

def update
Expand Down
17 changes: 17 additions & 0 deletions app/controllers/users/registrations_controller.rb
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
class Users::RegistrationsController < Devise::RegistrationsController
def new
if params.key?(:email)
self.resource = User.new(email: params[:email])
else
super
end
end

def create
super do |user|
user.create_account(name: user.email, email: user.email) if user.persisted?
Expand All @@ -10,4 +18,13 @@ def create
def devise_mapping
@devise_mapping ||= Devise.mappings[:user]
end

private

def after_sign_up_path_for(resource)
after_sign_in_url = session.delete(:after_sign_in_url)
return after_sign_in_url if after_sign_in_url.present?

super
end
end
11 changes: 10 additions & 1 deletion spec/controllers/accept_account_invitations_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
describe '#show' do
let(:account) { create(:account, :parent) }
let(:user) { create(:user, account: account) }
let(:second_user) { create(:user, account: account) }
let(:second_user) { create(:user) }

let!(:account_invitation) { create(:account_invitation, user: user, account: account, email: second_user.email) }

Expand All @@ -21,6 +21,15 @@
end
end

context 'when the user not signed up' do
let(:account_invitation) { create(:account_invitation, user: user, account: account) }

it 'redirects to registration url with email' do
subject
expect(response).to redirect_to(new_user_registration_url(email: account_invitation.email))
end
end

context 'when the user signed in' do
before { sign_in second_user }

Expand Down

0 comments on commit ff4e9bc

Please sign in to comment.