Browse Source

check for superadmin on migration if users are present

Abhishek Kondur 2 years ago
parent
commit
484ce65059
2 changed files with 31 additions and 26 deletions
  1. 1 0
      controllers/ext_client.go
  2. 30 26
      migrate/migrate.go

+ 1 - 0
controllers/ext_client.go

@@ -353,6 +353,7 @@ func createExtClient(w http.ResponseWriter, r *http.Request) {
 			logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
 			return
 		}
+		userName = caller.UserName
 		if !caller.IsAdmin && !caller.IsSuperAdmin {
 			if _, ok := caller.RemoteGwIDs[nodeid]; !ok {
 				err = errors.New("permission denied")

+ 30 - 26
migrate/migrate.go

@@ -17,35 +17,39 @@ func Run() {
 }
 
 func assignSuperAdmin() {
-	ok, _ := logic.HasSuperAdmin()
-	if !ok {
-		createdSuperAdmin := false
-		users, err := logic.GetUsers()
-		if err == nil {
-			for _, u := range users {
-				if u.IsAdmin {
-					user, err := logic.GetUser(u.UserName)
-					if err != nil {
-						slog.Error("error getting user", "user", u.UserName, "error", err.Error())
-						continue
-					}
-					user.IsSuperAdmin = true
-					user.IsAdmin = false
-					err = logic.UpsertUser(*user)
-					if err != nil {
-						slog.Error("error updating user to superadmin", "user", user.UserName, "error", err.Error())
-						continue
-					} else {
-						createdSuperAdmin = true
-					}
-					break
-				}
+	users, err := logic.GetUsers()
+	if err != nil || len(users) == 0 {
+		return
+	}
+
+	if ok, _ := logic.HasSuperAdmin(); ok {
+		return
+	}
+	createdSuperAdmin := false
+	for _, u := range users {
+		if u.IsAdmin {
+			user, err := logic.GetUser(u.UserName)
+			if err != nil {
+				slog.Error("error getting user", "user", u.UserName, "error", err.Error())
+				continue
 			}
-		}
-		if !createdSuperAdmin {
-			logger.FatalLog0("failed to create superadmin!!")
+			user.IsSuperAdmin = true
+			user.IsAdmin = false
+			err = logic.UpsertUser(*user)
+			if err != nil {
+				slog.Error("error updating user to superadmin", "user", user.UserName, "error", err.Error())
+				continue
+			} else {
+				createdSuperAdmin = true
+			}
+			break
 		}
 	}
+
+	if !createdSuperAdmin {
+		slog.Error("failed to create superadmin!!")
+	}
+
 }
 
 func updateEnrollmentKeys() {