blob: de80342e9225162b8a106ef8e9216b785a9af21c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
class SignInUser < Avram::Operation
param_key :user
# You can modify this in src/operations/mixins/user_from_email.cr
include UserFromEmail
attribute email : String
attribute password : String
# Run validations and yields the operation and the user if valid
def run
user = user_from_email
validate_credentials(user)
if valid?
user
else
nil
end
end
# `validate_credentials` determines if a user can sign in.
#
# If desired, you can add additional checks in this method, e.g.
#
# if user.locked?
# email.add_error "is locked out"
# end
private def validate_credentials(user)
if user
unless Authentic.correct_password?(user, password.value.to_s)
password.add_error "is wrong"
end
else
# Usually ok to say that an email is not in the system:
# https://kev.inburke.com/kevin/invalid-username-or-password-useless/
# https://github.com/luckyframework/lucky_cli/issues/192
email.add_error "is not in our system"
end
end
end
|