39 lines
626 B
Go
39 lines
626 B
Go
package jwt
|
|
|
|
import (
|
|
"os"
|
|
"slices"
|
|
"strings"
|
|
|
|
"github.com/golang-jwt/jwt/v5"
|
|
)
|
|
|
|
type Claims struct {
|
|
*jwt.RegisteredClaims
|
|
|
|
UserID uint64 `json:"userId"`
|
|
}
|
|
|
|
func NewClaims() *Claims {
|
|
c := &Claims{
|
|
RegisteredClaims: &jwt.RegisteredClaims{},
|
|
}
|
|
|
|
var (
|
|
trustedHosts = os.Getenv("JWT_TRUSTED_HOSTS")
|
|
audienceList []string
|
|
)
|
|
|
|
c.Issuer = os.Getenv("APP_HOST")
|
|
|
|
audienceList = append(audienceList, strings.Split(trustedHosts, ",")...)
|
|
audienceList = append(audienceList, c.Issuer)
|
|
audienceList = slices.DeleteFunc(audienceList, func(s string) bool {
|
|
return s == ""
|
|
})
|
|
|
|
c.Audience = audienceList
|
|
|
|
return c
|
|
}
|