-
Notifications
You must be signed in to change notification settings - Fork 0
/
jwt.go
54 lines (44 loc) · 1.07 KB
/
jwt.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package jwt
import (
"time"
jwt "github.com/dgrijalva/jwt-go"
"github.com/pkg/errors"
)
var key = []byte("senhaDeAlgumaCoisa")
// Claims ...
type Claims struct {
UserName string `json:"username"`
jwt.StandardClaims
}
// Generate ...ls
func Generate(user string) (string, error) {
expires := time.Now().Add(24 * time.Hour).Unix()
claims := &Claims{
UserName: user,
StandardClaims: jwt.StandardClaims{
ExpiresAt: expires,
Issuer: "user",
},
}
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
tokenString, err := token.SignedString(key)
if err != nil {
return "", errors.Wrap(err, "falha ao obter Token")
}
return tokenString, nil
}
// Refresh ...
func Refresh(tokenString, user string) (string, error) {
claims := &Claims{}
token, err := jwt.ParseWithClaims(tokenString, claims, func(j *jwt.Token) (interface{}, error) {
return key, nil
})
if token != nil || token.Valid != true {
return "", errors.Wrap(err, "Falha ao renovar token")
}
tokenString, err = Generate(user)
if err != nil {
return "", nil
}
return tokenString, nil
}