user_mgmt.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. package logic
  2. import (
  3. "encoding/json"
  4. "github.com/gravitl/netmaker/database"
  5. "github.com/gravitl/netmaker/models"
  6. )
  7. // Pre-Define Permission Templates for default Roles
  8. var SuperAdminPermissionTemplate = models.UserRolePermissionTemplate{
  9. ID: models.SuperAdminRole,
  10. Default: true,
  11. FullAccess: true,
  12. }
  13. var AdminPermissionTemplate = models.UserRolePermissionTemplate{
  14. ID: models.AdminRole,
  15. Default: true,
  16. FullAccess: true,
  17. }
  18. var GetFilteredNodesByUserAccess = func(user models.User, nodes []models.Node) (filteredNodes []models.Node) {
  19. return
  20. }
  21. var CreateRole = func(r models.UserRolePermissionTemplate) error {
  22. return nil
  23. }
  24. var DeleteRole = func(r models.UserRoleID, force bool) error {
  25. return nil
  26. }
  27. var FilterNetworksByRole = func(allnetworks []models.Network, user models.User) []models.Network {
  28. return allnetworks
  29. }
  30. var IsGroupsValid = func(groups map[models.UserGroupID]struct{}) error {
  31. return nil
  32. }
  33. var IsGroupValid = func(groupID models.UserGroupID) error {
  34. return nil
  35. }
  36. var IsNetworkRolesValid = func(networkRoles map[models.NetworkID]map[models.UserRoleID]struct{}) error {
  37. return nil
  38. }
  39. var MigrateUserRoleAndGroups = func(u models.User) {
  40. }
  41. var UpdateUserGwAccess = func(currentUser, changeUser models.User) {}
  42. var UpdateRole = func(r models.UserRolePermissionTemplate) error { return nil }
  43. var InitialiseRoles = userRolesInit
  44. var IntialiseGroups = func() {}
  45. var DeleteNetworkRoles = func(netID string) {}
  46. var CreateDefaultNetworkRolesAndGroups = func(netID models.NetworkID) {}
  47. var CreateDefaultUserPolicies = func(netID models.NetworkID) {}
  48. var GetUserGroupsInNetwork = func(netID models.NetworkID) (networkGrps map[models.UserGroupID]models.UserGroup) { return }
  49. var GetUserGroup = func(groupId models.UserGroupID) (userGrps models.UserGroup, err error) { return }
  50. var AddGlobalNetRolesToAdmins = func(u *models.User) {}
  51. var EmailInit = func() {}
  52. // GetRole - fetches role template by id
  53. func GetRole(roleID models.UserRoleID) (models.UserRolePermissionTemplate, error) {
  54. // check if role already exists
  55. data, err := database.FetchRecord(database.USER_PERMISSIONS_TABLE_NAME, roleID.String())
  56. if err != nil {
  57. return models.UserRolePermissionTemplate{}, err
  58. }
  59. ur := models.UserRolePermissionTemplate{}
  60. err = json.Unmarshal([]byte(data), &ur)
  61. if err != nil {
  62. return ur, err
  63. }
  64. return ur, nil
  65. }
  66. // ListPlatformRoles - lists user platform roles permission templates
  67. func ListPlatformRoles() ([]models.UserRolePermissionTemplate, error) {
  68. data, err := database.FetchRecords(database.USER_PERMISSIONS_TABLE_NAME)
  69. if err != nil && !database.IsEmptyRecord(err) {
  70. return []models.UserRolePermissionTemplate{}, err
  71. }
  72. userRoles := []models.UserRolePermissionTemplate{}
  73. for _, dataI := range data {
  74. userRole := models.UserRolePermissionTemplate{}
  75. err := json.Unmarshal([]byte(dataI), &userRole)
  76. if err != nil {
  77. continue
  78. }
  79. if userRole.NetworkID != "" {
  80. continue
  81. }
  82. userRoles = append(userRoles, userRole)
  83. }
  84. return userRoles, nil
  85. }
  86. func GetUserGrpMap() map[models.UserGroupID]map[string]struct{} {
  87. grpUsersMap := make(map[models.UserGroupID]map[string]struct{})
  88. users, _ := GetUsersDB()
  89. for _, user := range users {
  90. for gID := range user.UserGroups {
  91. if grpUsers, ok := grpUsersMap[gID]; ok {
  92. grpUsers[user.UserName] = struct{}{}
  93. grpUsersMap[gID] = grpUsers
  94. } else {
  95. grpUsersMap[gID] = make(map[string]struct{})
  96. grpUsersMap[gID][user.UserName] = struct{}{}
  97. }
  98. }
  99. }
  100. return grpUsersMap
  101. }
  102. func userRolesInit() {
  103. d, _ := json.Marshal(SuperAdminPermissionTemplate)
  104. database.Insert(SuperAdminPermissionTemplate.ID.String(), string(d), database.USER_PERMISSIONS_TABLE_NAME)
  105. d, _ = json.Marshal(AdminPermissionTemplate)
  106. database.Insert(AdminPermissionTemplate.ID.String(), string(d), database.USER_PERMISSIONS_TABLE_NAME)
  107. }