package user import ( "RenewCMS/api/pkg/apperr" "RenewCMS/api/pkg/payload" "RenewCMS/internal/domain/role" "RenewCMS/internal/infrastructure/useCases" "encoding/json" "errors" "net/http" ) func userListItemOf(entry useCases.DirectoryEntry) userListItem { return userListItem{ ID: entry.ID, Kind: entry.Kind, Username: entry.Username, DisplayName: entry.DisplayName, Email: entry.Email, Role: payload.RoleRefPtrOf(entry.Role), RoleAssignedBy: payload.RoleAssignerPtrOf(entry.RoleAssignedBy), Status: entry.Status, CreatedAt: entry.CreatedAt, } } func writeNoStoreJSON(w http.ResponseWriter, status int, payload any) { body, err := json.Marshal(payload) if err != nil { http.Error(w, "Internal server error", http.StatusInternalServerError) return } w.Header().Set("Cache-Control", "no-store") w.WriteHeader(status) _, _ = w.Write(body) } func writeRoleRefusal(w http.ResponseWriter, err error) bool { var escalation role.EscalationError switch { case errors.As(err, &escalation): w.Header().Set(apperr.EscalationHeader, escalation.Key) http.Error(w, apperr.EscalationErrorMessage, http.StatusForbidden) case errors.Is(err, role.ErrRoleLocked): http.Error(w, apperr.RoleLockedErrorMessage, http.StatusForbidden) case errors.Is(err, role.ErrUnknownRole): http.Error(w, apperr.InvalidRoleErrorMessage, http.StatusBadRequest) default: return false } return true }