Skip to content

Commit 719e0c2

Browse files
authored
NET-551: User Mgmt Re-Design (#2547)
* add superadmin role, apis to create superadmin user * apis to attach and remove user from remote access gateways * add api to list user's remote client has gateway clients * remove code related user groups * remove networks and groups from user model * refactor user CRUD operations * fix network permission test * add superadmin to authorize func * remove user network and groups from cli * api to transfer superadmin role * add api to list users on a ingress gw * restrict user access to resources on server * deny request from remote access client if extclient is already created * fix user tests * fix static checks * fix static checks * add limits to extclient create handler * set username to superadmin on if masterkey is used * allow creation of extclients using masterkey * add migration func to assign superadmin role for existing admin user * check for superadmin on migration if users are present * allowe masterkey to extcleint apis * check ownerid * format error, on jwt token verification failure return unauthorized rather than forbidden * user update fix * move user remote functionality to ee * fix update user api * security patch * initalise ee user handlers * allow user to use master key to update any user * use slog * fix auth user test * table headers * remove user role, it's covered in middleware * setuser defaults fix
1 parent 1a1ba1c commit 719e0c2

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+809
-2677
lines changed

auth/auth.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"time"
1111

1212
"golang.org/x/crypto/bcrypt"
13+
"golang.org/x/exp/slog"
1314
"golang.org/x/oauth2"
1415

1516
"github.com/gorilla/websocket"
@@ -238,9 +239,9 @@ func HandleHeadlessSSO(w http.ResponseWriter, r *http.Request) {
238239
// == private methods ==
239240

240241
func addUser(email string) error {
241-
var hasAdmin, err = logic.HasAdmin()
242+
var hasSuperAdmin, err = logic.HasSuperAdmin()
242243
if err != nil {
243-
logger.Log(1, "error checking for existence of admin user during OAuth login for", email, "; user not added")
244+
slog.Error("error checking for existence of admin user during OAuth login for", "email", email, "error", err)
244245
return err
245246
} // generate random password to adapt to current model
246247
var newPass, fetchErr = fetchPassValue("")
@@ -251,11 +252,11 @@ func addUser(email string) error {
251252
UserName: email,
252253
Password: newPass,
253254
}
254-
if !hasAdmin { // must be first attempt, create an admin
255-
if err = logic.CreateAdmin(&newUser); err != nil {
256-
logger.Log(1, "error creating admin from user,", email, "; user not added")
255+
if !hasSuperAdmin { // must be first attempt, create a superadmin
256+
if err = logic.CreateSuperAdmin(&newUser); err != nil {
257+
slog.Error("error creating super admin from user", "email", email, "error", err)
257258
} else {
258-
logger.Log(1, "admin created from user,", email, "; was first user added")
259+
slog.Info("superadmin created from user", "email", email)
259260
}
260261
} else { // otherwise add to db as admin..?
261262
// TODO: add ability to add users with preemptive permissions

auth/register_callback.go

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@ import (
99
"github.com/gorilla/mux"
1010
"github.com/gravitl/netmaker/logger"
1111
"github.com/gravitl/netmaker/logic"
12-
"github.com/gravitl/netmaker/logic/pro"
1312
"github.com/gravitl/netmaker/logic/pro/netcache"
1413
"github.com/gravitl/netmaker/models"
15-
"github.com/gravitl/netmaker/models/promodels"
1614
)
1715

1816
var (
@@ -165,25 +163,5 @@ func isUserIsAllowed(username, network string, shouldAddUser bool) (*models.User
165163
user, _ = logic.GetUser(username)
166164
}
167165

168-
if !user.IsAdmin { // perform check to see if user is allowed to join a node to network
169-
netUser, err := pro.GetNetworkUser(network, promodels.NetworkUserID(user.UserName))
170-
if err != nil {
171-
logger.Log(0, "failed to get net user details for user", user.UserName, "during node SSO")
172-
return nil, fmt.Errorf("failed to verify network user")
173-
}
174-
if netUser.AccessLevel != pro.NET_ADMIN { // if user is a net admin on network, good to go
175-
// otherwise, check if they have node access + haven't reached node limit on network
176-
if netUser.AccessLevel == pro.NODE_ACCESS {
177-
if len(netUser.Nodes) >= netUser.NodeLimit {
178-
logger.Log(0, "user", user.UserName, "has reached their node limit on network", network)
179-
return nil, fmt.Errorf("user node limit exceeded")
180-
}
181-
} else {
182-
logger.Log(0, "user", user.UserName, "attempted to access network", network, "via node SSO")
183-
return nil, fmt.Errorf("network user not allowed")
184-
}
185-
}
186-
}
187-
188166
return user, nil
189167
}

cli/cmd/network_user/create.go

Lines changed: 0 additions & 43 deletions
This file was deleted.

cli/cmd/network_user/delete.go

Lines changed: 0 additions & 23 deletions
This file was deleted.

cli/cmd/network_user/flags.go

Lines changed: 0 additions & 10 deletions
This file was deleted.

cli/cmd/network_user/get.go

Lines changed: 0 additions & 27 deletions
This file was deleted.

cli/cmd/network_user/list.go

Lines changed: 0 additions & 27 deletions
This file was deleted.

cli/cmd/network_user/root.go

Lines changed: 0 additions & 28 deletions
This file was deleted.

cli/cmd/network_user/update.go

Lines changed: 0 additions & 43 deletions
This file was deleted.

cli/cmd/root.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,9 @@ import (
1212
"github.com/gravitl/netmaker/cli/cmd/host"
1313
"github.com/gravitl/netmaker/cli/cmd/metrics"
1414
"github.com/gravitl/netmaker/cli/cmd/network"
15-
"github.com/gravitl/netmaker/cli/cmd/network_user"
1615
"github.com/gravitl/netmaker/cli/cmd/node"
1716
"github.com/gravitl/netmaker/cli/cmd/server"
1817
"github.com/gravitl/netmaker/cli/cmd/user"
19-
"github.com/gravitl/netmaker/cli/cmd/usergroup"
2018
"github.com/spf13/cobra"
2119
)
2220

@@ -52,9 +50,7 @@ func init() {
5250
rootCmd.AddCommand(server.GetRoot())
5351
rootCmd.AddCommand(ext_client.GetRoot())
5452
rootCmd.AddCommand(user.GetRoot())
55-
rootCmd.AddCommand(usergroup.GetRoot())
5653
rootCmd.AddCommand(metrics.GetRoot())
57-
rootCmd.AddCommand(network_user.GetRoot())
5854
rootCmd.AddCommand(host.GetRoot())
5955
rootCmd.AddCommand(enrollment_key.GetRoot())
6056
}

0 commit comments

Comments
 (0)