53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package encrypt
|
|
|
|
import (
|
|
"github.com/robbert229/jwt"
|
|
)
|
|
|
|
func JwtEncrypterMaker(secret string) TokenEncrypter {
|
|
return &JwtEncrypter{
|
|
alg: jwt.HmacSha256(secret),
|
|
claims: jwt.NewClaim(),
|
|
}
|
|
}
|
|
|
|
type JwtEncrypter struct {
|
|
alg jwt.Algorithm
|
|
claims *jwt.Claims
|
|
}
|
|
|
|
func (encrypter *JwtEncrypter) Add(key string, value string) bool {
|
|
encrypter.claims.Set(key, value)
|
|
return true
|
|
}
|
|
|
|
func (encrypter *JwtEncrypter) FromStr(token string) bool {
|
|
claims, err := encrypter.alg.Decode(token)
|
|
// TODO: should return error or error info will lost
|
|
if err != nil {
|
|
return false
|
|
}
|
|
|
|
encrypter.claims = claims
|
|
return true
|
|
}
|
|
|
|
func (encrypter *JwtEncrypter) Get(key string) (string, bool) {
|
|
iValue, err := encrypter.claims.Get(key)
|
|
// TODO: should return error or error info will lost
|
|
if err != nil {
|
|
return "", false
|
|
}
|
|
|
|
return iValue.(string), true
|
|
}
|
|
|
|
func (encrypter *JwtEncrypter) ToStr() (string, bool) {
|
|
token, err := encrypter.alg.Encode(encrypter.claims)
|
|
|
|
// TODO: should return error or error info will lost
|
|
if err != nil {
|
|
return "", false
|
|
}
|
|
return token, true
|
|
}
|