Explorar o código

set username to superadmin on if masterkey is used

Abhishek Kondur %!s(int64=2) %!d(string=hai) anos
pai
achega
6ffac8ce5d
Modificáronse 2 ficheiros con 20 adicións e 0 borrados
  1. 5 0
      logic/security.go
  2. 15 0
      logic/users.go

+ 5 - 0
logic/security.go

@@ -34,6 +34,11 @@ func SecurityCheck(reqAdmin bool, next http.Handler) http.HandlerFunc {
 		// detect masteradmin
 		if username == master_uname {
 			r.Header.Set("ismaster", "yes")
+			// set user as superadmin
+			user, err := GetSuperAdmin()
+			if err == nil {
+				username = user.UserName
+			}
 		}
 		r.Header.Set("user", username)
 		next.ServeHTTP(w, r)

+ 15 - 0
logic/users.go

@@ -2,6 +2,7 @@ package logic
 
 import (
 	"encoding/json"
+	"errors"
 	"sort"
 
 	"github.com/gravitl/netmaker/database"
@@ -60,3 +61,17 @@ func SortUsers(unsortedUsers []models.ReturnUser) {
 		return unsortedUsers[i].UserName < unsortedUsers[j].UserName
 	})
 }
+
+// GetSuperAdmin - fetches superadmin user
+func GetSuperAdmin() (models.ReturnUser, error) {
+	users, err := GetUsers()
+	if err != nil {
+		return models.ReturnUser{}, err
+	}
+	for _, user := range users {
+		if user.IsSuperAdmin {
+			return user, nil
+		}
+	}
+	return models.ReturnUser{}, errors.New("superadmin not found")
+}