generated from VLADIMIR/template
add jwt to login route
This commit is contained in:
@@ -5,8 +5,10 @@ import (
|
||||
"errors"
|
||||
"evening_detective_server/internal/modules/email_sender"
|
||||
"evening_detective_server/internal/modules/password_generator"
|
||||
"evening_detective_server/internal/modules/processor_jwt"
|
||||
"evening_detective_server/internal/repos/users_repo"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
)
|
||||
@@ -15,17 +17,20 @@ type UsersService struct {
|
||||
usersRepo *users_repo.UsersRepo
|
||||
passwordGenerator password_generator.IPasswordGenerator
|
||||
emailSender email_sender.IEmailSender
|
||||
processorJWT processor_jwt.IProcessorJWT
|
||||
}
|
||||
|
||||
func NewUsersService(
|
||||
usersRepo *users_repo.UsersRepo,
|
||||
passwordGenerator password_generator.IPasswordGenerator,
|
||||
emailSender email_sender.IEmailSender,
|
||||
processorJWT processor_jwt.IProcessorJWT,
|
||||
) *UsersService {
|
||||
return &UsersService{
|
||||
usersRepo: usersRepo,
|
||||
passwordGenerator: passwordGenerator,
|
||||
emailSender: emailSender,
|
||||
processorJWT: processorJWT,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,24 +102,36 @@ func (s *UsersService) Login(
|
||||
ctx context.Context,
|
||||
email string,
|
||||
password string,
|
||||
) error {
|
||||
) (string, string, error) {
|
||||
user, err := s.usersRepo.GetUserByEmail(
|
||||
ctx,
|
||||
email,
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
if err = bcrypt.CompareHashAndPassword([]byte(user.PasswordHash), []byte(password)); err != nil {
|
||||
return errors.New("Не верен email или пароль")
|
||||
return "", "", errors.New("Не верен email или пароль")
|
||||
}
|
||||
|
||||
fmt.Println(user, err)
|
||||
roles := strings.Split(user.Role, " ")
|
||||
accessToken, err := s.processorJWT.GenerateAccessToken(user.ID, user.Email, roles)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return "", "", errors.New("Не получилось получить доступ")
|
||||
}
|
||||
|
||||
// gen tokens (module)
|
||||
refreshToken, err := s.processorJWT.GenerateRefreshToken(user.ID)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return "", "", errors.New("Не получилось получить доступ")
|
||||
}
|
||||
|
||||
// save refresh token?
|
||||
fmt.Println(accessToken, refreshToken)
|
||||
|
||||
return nil // claims?
|
||||
// delete refresh tokens
|
||||
// save new refresh token
|
||||
|
||||
return accessToken, refreshToken, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user