@@ -5,64 +5,82 @@ import (
55 "strconv"
66
77 "github.com/hammer-code/lms-be/domain"
8+ "github.com/hammer-code/lms-be/pkg/ngelog"
89 "github.com/hammer-code/lms-be/utils"
910)
1011
1112func (m * Middleware ) AuthMiddleware (allowedRole string ) domain.MiddlewareFunc {
1213 return func (next http.Handler ) http.Handler {
1314 return http .HandlerFunc (func (writer http.ResponseWriter , request * http.Request ) {
15+ ctx , span := tracer .Start (request .Context (), "auth middleware" )
16+ defer span .End ()
17+
1418 token := utils .ExtractBearerToken (request )
1519 if len (* token ) < 5 {
20+ ngelog .Error (ctx , "failed to extract bearer token" , nil )
1621 utils .Response (domain.HttpResponse {
1722 Code : 401 ,
1823 Message : "Unauthorized" ,
1924 Data : nil ,
2025 }, writer )
2126 return
2227 }
23-
28+
2429 verifyToken , err := m .Jwt .VerifyToken (* token )
2530 if err != nil {
31+ ngelog .Error (ctx , "failed to verify token" , err )
2632 utils .Response (domain.HttpResponse {
2733 Code : 500 ,
2834 Message : "failed to verify token" ,
2935 Data : nil ,
3036 }, writer )
3137 return
3238 }
33-
34- // tokenLogoutErr := m.UserRepo.ExpiredToken(request.Context(), *token)
35- // if tokenLogoutErr == nil {
36- // utils.Response(domain.HttpResponse{
37- // Code: 401,
38- // Message: "Token expired",
39- // Data: nil,
40- // }, writer)
41- // return
42- // }
43-
39+
40+ logoutToken , err := m .UserRepo .GetToken (request .Context (), * token )
41+ if err != nil {
42+ ngelog .Error (ctx , "failed to get token" , err )
43+ utils .Response (domain.HttpResponse {
44+ Code : 401 ,
45+ Message : "Unauthorized" ,
46+ Data : nil ,
47+ }, writer )
48+ return
49+ }
50+ if logoutToken .Status == 0 {
51+ ngelog .Error (ctx , "unauthorized" , nil )
52+ utils .Response (domain.HttpResponse {
53+ Code : 401 ,
54+ Message : "Unauthorized" ,
55+ Data : nil ,
56+ }, writer )
57+ return
58+ }
59+
4460 user , err := m .UserRepo .FindByEmail (request .Context (), verifyToken .Email )
4561 if err != nil {
62+ ngelog .Error (ctx , "failed to find by email" , err )
4663 utils .Response (domain.HttpResponse {
4764 Code : 401 ,
4865 Message : "Unauthorized" ,
4966 Data : nil ,
5067 }, writer )
5168 return
5269 }
53-
70+
5471 if user .Role != allowedRole {
72+ ngelog .Error (ctx , "role is not the role" , nil )
5573 utils .Response (domain.HttpResponse {
5674 Code : 401 ,
5775 Message : "Unauthorized" ,
5876 Data : nil ,
5977 }, writer )
6078 return
6179 }
62-
80+
6381 writer .Header ().Set ("x-user-id" , strconv .Itoa (user .ID ))
6482 writer .Header ().Set ("x-username" , user .Username )
65-
83+
6684 next .ServeHTTP (writer , request )
6785 })
6886 }
0 commit comments