Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module Users
- # Create new user
- class SignInOrCreateWithLinkedin
- include UseCase
- attr_reader :listener, :klass, :auth
- def initialize(listener, klass, auth)
- @listener = listener
- @klass = klass
- @auth = auth
- end
- def perform
- user = sign_in_or_create_user_with_linked_in
- if user.save
- listener.on_linkedin_success user
- else
- listener.on_linkedin_fail user
- end
- end
- private
- def sign_in_or_create_user_with_linked_in
- klass
- .where(provider: auth.provider, uid: auth.uid)
- .first_or_create { |user| create_user(user) }
- end
- def create_user(user)
- user.role = 'user'
- user.name = auth.info.name
- user.email = auth.info.email
- user.password = Devise.friendly_token[0, 20]
- user.authentication_token = Devise.friendly_token[0, 30]
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement