| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | package logicimport (	"encoding/json"	"fmt"	"time"	"github.com/gravitl/netmaker/database"	"github.com/gravitl/netmaker/models")// Pre-Define Permission Templates for default Rolesvar SuperAdminPermissionTemplate = models.UserRolePermissionTemplate{	ID:         models.SuperAdminRole,	Default:    true,	FullAccess: true,}var AdminPermissionTemplate = models.UserRolePermissionTemplate{	ID:         models.AdminRole,	Default:    true,	FullAccess: true,}var GetFilteredNodesByUserAccess = func(user models.User, nodes []models.Node) (filteredNodes []models.Node) {	return}var CreateRole = func(r models.UserRolePermissionTemplate) error {	return nil}var DeleteRole = func(r models.UserRoleID, force bool) error {	return nil}var FilterNetworksByRole = func(allnetworks []models.Network, user models.User) []models.Network {	return allnetworks}var IsGroupsValid = func(groups map[models.UserGroupID]struct{}) error {	return nil}var IsGroupValid = func(groupID models.UserGroupID) error {	return nil}var IsNetworkRolesValid = func(networkRoles map[models.NetworkID]map[models.UserRoleID]struct{}) error {	return nil}var MigrateUserRoleAndGroups = func(u models.User) {}var MigrateToUUIDs = func() {}var UpdateUserGwAccess = func(currentUser, changeUser models.User) {}var UpdateRole = func(r models.UserRolePermissionTemplate) error { return nil }var InitialiseRoles = userRolesInitvar IntialiseGroups = func() {}var DeleteNetworkRoles = func(netID string) {}var CreateDefaultNetworkRolesAndGroups = func(netID models.NetworkID) {}var CreateDefaultUserPolicies = func(netID models.NetworkID) {	if netID.String() == "" {		return	}	if !IsAclExists(fmt.Sprintf("%s.%s", netID, "all-users")) {		defaultUserAcl := models.Acl{			ID:          fmt.Sprintf("%s.%s", netID, "all-users"),			Default:     true,			Name:        "All Users",			MetaData:    "This policy gives access to everything in the network for an user",			NetworkID:   netID,			Proto:       models.ALL,			ServiceType: models.Any,			Port:        []string{},			RuleType:    models.UserPolicy,			Src: []models.AclPolicyTag{				{					ID:    models.UserAclID,					Value: "*",				},			},			Dst: []models.AclPolicyTag{{				ID:    models.NodeTagID,				Value: "*",			}},			AllowedDirection: models.TrafficDirectionUni,			Enabled:          true,			CreatedBy:        "auto",			CreatedAt:        time.Now().UTC(),		}		InsertAcl(defaultUserAcl)	}}var GetUserGroupsInNetwork = func(netID models.NetworkID) (networkGrps map[models.UserGroupID]models.UserGroup) { return }var GetUserGroup = func(groupId models.UserGroupID) (userGrps models.UserGroup, err error) { return }var AddGlobalNetRolesToAdmins = func(u *models.User) {}var EmailInit = func() {}// GetRole - fetches role template by idfunc GetRole(roleID models.UserRoleID) (models.UserRolePermissionTemplate, error) {	// check if role already exists	data, err := database.FetchRecord(database.USER_PERMISSIONS_TABLE_NAME, roleID.String())	if err != nil {		return models.UserRolePermissionTemplate{}, err	}	ur := models.UserRolePermissionTemplate{}	err = json.Unmarshal([]byte(data), &ur)	if err != nil {		return ur, err	}	return ur, nil}// ListPlatformRoles - lists user platform roles permission templatesfunc ListPlatformRoles() ([]models.UserRolePermissionTemplate, error) {	data, err := database.FetchRecords(database.USER_PERMISSIONS_TABLE_NAME)	if err != nil && !database.IsEmptyRecord(err) {		return []models.UserRolePermissionTemplate{}, err	}	userRoles := []models.UserRolePermissionTemplate{}	for _, dataI := range data {		userRole := models.UserRolePermissionTemplate{}		err := json.Unmarshal([]byte(dataI), &userRole)		if err != nil {			continue		}		if userRole.NetworkID != "" {			continue		}		userRoles = append(userRoles, userRole)	}	return userRoles, nil}func userRolesInit() {	d, _ := json.Marshal(SuperAdminPermissionTemplate)	database.Insert(SuperAdminPermissionTemplate.ID.String(), string(d), database.USER_PERMISSIONS_TABLE_NAME)	d, _ = json.Marshal(AdminPermissionTemplate)	database.Insert(AdminPermissionTemplate.ID.String(), string(d), database.USER_PERMISSIONS_TABLE_NAME)}
 |