You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

lupermissionsedit.js 7.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. /**
  2. * Created by robin on 11/4/15.
  3. */
  4. angular.module('luticateUtils')
  5. .directive('luPermissionEdit', ['dialogs', 'luticateDialogErrorHelper', 'luticateAuthPermissions', 'luticateAuthCache',
  6. function(dialogs, luticateDialogErrorHelper, luticateAuthPermissions, luticateAuthCache) {
  7. return {
  8. restrict: 'E',
  9. scope: {
  10. luModel: '&'
  11. },
  12. templateUrl: "/luticate/lupermissionedit.html",
  13. link: function ($scope, element, attrs) {
  14. $scope.permissions = [];
  15. $scope.allPermissions = [];
  16. $scope.allPermissionsCleared = [];
  17. $scope.tmpPermission = {
  18. Name: "",
  19. Value: true
  20. };
  21. $scope.luModelOptions = $scope.luModel();
  22. $scope.editPermission = function(permission, value)
  23. {
  24. var promiseEditPermission = {
  25. id: "promiseEditPermission_" + permission.Name,
  26. loaderGroups: ['permission_' + permission.Name]
  27. };
  28. $scope.luModelOptions.getEditPermissionPromise(permission.Name, value, promiseEditPermission)
  29. .then(function(data)
  30. {
  31. permission.Value = value;
  32. }, luticateDialogErrorHelper.errorDialog);
  33. };
  34. $scope.delPermission = function(permission)
  35. {
  36. var promiseDelPermission = {
  37. id: "promiseDelPermission_" + permission.Name,
  38. loaderGroups: ['permission_' + permission.Name]
  39. };
  40. $scope.luModelOptions.getDelPermissionPromise(permission.Name, promiseDelPermission)
  41. .then(function(data)
  42. {
  43. $scope.loadPermissions();
  44. }, luticateDialogErrorHelper.errorDialog);
  45. };
  46. $scope.addPermission = function(permission)
  47. {
  48. var promiseAddPermission = {
  49. id: "promiseAddPermission_" + permission.Name,
  50. loaderGroups: ['permission_add']
  51. };
  52. $scope.luModelOptions.getAddPermissionPromise(permission.Name, permission.Value, promiseAddPermission)
  53. .then(function(data)
  54. {
  55. $scope.loadPermissions();
  56. }, luticateDialogErrorHelper.errorDialog);
  57. };
  58. $scope.loadPermissions = function() {
  59. var promiseLoadPermissions = {
  60. id: "promiseLoadPermissions_",
  61. groups: ['permissionList']
  62. };
  63. $scope.luModelOptions.getGetAllPromise(null, null, promiseLoadPermissions)
  64. .then(function (permissions) {
  65. $scope.permissions = permissions.Data;
  66. $scope.allPermissionsCleared = [];
  67. for (var i = 0; i < $scope.allPermissions.length; ++i) {
  68. var p = $scope.allPermissions[i];
  69. if ($scope.permissions.find(function(p2)
  70. {
  71. return p.Name == p2.Name;
  72. }) == null) {
  73. $scope.allPermissionsCleared.push(p);
  74. }
  75. }
  76. if ($scope.allPermissionsCleared.length > 0) {
  77. $scope.tmpPermission.Name = $scope.allPermissionsCleared[0].Name;
  78. }
  79. else {
  80. $scope.tmpPermission.Name = "";
  81. }
  82. }, luticateDialogErrorHelper.errorDialog);
  83. };
  84. $scope.loadAllPermissions = function() {
  85. var promiseLoadAllPermissions = {
  86. id: "promiseLoadAllPermissions",
  87. groups: ['permissionList']
  88. };
  89. luticateAuthPermissions.getAll(null, promiseLoadAllPermissions)
  90. .then(function (permissions) {
  91. $scope.allPermissions = permissions.Data;
  92. $scope.loadPermissions();
  93. }, luticateDialogErrorHelper.errorDialog);
  94. };
  95. if (luticateAuthCache.hasEffectivePermission('LU_PERM_GET')) {
  96. $scope.loadAllPermissions();
  97. }
  98. else {
  99. $scope.loadPermissions();
  100. }
  101. }
  102. };
  103. }]);
  104. angular.module('luticateUtils').run(['$templateCache', function($templateCache)
  105. {
  106. $templateCache.put('/luticate/lupermissionedit.html', '<div class="col-sm-12">' +
  107. ' <div class="form-group form-horizontal col-sm-12" lu-busy="permissionList">' +
  108. ' <div class="col-sm-6 form-group" ng-repeat="permission in permissions" lu-busy="{group: \'permission_\' + permission.Name}">' +
  109. ' <label class="col-sm-6 control-label" title="{{ permission.Name }}">{{ permission.Name }}</label>' +
  110. '<div class="col-sm-6">' +
  111. ' <div class="btn-group">' +
  112. ' <button class="btn btn-primary dropdown-toggle btn-select" data-toggle="dropdown" href="" lu-enable-permission="{{ luModelOptions.permissions.edit }}">' +
  113. ' {{ permission.Value ? \'Allow\' : \'Disallow\' }} <span class="caret"></span>' +
  114. ' </button>' +
  115. ' <ul class="dropdown-menu">' +
  116. ' <li><a href="" ng-click="editPermission(permission, false)">Disallow</a></li>' +
  117. '<li><a href="" ng-click="editPermission(permission, true)">Allow</a></li>' +
  118. '</ul>' +
  119. '</div>' +
  120. '<div class="btn-group">' +
  121. ' <button type="button" class="btn btn-danger" ng-click="delPermission(permission)" lu-show-permission="{{ luModelOptions.permissions.del }}">' +
  122. ' <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>' +
  123. ' </button>' +
  124. ' </div>' +
  125. ' </div>' +
  126. ' </div>' +
  127. ' </div>' +
  128. ' <div class="clearfix"></div>' +
  129. ' <div class="col-sm-12" lu-busy="permission_add" lu-show-permission="{{ luModelOptions.permissions.add }}">' +
  130. ' <div class="btn-group">' +
  131. ' <button class="btn btn-primary dropdown-toggle btn-select" data-toggle="dropdown" href="">' +
  132. ' {{ tmpPermission.Name }} <span class="caret"></span>' +
  133. ' </button>' +
  134. ' <ul class="dropdown-menu">' +
  135. ' <li ng-repeat="permission in allPermissionsCleared">' +
  136. ' <a href="" ng-click="tmpPermission.Name = permission.Name">{{ permission.Name}}</a>' +
  137. '</li>' +
  138. '</ul>' +
  139. '</div>' +
  140. '<div class="btn-group">' +
  141. ' <button class="btn btn-primary dropdown-toggle btn-select" data-toggle="dropdown" href="">' +
  142. ' {{ tmpPermission.Value ? \'Allow\' : \'Disallow\' }} <span class="caret"></span>' +
  143. ' </button>' +
  144. ' <ul class="dropdown-menu">' +
  145. ' <li><a href="" ng-click="tmpPermission.Value = false">Disallow</a></li>' +
  146. '<li><a href="" ng-click="tmpPermission.Value = true">Allow</a></li>' +
  147. '</ul>' +
  148. '</div>' +
  149. '<button type="button" class="btn btn-primary" ng-click="addPermission(tmpPermission)" ng-disabled="allPermissionsCleared.length == 0">' +
  150. ' <span class="glyphicon glyphicon-plus" aria-hidden="true"></span> Add' +
  151. ' </button>' +
  152. ' </div>' +
  153. ' </div>');
  154. }]);