Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit d8e6e3a

Browse files
cmdumarJudahmeek
authored andcommitted
Fixes
1 parent 5d34bb1 commit d8e6e3a

File tree

1 file changed

+48
-32
lines changed

1 file changed

+48
-32
lines changed
Lines changed: 48 additions & 32 deletions
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)

AltStyle によって変換されたページ (->オリジナル) /