Group.js 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. /**
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing, software
  13. * distributed under the License is distributed on an "AS IS" BASIS,
  14. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. * See the License for the specific language governing permissions and
  16. * limitations under the License.
  17. */
  18. 'use strict';
  19. angular.module('ambariAdminConsole')
  20. .factory('Group', ['$http', '$q', 'Settings', function($http, $q, Settings) {
  21. function Group(item){
  22. if(typeof item === 'string'){
  23. this.group_name = item;
  24. } else if(typeof item === 'object'){
  25. angular.extend(this, item.Groups);
  26. this.getMembers();
  27. }
  28. }
  29. Group.prototype.isLDAP = function() {
  30. var deferred = $q.defer();
  31. var self = this;
  32. if( typeof this.ldap_group === 'boolean' ){
  33. deferred.resolve(this.ldap_group)
  34. } else {
  35. $http({
  36. method: 'GET',
  37. url: Settings.baseUrl + '/groups/'+this.group_name
  38. }).
  39. success(function(data) {
  40. self.ldap_group = data.Groups.ldap_group;
  41. deferred.resolve(self.ldap_group);
  42. });
  43. }
  44. return deferred.promise;
  45. }
  46. Group.prototype.save = function() {
  47. return $http({
  48. method : 'POST',
  49. url: Settings.baseUrl + '/groups',
  50. data:{
  51. 'Groups/group_name': this.group_name
  52. }
  53. });
  54. };
  55. Group.prototype.destroy = function() {
  56. var deferred = $q.defer();
  57. $http.delete(Settings.baseUrl + '/groups/' +this.group_name)
  58. .success(function() {
  59. deferred.resolve();
  60. })
  61. .error(function(data) {
  62. deferred.reject(data);
  63. });
  64. return deferred.promise;
  65. };
  66. Group.prototype.getMembers = function() {
  67. var deferred = $q.defer();
  68. var self = this;
  69. $http({
  70. method: 'GET',
  71. url: Settings.baseUrl + '/groups/' + this.group_name + '/members'
  72. })
  73. .success(function(data) {
  74. self.members = [];
  75. angular.forEach(data.items, function(member) {
  76. self.members.push(member.MemberInfo.user_name);
  77. });
  78. deferred.resolve(self.members);
  79. })
  80. .error(function(data) {
  81. deferred.reject(data);
  82. });
  83. return deferred.promise;
  84. };
  85. Group.prototype.saveMembers = function() {
  86. var self = this;
  87. var deferred = $q.defer();
  88. var members = [];
  89. angular.forEach(this.members, function(member) {
  90. members.push({
  91. 'MemberInfo/user_name' : member,
  92. 'MemberInfo/group_name' : self.group_name
  93. });
  94. });
  95. $http({
  96. method: 'PUT',
  97. url: Settings.baseUrl + '/groups/' + this.group_name + '/members',
  98. data: members
  99. })
  100. .success(function(data) {
  101. deferred.resolve(data);
  102. })
  103. .error(function(data) {
  104. deferred.reject(data);
  105. });
  106. return deferred.promise;
  107. }
  108. Group.prototype.addMember = function(memberName) {
  109. var deferred = $q.defer();
  110. $http({
  111. method: 'POST',
  112. url: Settings.baseUrl + '/groups/' + this.group_name + '/members' + '/'+ encodeURIComponent(member.user_name)
  113. })
  114. .success(function(data) {
  115. deferred.resolve(data)
  116. })
  117. .error(function(data) {
  118. deferred.reject(data);
  119. });
  120. return deferred.promise;
  121. };
  122. Group.prototype.removeMember = function(memberId) {
  123. return $http.delete(Settings.baseUrl + '/groups/'+this.group_name+'/members/'+memberId);
  124. };
  125. Group.removeMemberFromGroup = function(groupName, memberName) {
  126. return $http.delete(Settings.baseUrl + '/groups/'+groupName + '/members/'+memberName);
  127. };
  128. Group.addMemberToGroup = function(groupName, memberName) {
  129. return $http.post(Settings.baseUrl + '/groups/' + groupName + '/members/'+memberName);
  130. };
  131. Group.all = function(params) {
  132. var deferred = $q.defer();
  133. $http.get(Settings.baseUrl + '/groups?'
  134. + 'Groups/group_name.matches(.*'+params.searchString+'.*)'
  135. + '&fields=*'
  136. + '&from='+ (params.currentPage-1)*params.groupsPerPage
  137. + '&page_size=' + params.groupsPerPage
  138. + (params.ldap_group === '*' ? '' : '&Groups/ldap_group='+params.ldap_group)
  139. )
  140. .success(function(data) {
  141. var groups = [];
  142. if(Array.isArray(data.items)){
  143. angular.forEach(data.items, function(item) {
  144. groups.push(new Group(item));
  145. });
  146. }
  147. groups.itemTotal = data.itemTotal;
  148. deferred.resolve(groups);
  149. })
  150. .error(function(data) {
  151. deferred.reject(data);
  152. });
  153. return deferred.promise;
  154. };
  155. Group.listByName = function(name) {
  156. return $http.get(Settings.baseUrl + '/groups?'
  157. + 'Groups/group_name.matches(.*'+name+'.*)'
  158. );
  159. };
  160. Group.getPrivileges = function(groupId) {
  161. return $http.get(Settings.baseUrl + '/privileges', {
  162. params:{
  163. 'PrivilegeInfo/principal_type': 'GROUP',
  164. 'PrivilegeInfo/principal_name': groupId,
  165. 'fields': '*'
  166. }
  167. });
  168. };
  169. return Group;
  170. }]);