diff --git a/internal/interfaces/utils.go b/internal/interfaces/utils.go index d1b8f7c..d8ccf07 100644 --- a/internal/interfaces/utils.go +++ b/internal/interfaces/utils.go @@ -5,7 +5,7 @@ import "github.com/gin-gonic/gin" type Utils interface { IsEmail(email string) bool GetUserUuidFromContext(c *gin.Context) (string, error) - GetUserAndTokenUuidFromContext(c *gin.Context) (string, string, error) + GetAllTokensFromContext(c *gin.Context) (string, string, string, error) HashPassword(password string) (string, error) ComparePasswords(hashedPassword string, plainPassword string) error } diff --git a/pkg/utils/userUuid.go b/pkg/utils/userUuid.go index 1f1c867..16b7ea3 100644 --- a/pkg/utils/userUuid.go +++ b/pkg/utils/userUuid.go @@ -28,42 +28,58 @@ func (u *Utils) GetUserUuidFromContext(c *gin.Context) (string, error) { return userUuid.String(), nil } -func (u *Utils) GetUserAndTokenUuidFromContext(c *gin.Context) (string, string, error) { +func (u *Utils) GetAllTokensFromContext(c *gin.Context) (string, string, string, error) { if c == nil { - return "", "", errors.New("context is nil") + return "", "", "", errors.New("context is nil") } //get user uuid userRaw, exists := c.Get("userUuid") if !exists { - return "", "", errors.New("user uuid not found in context") + return "", "", "", errors.New("user uuid not found in context") } userUuidStr, ok := userRaw.(string) if !ok { - return "", "", errors.New("user uuid is not a string") + return "", "", "", errors.New("user uuid is not a string") } userUuid, err := uuid.Parse(userUuidStr) if err != nil { - return "", "", errors.New("error parsing user uuid") + return "", "", "", errors.New("error parsing user uuid") } //get refresh token uuid refreshRaw, exists := c.Get("refreshUuid") if !exists { - return "", "", errors.New("user uuid not found in context") + return "", "", "", errors.New("refresh uuid not found in context") } refreshUuidStr, ok := refreshRaw.(string) if !ok { - return "", "", errors.New("user uuid is not a string") + return "", "", "", errors.New("refresh uuid is not a string") } refreshUuid, err := uuid.Parse(refreshUuidStr) if err != nil { - return "", "", errors.New("error parsing user uuid") + return "", "", "", errors.New("error parsing refresh uuid") } - return userUuid.String(), refreshUuid.String(), nil + //get session token uuid + sessionRaw, exists := c.Get("sessionUuid") + if !exists { + return "", "", "", errors.New("session uuid not found in context") + } + + sessionUuidStr, ok := sessionRaw.(string) + if !ok { + return "", "", "", errors.New("session uuid is not a string") + } + + sessionUuid, err := uuid.Parse(sessionUuidStr) + if err != nil { + return "", "", "", errors.New("error parsing session uuid") + } + + return userUuid.String(), refreshUuid.String(), sessionUuid.String(), nil }