mirror of
https://github.com/gravitl/netmaker.git
synced 2026-04-22 16:07:11 +08:00
Merge pull request #3767 from gravitl/NM-187
NM-187: force delete user configs option
This commit is contained in:
+34
-4
@@ -797,6 +797,26 @@ func enableUserAccount(w http.ResponseWriter, r *http.Request) {
|
||||
logger.Log(0, "failed to enable user account: ", err.Error())
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
}
|
||||
go func() {
|
||||
enableConfigs := r.URL.Query().Get("force_enable_configs") == "true"
|
||||
if !enableConfigs {
|
||||
return
|
||||
}
|
||||
extclients, err := logic.GetAllExtClients()
|
||||
if err != nil {
|
||||
logger.Log(0, "failed to get user extclients:", err.Error())
|
||||
return
|
||||
}
|
||||
for _, extclient := range extclients {
|
||||
if extclient.OwnerID == user.UserName && !extclient.Enabled {
|
||||
_, err = logic.ToggleExtClientConnectivity(&extclient, true)
|
||||
if err != nil {
|
||||
logger.Log(1, "failed to delete user extclient:", err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
mq.PublishPeerUpdate(false)
|
||||
}()
|
||||
|
||||
logic.ReturnSuccessResponse(w, r, "user account enabled")
|
||||
}
|
||||
@@ -870,21 +890,24 @@ func disableUserAccount(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
|
||||
go func() {
|
||||
disableConfigs := r.URL.Query().Get("force_disable_configs") == "true"
|
||||
if !disableConfigs {
|
||||
return
|
||||
}
|
||||
extclients, err := logic.GetAllExtClients()
|
||||
if err != nil {
|
||||
logger.Log(0, "failed to get user extclients:", err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
for _, extclient := range extclients {
|
||||
if extclient.OwnerID == user.UserName {
|
||||
err = logic.DeleteExtClientAndCleanup(extclient)
|
||||
_, err = logic.ToggleExtClientConnectivity(&extclient, false)
|
||||
if err != nil {
|
||||
logger.Log(0, "failed to delete user extclient:", err.Error())
|
||||
logger.Log(1, "failed to delete user extclient:", err.Error())
|
||||
} else {
|
||||
err := mq.PublishDeletedClientPeerUpdate(&extclient)
|
||||
if err != nil {
|
||||
logger.Log(0, "failed to publish deleted client peer update:", err.Error())
|
||||
logger.Log(1, "failed to publish deleted client peer update:", err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1555,6 +1578,7 @@ func deleteUser(w http.ResponseWriter, r *http.Request) {
|
||||
})
|
||||
// check and delete extclient with this ownerID
|
||||
go func() {
|
||||
delete := r.URL.Query().Get("force_delete_configs") == "true"
|
||||
extclients, err := logic.GetAllExtClients()
|
||||
if err != nil {
|
||||
slog.Error("failed to get extclients", "error", err)
|
||||
@@ -1562,6 +1586,12 @@ func deleteUser(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
for _, extclient := range extclients {
|
||||
if extclient.OwnerID == user.UserName {
|
||||
if extclient.DeviceID == "" && extclient.RemoteAccessClientID == "" {
|
||||
if !delete {
|
||||
// only delete wireguard configs on force
|
||||
continue
|
||||
}
|
||||
}
|
||||
err = logic.DeleteExtClientAndCleanup(extclient)
|
||||
if err != nil {
|
||||
slog.Error("failed to delete extclient",
|
||||
|
||||
Reference in New Issue
Block a user