La solución que hace casi al final de la clase, la de modificar el fichero auth.go y enviar una referencia al models.AppClaims, también debe hacerse a la función de MeHandler
func MeHandler(s server.Server) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
tokenString := strings.TrimSpace(r.Header.Get("Authorization"))
token, err := jwt.ParseWithClaims(tokenString, &models.AppClaims{}, func(token *jwt.Token) (interface{}, error) {
return []byte(s.Config().JWTSecret), nil
})
if err != nil {
http.Error(w, err.Error(), http.StatusUnauthorized)
return
}
if claims, ok := token.Claims.(*models.AppClaims); ok && token.Valid {
user, err := repository.GetUserById(r.Context(), claims.UserId)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(user)
} else {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
}
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?