Refactor UsersController#create

* Simplify controller action
* Extract service classes
This commit is contained in:
Scott Albertson
2013-11-12 14:37:38 -08:00
parent 13da653f2b
commit 51eff92170
4 changed files with 115 additions and 78 deletions

View File

@@ -0,0 +1,39 @@
class UserAuthenticator
def initialize(user, session, authenticator_finder = Users::OmniauthCallbacksController)
@user = user
@session = session[:authentication]
@authenticator_finder = authenticator_finder
end
def start
if authenticated?
@user.active = true
else
@user.password_required!
end
end
def finish
if authenticator
authenticator.after_create_account(@user, @session)
end
@session = nil
end
private
def authenticated?
@session && @session[:email] == @user.email && @session[:email_valid]
end
def authenticator
if authenticator_name
@authenticator ||= @authenticator_finder.find_authenticator(authenticator_name)
end
end
def authenticator_name
@session && @session[:authenticator_name]
end
end