Skip to content

Commit 4be8a55

Browse files
committed
Fixes
1 parent c53d18d commit 4be8a55

File tree

1 file changed

+48
-32
lines changed

1 file changed

+48
-32
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,55 @@
1-
class Api::AuthenticationController < ApplicationController
2-
def create
3-
user = User.find_by(email: params[:email])
4-
5-
if user&.valid_password?(params[:password])
6-
# Generate JWT or session token
7-
token = user.generate_jwt
8-
9-
render json: {
10-
message: 'Login successful',
11-
token: token
12-
}, status: :ok
13-
else
14-
render json: { error: 'Invalid credentials' }, status: :unauthorized
1+
# frozen_string_literal: true
2+
3+
module Api
4+
class AuthenticationController < ApplicationController
5+
def create
6+
user = User.find_by(email: params[:email].downcase.strip)
7+
8+
if user&.valid_password?(params[:password])
9+
begin
10+
token = user.generate_jwt
11+
render json: {
12+
message: 'Login successful',
13+
token: token
14+
}, status: :ok
15+
rescue JWT::EncodeError => e
16+
render json: { error: 'Authentication failed' }, status: :internal_server_error
17+
end
18+
else
19+
render json: { error: 'Invalid credentials' }, status: :unauthorized
20+
end
1521
end
16-
end
1722

18-
def signup
19-
user = User.new(user_params)
20-
21-
if user.save
22-
token = user.generate_jwt
23-
render json: {
24-
message: 'Signup successful',
25-
token: token
26-
}, status: :created
27-
else
28-
render json: {
29-
errors: user.errors.full_messages
30-
}, status: :unprocessable_entity
23+
def signup
24+
return render json: { error: 'Invalid email format' }, status: :unprocessable_entity unless
25+
params.dig(:user, :email)&.match?(URI::MailTo::EMAIL_REGEXP)
26+
27+
return render json: { error: 'Password must be at least 6 characters' }, status: :unprocessable_entity if
28+
params.dig(:user, :password)&.length.to_i < 6
29+
30+
user = User.new(user_params)
31+
32+
if user.save
33+
begin
34+
token = user.generate_jwt
35+
render json: {
36+
message: 'Signup successful',
37+
token: token
38+
}, status: :created
39+
rescue JWT::EncodeError => e
40+
render json: { error: 'Failed to generate authentication token' }, status: :internal_server_error
41+
end
42+
else
43+
render json: {
44+
errors: user.errors.full_messages
45+
}, status: :unprocessable_entity
46+
end
3147
end
32-
end
3348

34-
private
49+
private
3550

36-
def user_params
37-
params.require(:user).permit(:email, :password, :password_confirmation)
51+
def user_params
52+
params.require(:user).permit(:email, :password, :password_confirmation)
53+
end
3854
end
3955
end

0 commit comments

Comments
 (0)