| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | package proimport (	"encoding/json"	"github.com/gravitl/netmaker/database"	"github.com/gravitl/netmaker/models/promodels")// InitializeGroups - initialize groups data structure if not present in the DBfunc InitializeGroups() error {	if !DoesUserGroupExist(DEFAULT_ALLOWED_GROUPS) {		return InsertUserGroup(DEFAULT_ALLOWED_GROUPS)	}	return nil}// InsertUserGroup - inserts a group into thefunc InsertUserGroup(groupName promodels.UserGroupName) error {	currentGroups, err := GetUserGroups()	if err != nil {		return err	}	currentGroups[groupName] = promodels.Void{}	newData, err := json.Marshal(¤tGroups)	if err != nil {		return err	}	return database.Insert(DB_GROUPS_KEY, string(newData), database.USER_GROUPS_TABLE_NAME)}// DeleteUserGroup - deletes a group from databasefunc DeleteUserGroup(groupName promodels.UserGroupName) error {	var newGroups promodels.UserGroups	currentGroupRecords, err := database.FetchRecord(database.USER_GROUPS_TABLE_NAME, DB_GROUPS_KEY)	if err != nil && !database.IsEmptyRecord(err) {		return err	}	if err = json.Unmarshal([]byte(currentGroupRecords), &newGroups); err != nil {		return err	}	delete(newGroups, groupName)	newData, err := json.Marshal(&newGroups)	if err != nil {		return err	}	return database.Insert(DB_GROUPS_KEY, string(newData), database.USER_GROUPS_TABLE_NAME)}// GetUserGroups - get groups of usersfunc GetUserGroups() (promodels.UserGroups, error) {	var returnGroups promodels.UserGroups	groupsRecord, err := database.FetchRecord(database.USER_GROUPS_TABLE_NAME, DB_GROUPS_KEY)	if err != nil {		if database.IsEmptyRecord(err) {			return make(promodels.UserGroups, 1), nil		}		return returnGroups, err	}	if err = json.Unmarshal([]byte(groupsRecord), &returnGroups); err != nil {		return returnGroups, err	}	return returnGroups, nil}// DoesUserGroupExist - checks if a user group existsfunc DoesUserGroupExist(group promodels.UserGroupName) bool {	currentGroups, err := GetUserGroups()	if err != nil {		return true	}	for k := range currentGroups {		if k == group {			return true		}	}	return false}
 |