go get github.com/fgrzl/claimsimport (
"time"
"github.com/fgrzl/claims"
"github.com/fgrzl/claims/jwtkit"
)
cs := claims.NewClaimsSet("user123").
SetIssuer("myapp").
SetEmail("user@example.com").
SetRoles("admin", "user").
Set("department", "engineering")
principal := claims.NewPrincipal(cs)Set custom claims on ClaimSet before NewPrincipal — the principal holds a copy; mutating cs afterward does not change the principal.
secret := []byte(os.Getenv("JWT_SECRET"))
signer := &jwtkit.HMAC256Signer{Secret: secret}
token, err := signer.CreateToken(principal, time.Hour)validator := &jwtkit.HMAC256Validator{Secret: secret}
validated, err := validator.Validate(token)
if err != nil {
return err
}
_ = validated.Subject()dept := principal.CustomClaimValue("department")- API reference
- JWT integration — RSA, key files, error handling