1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package pro
- import (
- "encoding/json"
- "github.com/gravitl/netmaker/database"
- "github.com/gravitl/netmaker/models/promodels"
- )
- // InitializeGroups - initialize groups data structure if not present in the DB
- func InitializeGroups() error {
- if !DoesUserGroupExist(DEFAULT_ALLOWED_GROUPS) {
- return InsertUserGroup(DEFAULT_ALLOWED_GROUPS)
- }
- return nil
- }
- // InsertUserGroup - inserts a group into the
- func 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 database
- func 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 users
- func 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 exists
- func DoesUserGroupExist(group promodels.UserGroupName) bool {
- currentGroups, err := GetUserGroups()
- if err != nil {
- return true
- }
- for k := range currentGroups {
- if k == group {
- return true
- }
- }
- return false
- }
|