@@ -2,6 +2,7 @@ package usecase
22
33import (
44 "context"
5+
56 "github.com/hammer-code/lms-be/domain"
67 "github.com/sirupsen/logrus"
78 "golang.org/x/crypto/bcrypt"
@@ -14,24 +15,37 @@ func (us *usecase) Login(ctx context.Context, userReq domain.Login) (user domain
1415 logrus .Error ("us.LoginUser: failed to login" , err )
1516 return err
1617 }
17- return nil
18- })
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
27+
28+ if err != nil {
29+ logrus .Error ("us.Login: failed to login. " , err )
30+ return err
31+ }
1932
20- if err = bcrypt .CompareHashAndPassword ([]byte (user .Password ), []byte (userReq .Password )); err != nil {
21- logrus .Error ("us.Login: invalid password" )
22- return
23- }
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+ }
2441
25- if err != nil {
26- logrus .Error ("us.Login: failed to login. " , err )
27- return
28- }
42+ return nil
43+ })
2944
30- signToken , err := us .jwt .GenerateAccessToken (ctx , & user , 60 )
3145 if err != nil {
3246 logrus .Error ("us.Login: failed to login. " , err )
3347 return
3448 }
3549
36- return user , * signToken , nil
50+ return user , token , nil
3751}
0 commit comments