@@ -751,6 +751,9 @@ 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()
+ }
user, err = logic.UpdateUser(&userchange, user)
if err != nil {
@@ -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 {
+ if !reflect.DeepEqual(valA, valB) {
+ return true
+}