mirror of
https://github.com/getAlby/lndhub.go.git
synced 2025-12-20 14:14:47 +01:00
50 lines
1.0 KiB
Go
50 lines
1.0 KiB
Go
package tokens
|
|
|
|
import (
|
|
"database/sql"
|
|
|
|
"github.com/bumi/lndhub.go/database/models"
|
|
"github.com/dgrijalva/jwt-go"
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
type jwtCustomClaims struct {
|
|
ID uint `json:"id"`
|
|
Email string `json:"email"`
|
|
Login string `json:"login"`
|
|
|
|
jwt.StandardClaims
|
|
}
|
|
|
|
// GenerateAccessToken : Generate Access Token
|
|
func GenerateAccessToken(c echo.Context, u *models.User) error {
|
|
token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
|
|
"id": u.ID,
|
|
"email": u.Email,
|
|
"login": u.Login,
|
|
})
|
|
|
|
t, err := token.SignedString([]byte("secret"))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
u.AccessToken = sql.NullString{String: t, Valid: true}
|
|
|
|
return err
|
|
}
|
|
|
|
func GenerateRefreshToken(c echo.Context, u *models.User) error {
|
|
refreshToken := jwt.New(jwt.SigningMethodHS256)
|
|
rtClaims := refreshToken.Claims.(jwt.MapClaims)
|
|
rtClaims["id"] = u.ID
|
|
|
|
rt, err := refreshToken.SignedString([]byte("secret"))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
u.RefreshToken = sql.NullString{String: rt, Valid: true}
|
|
|
|
return err
|
|
}
|