Mercurial > gemma
view auth/token.go @ 143:abfac07bd82a vue-gettext
closing branch vue-gettext
author | Thomas Junk <thomas.junk@intevation.de> |
---|---|
date | Mon, 02 Jul 2018 09:37:53 +0200 |
parents | bb9120d28950 |
children | 0c56c56a1c44 |
line wrap: on
line source
package auth import ( "time" "gemma.intevation.de/gemma/config" jwt "github.com/dgrijalva/jwt-go" ) type Claims struct { jwt.StandardClaims User string `json:"user"` Roles []string `json:"roles"` } const maxTokenValid = time.Hour * 3 func NewToken(user string, roles []string) (string, error) { // Create the Claims claims := &Claims{ StandardClaims: jwt.StandardClaims{ ExpiresAt: jwt.TimeFunc().Add(maxTokenValid).Unix(), }, User: user, Roles: roles, } token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims) return token.SignedString(config.Config.JWTSignKey) } func TokenToClaims(token string) (*Claims, error) { claims := &Claims{} _, err := jwt.ParseWithClaims(token, claims, func(*jwt.Token) (interface{}, error) { return config.Config.JWTSignKey, nil }) return claims, err } func GenerateToken(user, password string) (string, error) { roles, err := AllOtherRoles(user, password) if err != nil { return "", err } token, err := NewToken(user, roles) if err != nil { return "", err } ConnPool.Add(token, user, password) return token, nil }