@@ -10,38 +10,42 @@ import (
1010
1111func (us * usecase ) Login (ctx context.Context , userReq domain.Login ) (user domain.User , token string , err error ) {
1212 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 )
13+ user , err = us .userRepo .FindByEmail (ctx , userReq .Email )
14+ if err != nil {
15+ logrus .Error ("us.LoginUser: failed to login" , err )
1516 return err
1617 }
18+
19+ if err = bcrypt .CompareHashAndPassword ([]byte (user .Password ), []byte (userReq .Password )); err != nil {
20+ logrus .Error ("us.Login: invalid password" )
21+ return err
22+ }
23+
24+
25+ tokenPtr , expiredTime , err := us .jwt .GenerateAccessToken (ctx , & user , 60 )
26+ token = * tokenPtr
1727
18- user , err = us .userRepo .FindByEmail (ctx , userReq .Email )
1928 if err != nil {
20- logrus .Error ("us.LoginUser : failed to login" , err )
29+ logrus .Error ("us.Login : failed to login. " , err )
2130 return err
2231 }
23- return nil
24- })
25- if err != nil {
26- logrus .Error ("us.Login: failed to login. " , err )
27- return
28- }
2932
30- if err = bcrypt .CompareHashAndPassword ([]byte (user .Password ), []byte (userReq .Password )); err != nil {
31- logrus .Error ("us.Login: invalid password" )
32- return
33- }
33+ if err = us .userRepo .UnactivateTokenByUser (ctx , user .ID ); err != nil {
34+ logrus .Error ("us.Login: failed to login. " , err )
35+ return err
36+ }
37+ if err = us .userRepo .StoreToken (ctx , token , expiredTime , user .ID ); err != nil {
38+ logrus .Error ("us.Login: failed to login. " , err )
39+ return err
40+ }
3441
35- if err != nil {
36- logrus .Error ("us.Login: failed to login. " , err )
37- return
38- }
42+ return nil
43+ })
3944
40- signToken , err := us .jwt .GenerateAccessToken (ctx , & user , 60 )
4145 if err != nil {
4246 logrus .Error ("us.Login: failed to login. " , err )
4347 return
4448 }
4549
46- return user , * signToken , nil
50+ return user , token , nil
4751}
0 commit comments