diff --git a/backend/internal/interface/rest/presenters/auth.go b/backend/internal/interface/rest/presenters/auth.go index 2a64f91..36f3e25 100644 --- a/backend/internal/interface/rest/presenters/auth.go +++ b/backend/internal/interface/rest/presenters/auth.go @@ -29,7 +29,7 @@ func NewAuthPresenter( } func (p *authPresenter) ResponseJoin(user *models.User) ([]byte, error) { - tokens, err := p.jwtInteractor.NewToken(user, 24*time.Hour) + tokens, err := p.jwtInteractor.NewToken(user, 24*time.Hour, "") if err != nil { return nil, fmt.Errorf("error create access token. %w", err) } @@ -48,7 +48,7 @@ func (p *authPresenter) ResponseJoin(user *models.User) ([]byte, error) { } func (p *authPresenter) ResponseLogin(user *models.User) ([]byte, error) { - tokens, err := p.jwtInteractor.NewToken(user, 24*time.Hour) + tokens, err := p.jwtInteractor.NewToken(user, 24*time.Hour, "") if err != nil { return nil, fmt.Errorf("error create access token. %w", err) } diff --git a/backend/internal/usecase/interactors/jwt/jwt.go b/backend/internal/usecase/interactors/jwt/jwt.go index 569dca3..bf4207b 100644 --- a/backend/internal/usecase/interactors/jwt/jwt.go +++ b/backend/internal/usecase/interactors/jwt/jwt.go @@ -21,7 +21,7 @@ var ( ) type JWTInteractor interface { - NewToken(user models.UserIdentity, duration time.Duration) (AccessToken, error) + NewToken(user models.UserIdentity, duration time.Duration, remoteAddr string) (AccessToken, error) User(token string) (*models.User, error) RefreshToken(ctx context.Context, token string, rToken string) (AccessToken, error) } @@ -53,7 +53,7 @@ type AccessToken struct { } // NewToken creates new JWT token for given user -func (w *jwtInteractor) NewToken(user models.UserIdentity, duration time.Duration) (AccessToken, error) { +func (w *jwtInteractor) NewToken(user models.UserIdentity, duration time.Duration, remoteAddr string) (AccessToken, error) { tokens, err := w.newTokens(user.Id(), duration) if err != nil { return AccessToken{}, fmt.Errorf("error create new tokens. %w", err) diff --git a/backend/internal/usecase/repository/auth/repository.go b/backend/internal/usecase/repository/auth/repository.go index c5ebe6d..c3aa9c0 100644 --- a/backend/internal/usecase/repository/auth/repository.go +++ b/backend/internal/usecase/repository/auth/repository.go @@ -22,6 +22,8 @@ type AddTokenParams struct { RefreshTokenExpiredAt time.Time CreatedAt time.Time + + RemoteAddr string } type GetTokenParams struct { @@ -73,6 +75,7 @@ func (r *repositorySQL) AddToken(ctx context.Context, params AddTokenParams) err "refresh_token", "token_expired_at", "refresh_token_expired_at", + "remote_addr", ). Values( params.UserId, @@ -80,6 +83,7 @@ func (r *repositorySQL) AddToken(ctx context.Context, params AddTokenParams) err params.RefreshToken, params.TokenExpiredAt, params.RefreshTokenExpiredAt, + params.RemoteAddr, ).PlaceholderFormat(sq.Dollar) if _, err := query.RunWith(r.Conn(ctx)).ExecContext(ctx); err != nil {