Added GetTokenFromAuthorizationHeader in AuthService
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user