Class: ApiAuthenticationGem::Auth
- Inherits:
-
Object
- Object
- ApiAuthenticationGem::Auth
- Defined in:
- lib/api_authentication_gem.rb
Constant Summary collapse
- SECRET_KEY =
"your$ecretK3y"
Class Method Summary collapse
- .decode_token(token) ⇒ Object
- .login(email:, password:, user_class:) ⇒ Object
- .signup(email:, password:, user_class:) ⇒ Object
Class Method Details
.decode_token(token) ⇒ Object
30 31 32 33 34 |
# File 'lib/api_authentication_gem.rb', line 30 def self.decode_token(token) JWT.decode(token, SECRET_KEY, true, { algorithm: 'HS256' })[0] rescue nil end |
.login(email:, password:, user_class:) ⇒ Object
20 21 22 23 24 25 26 27 28 |
# File 'lib/api_authentication_gem.rb', line 20 def self.login(email:, password:, user_class:) user = user_class.find_by(email: email) return { error: "Invalid email or password" } unless user return { error: "Invalid email or password" } unless BCrypt::Password.new(user.password_digest) == password token = JWT.encode({ user_id: user.id, exp: Time.now.to_i + 3600 }, SECRET_KEY, 'HS256') { token: token } end |
.signup(email:, password:, user_class:) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 |
# File 'lib/api_authentication_gem.rb', line 8 def self.signup(email:, password:, user_class:) return { error: "Email is required" } unless email return { error: "Password must be at least 5 characters long" } if password.nil? || password.length < 5 return { error: "Email already exists" } if user_class.find_by(email: email) password_digest = BCrypt::Password.create(password) user = user_class.create(email: email, password_digest: password_digest) { message: "User created", user: user } end |