Skip to content

Commit 8dcc950

Browse files
committed
feat: implement token cleanup on user login and enhance error handling
1 parent 6ea4cc5 commit 8dcc950

7 files changed

Lines changed: 32 additions & 39 deletions

File tree

app/middlewares/auth_middleware.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,6 @@ func (m *Middleware) AuthMiddleware(next http.Handler) http.Handler {
3030
return
3131
}
3232

33-
// tokenLogoutErr := m.UserRepo.ExpiredToken(request.Context(), *token)
34-
// if tokenLogoutErr == nil {
35-
// utils.Response(domain.HttpResponse{
36-
// Code: 401,
37-
// Message: "Token expired",
38-
// Data: nil,
39-
// }, writer)
40-
// return
41-
// }
42-
4333
user, err := m.UserRepo.FindByEmail(request.Context(), verifyToken.Email)
4434
if err != nil {
4535
utils.Response(domain.HttpResponse{

app/users/delivery/http/logout_users.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,8 @@ func (h Handler) Logout(w http.ResponseWriter, r *http.Request) {
2222

2323
err := h.usecase.Logout(r.Context(), *token)
2424
if err != nil {
25-
utils.Response(domain.HttpResponse{
26-
Code: 500,
27-
Message: err.Error(),
28-
Data: nil,
29-
}, w)
25+
resp := utils.CostumErr(err.Error())
26+
utils.Response(resp, w)
3027
return
3128
}
3229

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package repository
2+
3+
import (
4+
"context"
5+
"time"
6+
7+
"github.com/hammer-code/lms-be/domain"
8+
)
9+
10+
func (repo *repository) CleanupLogoutToken(ctx context.Context) error {
11+
token := &domain.LogoutToken{}
12+
if err := repo.db.DB(ctx).Delete(token, "expired_at < ?", time.Now()).Error; err != nil {
13+
return err
14+
}
15+
16+
return nil
17+
}

app/users/repository/expired_token.go

Lines changed: 0 additions & 22 deletions
This file was deleted.

app/users/usecase/login_users.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,19 @@ package usecase
22

33
import (
44
"context"
5+
56
"github.com/hammer-code/lms-be/domain"
67
"github.com/sirupsen/logrus"
78
"golang.org/x/crypto/bcrypt"
89
)
910

1011
func (us *usecase) Login(ctx context.Context, userReq domain.Login) (user domain.User, token string, err error) {
1112
err = us.dbTX.StartTransaction(ctx, func(txCtx context.Context) error {
13+
if err = us.userRepo.CleanupLogoutToken(ctx); err != nil {
14+
logrus.Error("us.LoginUser: failed to cleanup token", err)
15+
return err
16+
}
17+
1218
user, err = us.userRepo.FindByEmail(ctx, userReq.Email)
1319
if err != nil {
1420
logrus.Error("us.LoginUser: failed to login", err)

domain/user.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ type (
1515
UpdateProfileUser(ctx context.Context, userReq UserUpdateProfile, id int) error
1616
DeleteUser(ctx context.Context, id int8) error
1717
LogoutUser(ctx context.Context, token string, expiredAt time.Time) error
18-
ExpiredToken(ctx context.Context, token string) error
18+
CleanupLogoutToken(ctx context.Context) error
1919
GetUsersGenericConditions(ctx context.Context, filter GetUserBy) (users []User, err error)
2020
}
2121
UserUsecase interface {

utils/costum_error.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@ func CheckError(err, sub, message string, code int) (domain.HttpResponse, bool)
1919

2020
func CostumErr(err string) domain.HttpResponse {
2121

22-
resp, ok := CheckError(err, "duplicate", "User already exist", 400)
22+
resp, ok := CheckError(err, "\"uni_users_email\" (SQLSTATE 23505)", "User already exist", 400)
23+
if ok {
24+
return resp
25+
}
26+
27+
resp, ok = CheckError(err, "\"uni_logout_token\" (SQLSTATE 23505)", "You have already logged out.", 400)
2328
if ok {
2429
return resp
2530
}

0 commit comments

Comments
 (0)