51 lines
862 B
Go
51 lines
862 B
Go
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
|
|
}
|