fixed ssl provider section view/edit permission
This commit is contained in:
126
backend/main.go
126
backend/main.go
@@ -982,18 +982,32 @@ func createSpaceHandler(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
// Prüfe, ob der Benutzer FULL_ACCESS hat (ohne Space-Beschränkung)
|
||||
permissions, err := getUserPermissions(userID)
|
||||
if err != nil || len(permissions.Groups) == 0 {
|
||||
http.Error(w, "Keine Berechtigung zum Erstellen von Spaces", http.StatusForbidden)
|
||||
// Prüfe ob User Admin ist - Admins haben immer Vollzugriff
|
||||
isAdmin, err := isUserAdmin(userID)
|
||||
if err != nil {
|
||||
log.Printf("Fehler beim Prüfen des Admin-Status: %v", err)
|
||||
http.Error(w, "Fehler beim Prüfen der Berechtigung", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
hasFullAccess := false
|
||||
for _, group := range permissions.Groups {
|
||||
if group.Permission == PermissionFullAccess {
|
||||
hasFullAccess = true
|
||||
break
|
||||
// Prüfe, ob der Benutzer FULL_ACCESS hat (ohne Space-Beschränkung)
|
||||
permissions, err := getUserPermissions(userID)
|
||||
if err != nil {
|
||||
http.Error(w, "Fehler beim Abrufen der Berechtigungen", http.StatusInternalServerError)
|
||||
log.Printf("Fehler beim Abrufen der Berechtigungen: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Admin oder HasFullAccess erlaubt Space-Erstellung
|
||||
hasFullAccess := isAdmin || permissions.HasFullAccess
|
||||
|
||||
// Wenn nicht Admin, prüfe auch Gruppen
|
||||
if !isAdmin && len(permissions.Groups) > 0 {
|
||||
for _, group := range permissions.Groups {
|
||||
if group.Permission == PermissionFullAccess {
|
||||
hasFullAccess = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1669,17 +1683,31 @@ func deleteAllFqdnsGlobalHandler(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
permissions, err := getUserPermissions(userID)
|
||||
if err != nil || len(permissions.Groups) == 0 {
|
||||
http.Error(w, "Keine Berechtigung zum Löschen aller FQDNs. Vollzugriff erforderlich.", http.StatusForbidden)
|
||||
// Prüfe ob User Admin ist - Admins haben immer Vollzugriff
|
||||
isAdmin, err := isUserAdmin(userID)
|
||||
if err != nil {
|
||||
log.Printf("Fehler beim Prüfen des Admin-Status: %v", err)
|
||||
http.Error(w, "Fehler beim Prüfen der Berechtigung", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
hasFullAccess := false
|
||||
for _, group := range permissions.Groups {
|
||||
if group.Permission == PermissionFullAccess {
|
||||
hasFullAccess = true
|
||||
break
|
||||
permissions, err := getUserPermissions(userID)
|
||||
if err != nil {
|
||||
http.Error(w, "Fehler beim Abrufen der Berechtigungen", http.StatusInternalServerError)
|
||||
log.Printf("Fehler beim Abrufen der Berechtigungen: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Admin oder HasFullAccess erlaubt Löschen aller FQDNs
|
||||
hasFullAccess := isAdmin || permissions.HasFullAccess
|
||||
|
||||
// Wenn nicht Admin, prüfe auch Gruppen
|
||||
if !isAdmin && len(permissions.Groups) > 0 {
|
||||
for _, group := range permissions.Groups {
|
||||
if group.Permission == PermissionFullAccess {
|
||||
hasFullAccess = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1780,17 +1808,31 @@ func deleteAllCSRsHandler(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
permissions, err := getUserPermissions(userID)
|
||||
if err != nil || len(permissions.Groups) == 0 {
|
||||
http.Error(w, "Keine Berechtigung zum Löschen aller CSRs. Vollzugriff erforderlich.", http.StatusForbidden)
|
||||
// Prüfe ob User Admin ist - Admins haben immer Vollzugriff
|
||||
isAdmin, err := isUserAdmin(userID)
|
||||
if err != nil {
|
||||
log.Printf("Fehler beim Prüfen des Admin-Status: %v", err)
|
||||
http.Error(w, "Fehler beim Prüfen der Berechtigung", http.StatusInternalServerError)
|
||||
return
|
||||
}
|
||||
|
||||
hasFullAccess := false
|
||||
for _, group := range permissions.Groups {
|
||||
if group.Permission == PermissionFullAccess {
|
||||
hasFullAccess = true
|
||||
break
|
||||
permissions, err := getUserPermissions(userID)
|
||||
if err != nil {
|
||||
http.Error(w, "Fehler beim Abrufen der Berechtigungen", http.StatusInternalServerError)
|
||||
log.Printf("Fehler beim Abrufen der Berechtigungen: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Admin oder HasFullAccess erlaubt Löschen aller CSRs
|
||||
hasFullAccess := isAdmin || permissions.HasFullAccess
|
||||
|
||||
// Wenn nicht Admin, prüfe auch Gruppen
|
||||
if !isAdmin && len(permissions.Groups) > 0 {
|
||||
for _, group := range permissions.Groups {
|
||||
if group.Permission == PermissionFullAccess {
|
||||
hasFullAccess = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4390,8 +4432,9 @@ func hasSpaceAccess(userID, spaceID string) (bool, error) {
|
||||
return false, err
|
||||
}
|
||||
|
||||
// Wenn der Benutzer keine Gruppen hat, hat er keinen Zugriff
|
||||
if len(permissions.Groups) == 0 {
|
||||
// Wenn der Benutzer keine Gruppen hat und nicht Admin ist, hat er keinen Zugriff
|
||||
// Admins haben immer Zugriff (wird bereits oben geprüft)
|
||||
if !isAdmin && len(permissions.Groups) == 0 {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
@@ -4430,8 +4473,9 @@ func hasPermission(userID, spaceID string, requiredPermission PermissionLevel) (
|
||||
return false, err
|
||||
}
|
||||
|
||||
// Wenn der Benutzer keine Gruppen hat, hat er keine Berechtigung
|
||||
if len(permissions.Groups) == 0 {
|
||||
// Wenn der Benutzer keine Gruppen hat und nicht Admin ist, hat er keine Berechtigung
|
||||
// Admins haben immer alle Berechtigungen (wird bereits oben geprüft)
|
||||
if !isAdmin && len(permissions.Groups) == 0 {
|
||||
return false, nil
|
||||
}
|
||||
|
||||
@@ -4484,12 +4528,36 @@ func getAccessibleSpaceIDs(userID string) ([]string, error) {
|
||||
return []string{}, nil
|
||||
}
|
||||
|
||||
// Prüfe ob User Admin ist - Admins haben Zugriff auf alle Spaces
|
||||
isAdmin, err := isUserAdmin(userID)
|
||||
if err == nil && isAdmin {
|
||||
// Hole alle Spaces für Admin
|
||||
ctx, cancel := context.WithTimeout(context.Background(), time.Second*10)
|
||||
defer cancel()
|
||||
|
||||
rows, err := db.QueryContext(ctx, "SELECT id FROM spaces")
|
||||
if err != nil {
|
||||
return []string{}, err
|
||||
}
|
||||
defer rows.Close()
|
||||
|
||||
var spaceIDs []string
|
||||
for rows.Next() {
|
||||
var spaceID string
|
||||
if err := rows.Scan(&spaceID); err == nil {
|
||||
spaceIDs = append(spaceIDs, spaceID)
|
||||
}
|
||||
}
|
||||
return spaceIDs, nil
|
||||
}
|
||||
|
||||
permissions, err := getUserPermissions(userID)
|
||||
if err != nil {
|
||||
return []string{}, err
|
||||
}
|
||||
|
||||
// Wenn der Benutzer keine Gruppen hat, hat er keinen Zugriff
|
||||
// (Admin wurde bereits oben behandelt)
|
||||
if len(permissions.Groups) == 0 {
|
||||
return []string{}, nil
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user