You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
asciinema.org/app/services/email_login_service.rb

22 lines
453 B
Ruby

class EmailLoginService
def login(email)
user = User.for_email!(email)
expiring_token = ExpiringToken.create_for_user(user)
Notifications.delay_login_request(expiring_token.user_id, expiring_token.token)
true
rescue User::InvalidEmailError
false
end
def validate(token)
expiring_token = ExpiringToken.active_for_token(token)
if expiring_token
expiring_token.use!
expiring_token.user
end
end
end