package auth import ( "encoding/json" "net/http" "gitea.perlbach24.de/scripte/nexarch/internal/user" ) // ProfileHandler liefert die eigenen Stammdaten fuer die Profilseite // (IAM-08). Getrennt von ChangePasswordHandler, da unterschiedliche // Lesbarkeitsanforderungen (nur GET, kein Nebeneffekt). type ProfileHandler struct { users *user.TenantUserStore } func NewProfileHandler(users *user.TenantUserStore) *ProfileHandler { return &ProfileHandler{users: users} } type meResponse struct { ID string `json:"id"` Email string `json:"email"` Name string `json:"name"` } // Me liefert die Stammdaten des angemeldeten Benutzers. Muss hinter // RequireAuth haengen. func (h *ProfileHandler) Me(w http.ResponseWriter, r *http.Request) { claims, ok := ClaimsFromContext(r.Context()) if !ok { http.Error(w, "nicht angemeldet", http.StatusUnauthorized) return } u, err := h.users.Get(r.Context(), claims.UserID) if err != nil { http.Error(w, "benutzer nicht gefunden", http.StatusNotFound) return } w.Header().Set("Content-Type", "application/json") _ = json.NewEncoder(w).Encode(meResponse{ID: u.ID, Email: u.Email, Name: u.Name}) }