| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 | package logicimport (	"encoding/json"	"sort"	"github.com/gravitl/netmaker/database"	"github.com/gravitl/netmaker/logger"	"github.com/gravitl/netmaker/logic/pro"	"github.com/gravitl/netmaker/models"	"github.com/gravitl/netmaker/models/promodels")// GetUser - gets a user// TODO support "masteradmin"func GetUser(username string) (*models.User, error) {	var user models.User	record, err := database.FetchRecord(database.USERS_TABLE_NAME, username)	if err != nil {		return &user, err	}	if err = json.Unmarshal([]byte(record), &user); err != nil {		return &models.User{}, err	}	return &user, err}// GetGroupUsers - gets users in a groupfunc GetGroupUsers(group string) ([]models.ReturnUser, error) {	var returnUsers []models.ReturnUser	users, err := GetUsers()	if err != nil {		return returnUsers, err	}	for _, user := range users {		if StringSliceContains(user.Groups, group) {			users = append(users, user)		}	}	return users, err}// == PRO ==// InitializeNetUsers - intializes network users for all users/networksfunc InitializeNetUsers(network *models.Network) error {	// == add all current users to network as network users ==	currentUsers, err := GetUsers()	if err != nil {		return err	}	for i := range currentUsers { // add all users to given network		newUser := promodels.NetworkUser{			ID:          promodels.NetworkUserID(currentUsers[i].UserName),			Clients:     []string{},			Nodes:       []string{},			AccessLevel: pro.NO_ACCESS,			ClientLimit: 0,			NodeLimit:   0,		}		if pro.IsUserAllowed(network, currentUsers[i].UserName, currentUsers[i].Groups) {			newUser.AccessLevel = network.ProSettings.DefaultAccessLevel			newUser.ClientLimit = network.ProSettings.DefaultUserClientLimit			newUser.NodeLimit = network.ProSettings.DefaultUserNodeLimit		}		if err = pro.CreateNetworkUser(network, &newUser); err != nil {			logger.Log(0, "failed to add network user settings to user", string(newUser.ID), "on network", network.NetID)		}	}	return nil}// SetUserDefaults - sets the defaults of a user to avoid empty fieldsfunc SetUserDefaults(user *models.User) {	if user.Groups == nil {		user.Groups = []string{pro.DEFAULT_ALLOWED_GROUPS}	}}// SortUsers - Sorts slice of Users by usernamefunc SortUsers(unsortedUsers []models.ReturnUser) {	sort.Slice(unsortedUsers, func(i, j int) bool {		return unsortedUsers[i].UserName < unsortedUsers[j].UserName	})}
 |