Files
lndhub.go/database/models/user.go
2022-01-07 11:00:33 +01:00

48 lines
969 B
Go

package models
import (
"github.com/dgrijalva/jwt-go"
"github.com/labstack/echo/v4"
"time"
)
// User : User Model
type User struct {
ID uint `gorm:"primary_key"`
Email string
Login string
Password string
RefreshToken string
AccessToken string
UpdatedAt time.Time
CreatedAt time.Time
}
// GenerateAccessToken : Generate Access Token
func (u *User) GenerateAccessToken(c echo.Context) error {
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
"sub": u.ID,
"email": u.Email,
})
t, err := token.SignedString([]byte("secret"))
if err != nil {
return err
}
u.AccessToken = t
return err
}
func (u *User) GenerateRefreshToken(c echo.Context) error {
refreshToken := jwt.New(jwt.SigningMethodHS256)
rtClaims := refreshToken.Claims.(jwt.MapClaims)
rtClaims["sub"] = u.ID
rt, err := refreshToken.SignedString([]byte("secret"))
if err != nil {
return err
}
u.RefreshToken = rt
return err
}