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  }