generated from VLADIMIR/template
save refresh token in login route
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
package refresh_tokens_repo
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/jackc/pgx/v5/pgxpool"
|
||||
)
|
||||
|
||||
type RefreshTokensRepo struct {
|
||||
pool *pgxpool.Pool
|
||||
}
|
||||
|
||||
func NewRefreshTokensRepo(pool *pgxpool.Pool) *RefreshTokensRepo {
|
||||
return &RefreshTokensRepo{
|
||||
pool: pool,
|
||||
}
|
||||
}
|
||||
|
||||
func (s *RefreshTokensRepo) AddRefreshToken(
|
||||
ctx context.Context,
|
||||
userId int,
|
||||
refreshToken string,
|
||||
) error {
|
||||
_, err := s.pool.Exec(
|
||||
ctx,
|
||||
`INSERT INTO refresh_tokens (user_id, refresh_token) VALUES ($1, $2)`,
|
||||
userId,
|
||||
refreshToken,
|
||||
)
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *RefreshTokensRepo) DeleteRefreshTokensByUserId(
|
||||
ctx context.Context,
|
||||
userId int,
|
||||
) error {
|
||||
_, err := s.pool.Exec(
|
||||
ctx,
|
||||
`DELETE FROM refresh_tokens WHERE user_id = $1`,
|
||||
userId,
|
||||
)
|
||||
return err
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import (
|
||||
"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/refresh_tokens_repo"
|
||||
"evening_detective_server/internal/repos/users_repo"
|
||||
"fmt"
|
||||
"strings"
|
||||
@@ -18,6 +19,7 @@ type UsersService struct {
|
||||
passwordGenerator password_generator.IPasswordGenerator
|
||||
emailSender email_sender.IEmailSender
|
||||
processorJWT processor_jwt.IProcessorJWT
|
||||
refreshTokensRepo *refresh_tokens_repo.RefreshTokensRepo
|
||||
}
|
||||
|
||||
func NewUsersService(
|
||||
@@ -25,12 +27,14 @@ func NewUsersService(
|
||||
passwordGenerator password_generator.IPasswordGenerator,
|
||||
emailSender email_sender.IEmailSender,
|
||||
processorJWT processor_jwt.IProcessorJWT,
|
||||
refreshTokensRepo *refresh_tokens_repo.RefreshTokensRepo,
|
||||
) *UsersService {
|
||||
return &UsersService{
|
||||
usersRepo: usersRepo,
|
||||
passwordGenerator: passwordGenerator,
|
||||
emailSender: emailSender,
|
||||
processorJWT: processorJWT,
|
||||
refreshTokensRepo: refreshTokensRepo,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,8 +134,13 @@ func (s *UsersService) Login(
|
||||
|
||||
fmt.Println(accessToken, refreshToken)
|
||||
|
||||
// delete refresh tokens
|
||||
// save new refresh token
|
||||
if err := s.refreshTokensRepo.DeleteRefreshTokensByUserId(ctx, user.ID); err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
if err := s.refreshTokensRepo.AddRefreshToken(ctx, user.ID, refreshToken); err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
return accessToken, refreshToken, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user