Skip to content

Commit 0d36606

Browse files
committed
fix: improve error handling in user login, logout, and registration usecase
1 parent 2a0fec1 commit 0d36606

File tree

3 files changed

+38
-12
lines changed

3 files changed

+38
-12
lines changed

app/users/usecase/login_users.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55

66
"github.com/hammer-code/lms-be/domain"
7+
"github.com/hammer-code/lms-be/utils"
78
"github.com/sirupsen/logrus"
89
"golang.org/x/crypto/bcrypt"
910
)
@@ -12,12 +13,14 @@ func (us *usecase) Login(ctx context.Context, userReq domain.Login) (user domain
1213
err = us.dbTX.StartTransaction(ctx, func(txCtx context.Context) error {
1314
user, err = us.userRepo.FindByEmail(ctx, userReq.Email)
1415
if err != nil {
15-
logrus.Error("us.LoginUser: failed to login", err)
16+
logrus.Error("us.LoginUser: failed to find user by email", err)
17+
err = utils.NewInternalServerError(err)
1618
return err
1719
}
1820

1921
if err = bcrypt.CompareHashAndPassword([]byte(user.Password), []byte(userReq.Password)); err != nil {
2022
logrus.Error("us.Login: invalid password")
23+
err = utils.NewBadRequestError("Email or Password is invalid", err)
2124
return err
2225
}
2326

@@ -26,24 +29,28 @@ func (us *usecase) Login(ctx context.Context, userReq domain.Login) (user domain
2629
token = *tokenPtr
2730

2831
if err != nil {
29-
logrus.Error("us.Login: failed to login. ", err)
32+
logrus.Error("us.Login: failed to generate token", err)
33+
err = utils.NewInternalServerError(err)
3034
return err
3135
}
3236

3337
if err = us.userRepo.UnactivateTokenByUser(ctx, user.ID); err != nil {
34-
logrus.Error("us.Login: failed to login. ", err)
38+
logrus.Error("us.Login: failed to unactivate token", err)
39+
err = utils.NewInternalServerError(err)
3540
return err
3641
}
3742
if err = us.userRepo.StoreToken(ctx, token, expiredTime, user.ID); err != nil {
38-
logrus.Error("us.Login: failed to login. ", err)
43+
logrus.Error("us.Login: failed to store token", err)
44+
err = utils.NewInternalServerError(err)
3945
return err
4046
}
4147

4248
return nil
4349
})
4450

4551
if err != nil {
46-
logrus.Error("us.Login: failed to login. ", err)
52+
logrus.Error("us.Login: failed to login", err)
53+
err = utils.NewInternalServerError(err)
4754
return
4855
}
4956

app/users/usecase/logout_users.go

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,25 @@
11
package usecase
22

3-
import "context"
3+
import (
4+
"context"
5+
6+
"github.com/hammer-code/lms-be/utils"
7+
"github.com/sirupsen/logrus"
8+
)
49

510
func (us *usecase) Logout(ctx context.Context, token string) error {
611
jwtData, err := us.jwt.VerifyToken(token)
712
if err != nil {
13+
logrus.Error("us.LogoutUser: failed to varify token", err)
14+
err = utils.NewInternalServerError(err)
815
return err
916
}
1017

11-
return us.userRepo.LogoutUser(ctx, token, jwtData.ExpiresAt.Time)
18+
err = us.userRepo.LogoutUser(ctx, token, jwtData.ExpiresAt.Time)
19+
if err != nil {
20+
logrus.Error("us.LogoutUser: failed to logout", err)
21+
err = utils.NewInternalServerError(err)
22+
return err
23+
}
24+
return err
1225
}

app/users/usecase/register_users.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,18 @@ import (
55

66
"github.com/hammer-code/lms-be/constants"
77
"github.com/hammer-code/lms-be/domain"
8+
"github.com/hammer-code/lms-be/utils"
89
"github.com/sirupsen/logrus"
910
"golang.org/x/crypto/bcrypt"
1011
)
1112

1213
func (us *usecase) Register(ctx context.Context, userReq domain.User) (domain.User, error) {
1314
user := domain.User{}
14-
if err := us.dbTX.StartTransaction(ctx, func(txCtx context.Context) error {
15+
err := us.dbTX.StartTransaction(ctx, func(txCtx context.Context) error {
1516
hashPassword, err := bcrypt.GenerateFromPassword([]byte(userReq.Password), bcrypt.DefaultCost)
1617
if err != nil {
17-
logrus.Error("us.Register: failed to register user", err)
18+
logrus.Error("us.Register: failed to hash password", err)
19+
err = utils.NewInternalServerError(err)
1820
return err
1921
}
2022

@@ -23,14 +25,18 @@ func (us *usecase) Register(ctx context.Context, userReq domain.User) (domain.Us
2325
user, err = us.userRepo.CreateUser(ctx, userReq)
2426
if err != nil {
2527
logrus.Error("us.Register: failed to register users. ", err)
26-
28+
err = utils.NewInternalServerError(err)
2729
return err
2830
}
2931
return nil
3032

31-
}); err != nil {
32-
logrus.Error("us.Register: failed to get users. ", err)
33+
})
34+
35+
if err != nil {
36+
logrus.Error("us.Register: failed to register users. ", err)
37+
err = utils.NewInternalServerError(err)
3338
return domain.User{}, err
3439
}
40+
3541
return user, nil
3642
}

0 commit comments

Comments
 (0)