generated from VLADIMIR/template
update refresh
This commit is contained in:
@@ -9,7 +9,7 @@ import (
|
||||
"evening_detective_server/internal/repos/refresh_tokens_repo"
|
||||
"evening_detective_server/internal/repos/users_repo"
|
||||
"fmt"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
)
|
||||
@@ -56,7 +56,7 @@ func (s *UsersService) AddUser(
|
||||
username,
|
||||
email,
|
||||
string(hashedPassword),
|
||||
"user",
|
||||
[]string{"user"},
|
||||
)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -119,26 +119,67 @@ func (s *UsersService) Login(
|
||||
return "", "", errors.New("Не верен email или пароль")
|
||||
}
|
||||
|
||||
roles := strings.Split(user.Role, " ")
|
||||
accessToken, err := s.processorJWT.GenerateAccessToken(user.ID, user.Email, roles)
|
||||
accessToken, err := s.processorJWT.GenerateAccessToken(user.ID, user.Email, user.Roles)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return "", "", errors.New("Не получилось получить доступ")
|
||||
}
|
||||
|
||||
refreshToken, err := s.processorJWT.GenerateRefreshToken(user.ID)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
return "", "", errors.New("Не получилось получить доступ")
|
||||
}
|
||||
refreshTokenClaims, err := s.processorJWT.GetClaims(refreshToken)
|
||||
if err != nil {
|
||||
return "", "", errors.New("Не получилось получить доступ")
|
||||
}
|
||||
|
||||
fmt.Println(accessToken, refreshToken)
|
||||
|
||||
if err := s.refreshTokensRepo.DeleteRefreshTokensByUserId(ctx, user.ID); err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
if err := s.refreshTokensRepo.AddRefreshToken(ctx, user.ID, refreshToken); err != nil {
|
||||
if err := s.refreshTokensRepo.AddRefreshToken(ctx, user.ID, refreshTokenClaims.ExpiresAt.Time, refreshTokenClaims.ID); err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
return accessToken, refreshToken, nil
|
||||
}
|
||||
|
||||
func (s *UsersService) Refresh(
|
||||
ctx context.Context,
|
||||
token string,
|
||||
) (string, string, error) {
|
||||
claims, err := s.processorJWT.GetClaims(token)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
ok, err := s.refreshTokensRepo.ExistsRefreshToken(ctx, claims.UserID, claims.ID, time.Now())
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
if !ok {
|
||||
return "", "", errors.New("Пользователь не найден")
|
||||
}
|
||||
if err := s.refreshTokensRepo.DeleteRefreshTokenByJti(ctx, claims.ID); err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
user, err := s.usersRepo.GetUserByID(ctx, claims.UserID)
|
||||
if err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
accessToken, err := s.processorJWT.GenerateAccessToken(user.ID, user.Email, user.Roles)
|
||||
if err != nil {
|
||||
return "", "", errors.New("Не получилось получить доступ")
|
||||
}
|
||||
|
||||
refreshToken, err := s.processorJWT.GenerateRefreshToken(user.ID)
|
||||
if err != nil {
|
||||
return "", "", errors.New("Не получилось получить доступ")
|
||||
}
|
||||
refreshTokenClaims, err := s.processorJWT.GetClaims(refreshToken)
|
||||
if err != nil {
|
||||
return "", "", errors.New("Не получилось получить доступ")
|
||||
}
|
||||
|
||||
if err := s.refreshTokensRepo.AddRefreshToken(ctx, user.ID, refreshTokenClaims.ExpiresAt.Time, refreshTokenClaims.ID); err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user