Parcourir la source

Merge branch 'NET-2000-access_tokens' of https://github.com/gravitl/netmaker into NET-1932

abhishek9686 il y a 4 mois
Parent
commit
3417f19272
2 fichiers modifiés avec 25 ajouts et 1 suppressions
  1. 4 1
      controllers/user.go
  2. 21 0
      logic/util.go

+ 4 - 1
controllers/user.go

@@ -751,7 +751,10 @@ func updateUser(w http.ResponseWriter, r *http.Request) {
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "forbidden"))
 		return
 	}
-
+	if userchange.PlatformRoleID != user.PlatformRoleID || !logic.CompareMaps(user.UserGroups, userchange.UserGroups) {
+		(&models.UserAccessToken{UserName: user.UserName}).DeleteAllUserTokens()
+	}
+	logic.AddGlobalNetRolesToAdmins(userchange)
 	user, err = logic.UpdateUser(&userchange, user)
 	if err != nil {
 		logger.Log(0, username,

+ 21 - 0
logic/util.go

@@ -10,6 +10,7 @@ import (
 	"log/slog"
 	"net"
 	"os"
+	"reflect"
 	"strings"
 	"time"
 	"unicode"
@@ -201,3 +202,23 @@ func VersionLessThan(v1, v2 string) (bool, error) {
 	}
 	return sv1.LT(sv2), nil
 }
+
+// Compare any two maps with any key and value types
+func CompareMaps[K comparable, V any](a, b map[K]V) bool {
+	if len(a) != len(b) {
+		return false
+	}
+
+	for key, valA := range a {
+		valB, ok := b[key]
+		if !ok {
+			return false
+		}
+
+		if !reflect.DeepEqual(valA, valB) {
+			return false
+		}
+	}
+
+	return true
+}