user_mgmt.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package logic
  2. import (
  3. "encoding/json"
  4. "errors"
  5. "github.com/gravitl/netmaker/database"
  6. "github.com/gravitl/netmaker/models"
  7. )
  8. var GetFilteredNodesByUserAccess = func(user models.User, nodes []models.Node) (filteredNodes []models.Node) {
  9. return
  10. }
  11. var CreateRole = func(r models.UserRolePermissionTemplate) error {
  12. return nil
  13. }
  14. var DeleteNetworkRoles = func(netID string) {}
  15. // GetRole - fetches role template by id
  16. func GetRole(roleID models.UserRole) (models.UserRolePermissionTemplate, error) {
  17. // check if role already exists
  18. data, err := database.FetchRecord(database.USER_PERMISSIONS_TABLE_NAME, roleID.String())
  19. if err != nil {
  20. return models.UserRolePermissionTemplate{}, err
  21. }
  22. ur := models.UserRolePermissionTemplate{}
  23. err = json.Unmarshal([]byte(data), &ur)
  24. if err != nil {
  25. return ur, err
  26. }
  27. return ur, nil
  28. }
  29. func IsGroupsValid(groups map[models.UserGroupID]struct{}) error {
  30. uniqueGroupsPlatformRole := make(map[models.UserRole]struct{})
  31. for groupID := range groups {
  32. userG, err := logic.GetUserGroup(groupID)
  33. if err != nil {
  34. return err
  35. }
  36. uniqueGroupsPlatformRole[userG.PlatformRole] = struct{}{}
  37. }
  38. if len(uniqueGroupsPlatformRole) > 1 {
  39. return errors.New("only groups with same platform role can be assigned to an user")
  40. }
  41. return nil
  42. }