add jwt to login route

This commit is contained in:
2026-07-04 13:09:39 +07:00
parent 4e5d5bd09e
commit 19dfc4e911
5 changed files with 36 additions and 14 deletions
+24 -7
View File
@@ -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
}