save refresh token in login route

This commit is contained in:
2026-07-05 02:57:56 +07:00
parent 19dfc4e911
commit e4007eb15a
5 changed files with 73 additions and 3 deletions
@@ -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
}
+11 -2
View File
@@ -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
}