2
0

user_mgmt.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package logic
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "time"
  6. "github.com/gravitl/netmaker/database"
  7. "github.com/gravitl/netmaker/models"
  8. )
  9. // Pre-Define Permission Templates for default Roles
  10. var SuperAdminPermissionTemplate = models.UserRolePermissionTemplate{
  11. ID: models.SuperAdminRole,
  12. Default: true,
  13. FullAccess: true,
  14. }
  15. var AdminPermissionTemplate = models.UserRolePermissionTemplate{
  16. ID: models.AdminRole,
  17. Default: true,
  18. FullAccess: true,
  19. }
  20. var GetFilteredNodesByUserAccess = func(user models.User, nodes []models.Node) (filteredNodes []models.Node) {
  21. return
  22. }
  23. var CreateRole = func(r models.UserRolePermissionTemplate) error {
  24. return nil
  25. }
  26. var DeleteRole = func(r models.UserRoleID, force bool) error {
  27. return nil
  28. }
  29. var FilterNetworksByRole = func(allnetworks []models.Network, user models.User) []models.Network {
  30. return allnetworks
  31. }
  32. var IsGroupsValid = func(groups map[models.UserGroupID]struct{}) error {
  33. return nil
  34. }
  35. var IsGroupValid = func(groupID models.UserGroupID) error {
  36. return nil
  37. }
  38. var IsNetworkRolesValid = func(networkRoles map[models.NetworkID]map[models.UserRoleID]struct{}) error {
  39. return nil
  40. }
  41. var MigrateUserRoleAndGroups = func(u models.User) {
  42. }
  43. var MigrateToUUIDs = func() {}
  44. var UpdateUserGwAccess = func(currentUser, changeUser models.User) {}
  45. var UpdateRole = func(r models.UserRolePermissionTemplate) error { return nil }
  46. var InitialiseRoles = userRolesInit
  47. var IntialiseGroups = func() {}
  48. var DeleteNetworkRoles = func(netID string) {}
  49. var CreateDefaultNetworkRolesAndGroups = func(netID models.NetworkID) {}
  50. var CreateDefaultUserPolicies = func(netID models.NetworkID) {
  51. if netID.String() == "" {
  52. return
  53. }
  54. if !IsAclExists(fmt.Sprintf("%s.%s", netID, "all-users")) {
  55. defaultUserAcl := models.Acl{
  56. ID: fmt.Sprintf("%s.%s", netID, "all-users"),
  57. Default: true,
  58. Name: "All Users",
  59. MetaData: "This policy gives access to everything in the network for an user",
  60. NetworkID: netID,
  61. Proto: models.ALL,
  62. ServiceType: models.Any,
  63. Port: []string{},
  64. RuleType: models.UserPolicy,
  65. Src: []models.AclPolicyTag{
  66. {
  67. ID: models.UserAclID,
  68. Value: "*",
  69. },
  70. },
  71. Dst: []models.AclPolicyTag{{
  72. ID: models.NodeTagID,
  73. Value: "*",
  74. }},
  75. AllowedDirection: models.TrafficDirectionUni,
  76. Enabled: true,
  77. CreatedBy: "auto",
  78. CreatedAt: time.Now().UTC(),
  79. }
  80. InsertAcl(defaultUserAcl)
  81. }
  82. }
  83. var GetUserGroupsInNetwork = func(netID models.NetworkID) (networkGrps map[models.UserGroupID]models.UserGroup) { return }
  84. var GetUserGroup = func(groupId models.UserGroupID) (userGrps models.UserGroup, err error) { return }
  85. var AddGlobalNetRolesToAdmins = func(u *models.User) {}
  86. var EmailInit = func() {}
  87. // GetRole - fetches role template by id
  88. func GetRole(roleID models.UserRoleID) (models.UserRolePermissionTemplate, error) {
  89. // check if role already exists
  90. data, err := database.FetchRecord(database.USER_PERMISSIONS_TABLE_NAME, roleID.String())
  91. if err != nil {
  92. return models.UserRolePermissionTemplate{}, err
  93. }
  94. ur := models.UserRolePermissionTemplate{}
  95. err = json.Unmarshal([]byte(data), &ur)
  96. if err != nil {
  97. return ur, err
  98. }
  99. return ur, nil
  100. }
  101. // ListPlatformRoles - lists user platform roles permission templates
  102. func ListPlatformRoles() ([]models.UserRolePermissionTemplate, error) {
  103. data, err := database.FetchRecords(database.USER_PERMISSIONS_TABLE_NAME)
  104. if err != nil && !database.IsEmptyRecord(err) {
  105. return []models.UserRolePermissionTemplate{}, err
  106. }
  107. userRoles := []models.UserRolePermissionTemplate{}
  108. for _, dataI := range data {
  109. userRole := models.UserRolePermissionTemplate{}
  110. err := json.Unmarshal([]byte(dataI), &userRole)
  111. if err != nil {
  112. continue
  113. }
  114. if userRole.NetworkID != "" {
  115. continue
  116. }
  117. userRoles = append(userRoles, userRole)
  118. }
  119. return userRoles, nil
  120. }
  121. func userRolesInit() {
  122. d, _ := json.Marshal(SuperAdminPermissionTemplate)
  123. database.Insert(SuperAdminPermissionTemplate.ID.String(), string(d), database.USER_PERMISSIONS_TABLE_NAME)
  124. d, _ = json.Marshal(AdminPermissionTemplate)
  125. database.Insert(AdminPermissionTemplate.ID.String(), string(d), database.USER_PERMISSIONS_TABLE_NAME)
  126. }