github.com/mundipagg/boleto-api@v0.0.0-20230620145841-3f9ec742599f/infrastructure/token/jwt.go (about) 1 package token 2 3 import ( 4 "encoding/json" 5 6 jwt "github.com/dgrijalva/jwt-go" 7 ) 8 9 type JwtGenerator interface { 10 Sign(payload interface{}, privateKey []byte) (string, error) 11 } 12 13 func GetJwtGenerator(alg string) JwtGenerator { 14 switch alg { 15 case "RS256": 16 return NewRS256() 17 default: 18 return NewRS256() 19 } 20 } 21 22 func createClaims(payload interface{}) jwt.MapClaims { 23 claimsMap := make(jwt.MapClaims) 24 switch p := payload.(type) { 25 case string: 26 err := json.Unmarshal([]byte(p), &claimsMap) 27 if err != nil { 28 panic(err) 29 } 30 dump(claimsMap) 31 32 case map[string]interface{}: 33 for k, v := range p { 34 claimsMap[k] = v 35 } 36 } 37 return claimsMap 38 } 39 40 func dump(m map[string]interface{}) { 41 for _, v := range m { 42 if mv, ok := v.(map[string]interface{}); ok { 43 dump(mv) 44 } 45 } 46 }