Added GetTokenFromAuthorizationHeader in AuthService

This commit is contained in:
PB
2025-10-22 13:41:44 +02:00
parent 07dbe290f1
commit e022d60b61

View File

@@ -4,6 +4,7 @@ import (
"context" "context"
"errors" "errors"
"fmt" "fmt"
"strings"
entity "git.ego.freeddns.org/egommerce/api-entities/identity/entity" entity "git.ego.freeddns.org/egommerce/api-entities/identity/entity"
domain "git.ego.freeddns.org/egommerce/identity-service/domain/repository" domain "git.ego.freeddns.org/egommerce/identity-service/domain/repository"
@@ -17,6 +18,7 @@ var (
ErrLoginIncorrect = errors.New("login incorrect") ErrLoginIncorrect = errors.New("login incorrect")
ErrUnableToCacheToken = errors.New("unable to save tokens in cache") ErrUnableToCacheToken = errors.New("unable to save tokens in cache")
ErrInvalidAccessToken = errors.New("invalid access token") ErrInvalidAccessToken = errors.New("invalid access token")
ErrParsingAccessToken = errors.New("error while parsing access token")
) )
func init() { func init() {
@@ -55,6 +57,12 @@ func (a *Auth) Login(login, passwd string) (string, error) {
return "", ErrUnableToCacheToken return "", ErrUnableToCacheToken
} }
// REFACTOR: save uid in cache under user:$ACCES_TOKEN key
res := a.cache.Set(context.Background(), "user:"+accessToken, user.ID, accessTokenExpireTime)
if err := res.Err(); err != nil {
fmt.Println("failed to save user:$ACCESS_TOKEN in cache: ", err.Error())
}
return accessToken, nil return accessToken, nil
} }
@@ -64,22 +72,29 @@ func (a *Auth) RefreshToken(accessToken string) (string, error) {
return "", ErrInvalidAccessToken return "", ErrInvalidAccessToken
} }
id := claims["sub"] userID := claims["sub"]
newAccessToken, _ := jwtSrv.CreateAccessToken(id.(string)) newAccessToken, _ := jwtSrv.CreateAccessToken(userID.(string))
newRefreshToken, _ := jwtSrv.CreateRefreshToken(id.(string)) newRefreshToken, _ := jwtSrv.CreateRefreshToken(userID.(string))
if err = a.saveTokensToCache(id.(string), newAccessToken, newRefreshToken); err != nil { if err = a.saveTokensToCache(userID.(string), newAccessToken, newRefreshToken); err != nil {
return "", ErrUnableToCacheToken return "", ErrUnableToCacheToken
} }
// REFACTOR
del := a.cache.Del(context.Background(), "user:"+accessToken)
if err := del.Err(); err != nil {
fmt.Println("failed to invalidate user:$ACCESS_TOKEN from cache: ", err.Error())
}
// REFACTOR: save uid in cache under user:$ACCES_TOKEN key
res := a.cache.Set(context.Background(), "user:"+newAccessToken, userID, accessTokenExpireTime)
if err := res.Err(); err != nil {
fmt.Println("failed to save user:$ACCESS_TOKEN in cache: ", err.Error())
}
return newAccessToken, nil return newAccessToken, nil
} }
func (a *Auth) VerifyToken(token string) (string, error) {
return token, nil
}
func (a *Auth) Register(email, login, passwd string) (string, error) { func (a *Auth) Register(email, login, passwd string) (string, error) {
passwd, _ = passSrv.Hash(passwd) passwd, _ = passSrv.Hash(passwd)
@@ -95,15 +110,39 @@ func (a *Auth) Register(email, login, passwd string) (string, error) {
return id, nil return id, nil
} }
func (a *Auth) saveTokensToCache(id, accessToken, refreshToken string) error { func (a *Auth) GetTokenFromAuthorizationHeader(header string) (string, error) {
res := a.cache.Set(context.Background(), "auth:access_token:"+id, accessToken, accessTokenExpireTime) split := strings.Split(header, " ")
if err := res.Err(); err != nil { if len(split) != 2 {
fmt.Println("failed to save access token in cache: ", err.Error()) return "", ErrParsingAccessToken
} }
res = a.cache.Set(context.Background(), "auth:refresh_token:"+id, refreshToken, refreshTokenExpireTime) return split[1], nil
}
func (a *Auth) GetUIDByAccesssToken(aToken string) (string, error) {
res := a.cache.Get(context.Background(), "user:"+aToken)
if err := res.Err(); err != nil {
return "", err
}
uid, _ := res.Result()
return uid, nil
}
func (a *Auth) saveTokensToCache(id, aToken, rToken string) error {
res := a.cache.Set(context.Background(), "auth:access_token:"+id, aToken, accessTokenExpireTime)
if err := res.Err(); err != nil {
fmt.Println("failed to save access token in cache: ", err.Error())
return err
}
res = a.cache.Set(context.Background(), "auth:refresh_token:"+id, rToken, refreshTokenExpireTime)
if err := res.Err(); err != nil { if err := res.Err(); err != nil {
fmt.Println("failed to save refresh token in cache: ", err.Error()) fmt.Println("failed to save refresh token in cache: ", err.Error())
return err
} }
return nil return nil