forked from urnetwork/connect
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjwt.go
More file actions
45 lines (38 loc) · 989 Bytes
/
jwt.go
File metadata and controls
45 lines (38 loc) · 989 Bytes
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
package connect
import (
gojwt "github.com/golang-jwt/jwt/v5"
)
type ByJwt struct {
UserId Id
NetworkName string
NetworkId Id
ClientId Id
}
func ParseByJwtUnverified(byJwtStr string) (*ByJwt, error) {
parser := gojwt.NewParser()
token, _, err := parser.ParseUnverified(byJwtStr, gojwt.MapClaims{})
if err != nil {
return nil, err
}
claims := token.Claims.(gojwt.MapClaims)
byJwt := &ByJwt{}
if userIdStr, ok := claims["user_id"]; ok {
if userId, err := ParseId(userIdStr.(string)); err == nil {
byJwt.UserId = userId
}
}
if networkName, ok := claims["network_name"]; ok {
byJwt.NetworkName = networkName.(string)
}
if networkIdStr, ok := claims["network_name"]; ok {
if networkId, err := ParseId(networkIdStr.(string)); err == nil {
byJwt.NetworkId = networkId
}
}
if clientIdStr, ok := claims["client_id"]; ok {
if clientId, err := ParseId(clientIdStr.(string)); err == nil {
byJwt.ClientId = clientId
}
}
return byJwt, nil
}