Преглед на файлове

integrate permission check into middleware

abhishek9686 преди 1 година
родител
ревизия
89bbc467d9
променени са 1 файла, в които са добавени 14 реда и са изтрити 8 реда
  1. 14 8
      logic/security.go

+ 14 - 8
logic/security.go

@@ -20,6 +20,13 @@ const (
 )
 
 func networkPermissionsCheck(username string, r *http.Request) error {
+	user, err := GetUser(username)
+	if err != nil {
+		return err
+	}
+	if user.PermissionTemplate.ID == models.SuperAdminRole {
+		return nil
+	}
 	// get info from header to determine the target rsrc
 	targetRsrc := r.Header.Get("TARGET_RSRC")
 	targetRsrcID := r.Header.Get("TARGET_RSRC_ID")
@@ -27,10 +34,6 @@ func networkPermissionsCheck(username string, r *http.Request) error {
 	if targetRsrc == "" || targetRsrcID == "" {
 		return errors.New("target rsrc or rsrc id is missing")
 	}
-	user, err := GetUser(username)
-	if err != nil {
-		return err
-	}
 	if r.Method == "" {
 		r.Method = http.MethodGet
 	}
@@ -58,15 +61,18 @@ func networkPermissionsCheck(username string, r *http.Request) error {
 }
 
 func globalPermissionsCheck(username string, r *http.Request) error {
+	user, err := GetUser(username)
+	if err != nil {
+		return err
+	}
+	if user.PermissionTemplate.ID == models.SuperAdminRole {
+		return nil
+	}
 	targetRsrc := r.Header.Get("TARGET_RSRC")
 	targetRsrcID := r.Header.Get("TARGET_RSRC_ID")
 	if targetRsrc == "" || targetRsrcID == "" {
 		return errors.New("target rsrc or rsrc id is missing")
 	}
-	user, err := GetUser(username)
-	if err != nil {
-		return err
-	}
 	if r.Method == "" {
 		r.Method = http.MethodGet
 	}