package claims import ( "math" "net/http" "github.com/go-chi/jwtauth/v5" ) func UserId(r *http.Request) (uint32, bool) { _, claims, err := jwtauth.FromContext(r.Context()) if err != nil { return 0, false } rawUserId, ok := claims["user_id"] if !ok { return 0, false } userIdFloat, ok := rawUserId.(float64) if !ok { return 0, false } if userIdFloat < 0 || userIdFloat > math.MaxUint32 || userIdFloat != math.Trunc(userIdFloat) { return 0, false } return uint32(userIdFloat), true } func TokenVersion(r *http.Request) (uint32, bool) { _, claims, err := jwtauth.FromContext(r.Context()) if err != nil { return 0, false } rawTokenVersion, ok := claims["token_version"] if !ok { return 0, false } tokenVersionFloat, ok := rawTokenVersion.(float64) if !ok { return 0, false } return uint32(tokenVersionFloat), true }