mirror of
https://github.com/wisplite/raster.git
synced 2026-05-01 14:42:44 -05:00
38 lines
956 B
Go
38 lines
956 B
Go
package services
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/wisplite/raster/internal/db"
|
|
"github.com/wisplite/raster/internal/models"
|
|
)
|
|
|
|
func CreateAccessToken(userID string) (models.AccessToken, error) {
|
|
token := uuid.New().String()
|
|
expires := time.Now().Add(time.Hour * 24 * 30)
|
|
accessToken := models.AccessToken{
|
|
Token: token,
|
|
UserID: userID,
|
|
Expires: expires,
|
|
}
|
|
result := db.GetDB().Create(&accessToken)
|
|
if result.Error != nil {
|
|
return models.AccessToken{}, result.Error
|
|
}
|
|
return accessToken, nil
|
|
}
|
|
|
|
func ValidateAccessToken(accessToken string) (string, error) {
|
|
accessTokenModel := models.AccessToken{}
|
|
result := db.GetDB().First(&accessTokenModel, "token = ?", accessToken)
|
|
if result.Error != nil {
|
|
return "", result.Error
|
|
}
|
|
if accessTokenModel.Expires.Before(time.Now()) {
|
|
return "", fmt.Errorf("access token expired")
|
|
}
|
|
return accessTokenModel.UserID, nil
|
|
}
|