Advertisement
Guest User

Untitled

a guest
Jul 17th, 2017
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.09 KB | None | 0 0
  1. /**
  2. *
  3. * Created by eugenia on 20.07.16.
  4. */
  5.  
  6. (function () {
  7. angular.module('app.users')
  8. .controller('UserManageController', UserManageController);
  9. //Added paymentsResolver as dependency injection
  10. function UserManageController($rootScope, paymentsResolver, $state, $stateParams, $q, Users, Authentication, WhiteLabels, Roles, _) {
  11. var vm = this;
  12. var usersResource;
  13.  
  14. vm.isEdit = $state.current.data.isEdit;
  15. vm.isProfile = $state.current.data.isProfile;
  16. vm.isSuperAdmin = Authentication.user.isSuperAdmin();
  17. // Pass payment data to view as payments
  18. vm.payments = paymentsResolver;
  19. if (vm.isProfile) {
  20. $stateParams._id = $rootScope.user._id;
  21. }
  22.  
  23. if (vm.isSuperAdmin) {
  24. usersResource = Users;
  25.  
  26. vm.authLevels = [
  27. {
  28. name: 'Admin',
  29. value: window.config.authorityLevels.ADMIN
  30. },
  31. {
  32. name: 'WhiteLabel Admin',
  33. value: window.config.authorityLevels.WL_ADMIN
  34. },
  35. {
  36. name: 'User',
  37. value: window.config.authorityLevels.USER
  38. }
  39. ];
  40. } else {
  41. usersResource = vm.isProfile ? Users : WhiteLabels.one('my').all('users');
  42. }
  43.  
  44. vm.loadWhiteLabels = function () {
  45.  
  46. if (!vm.isSuperAdmin) {
  47. return;
  48. }
  49.  
  50. return WhiteLabels.getList({perPage: 50})
  51. .then(function (res) {
  52. vm.whiteLabels = res;
  53. })
  54. .catch(function (err) {
  55. $rootScope.showError(err && err.data);
  56. });
  57.  
  58. };
  59.  
  60. vm.loadProjectsAmount = function () {
  61. return Users
  62. .one(vm.user.id).all('makes').one('count').get()
  63. .then(function (projects) {
  64. vm.user.projectsAmount = projects.count;
  65. });
  66. };
  67.  
  68.  
  69. /* helper functions */
  70. function prepareDates(user) {
  71. user.roles = _.map(user.roles, function (userRole) {
  72. return {
  73. grantedAt: typeof userRole.grantedAt === 'string' ? new Date(userRole.grantedAt) :
  74. userRole.grantedAt,
  75. revokedAt: typeof userRole.revokedAt === 'string' ? new Date(userRole.revokedAt) :
  76. userRole.revokedAt,
  77. role: userRole.role,
  78. originalRole: userRole.role,
  79. _id: userRole._id
  80. };
  81. });
  82.  
  83. return user;
  84. }
  85.  
  86. function initCreateUserController() {
  87.  
  88. vm.createUser = function (user) {
  89. if (vm.isSuperAdmin) {
  90. user.whiteLabel = user.whiteLabel && user.whiteLabel._id || $rootScope.user.whiteLabel._id;
  91. }
  92.  
  93. if (user.password !== user.verifyPassword) {
  94. return $rootScope.showError({message: 'Passwords should be equal!'});
  95. }
  96. return usersResource.post(user)
  97. .then(function (res) {
  98. $rootScope.showSuccessMessage({message: 'User has been created'});
  99. $state.go('app.users.edit', {_id: res._id});
  100. })
  101. .catch(function (err) {
  102. if (err && err.data && err.data.message === 'Validation error: Validation isEmail failed') {
  103. err.data.message = 'Invalid e-mail entered';
  104. }
  105. $rootScope.showError(err && err.data);
  106. });
  107. };
  108. }
  109.  
  110. function initEditUserController() {
  111. return $q(function (resolve) {
  112. if (vm.isProfile) {
  113. return resolve($rootScope.user);
  114. }
  115. return resolve(usersResource.one($stateParams._id).get());
  116. })
  117. .then(function (user) {
  118. vm.user = _.extend({}, user);
  119. vm.rolesResource = vm.isSuperAdmin ?
  120. Roles :
  121. WhiteLabels
  122. .one('my')
  123. .all('roles');
  124. vm.user.projectsAmount = 0;
  125. return usersResource
  126. .one(user._id)
  127. .all('roles')
  128. .getList({page: 1, perPage: 100});
  129. })
  130. .then(function (userRoles) {
  131. return vm.rolesResource.getList({page: 1, perPage: 100})
  132. .then(function (roles) {
  133. if (!vm.isSuperAdmin) {
  134. vm.user.roles = _.filter(userRoles, function (userRole) {
  135. return _.find(roles, {_id: userRole.role});
  136. });
  137. } else {
  138. vm.user.roles = userRoles;
  139. }
  140. });
  141. })
  142. .then(function () {
  143. return prepareDates(vm.user);
  144. })
  145. .then(function (user) {
  146. vm.user = user;
  147. vm.originalUser = _.extend({}, user);
  148.  
  149. vm.saveUser = function (user) {
  150. if (user.password !== user.verifyPassword) {
  151. return $rootScope.showError({message: 'Passwords must be equal!'});
  152. }
  153.  
  154. user.whiteLabel = user.whiteLabel && user.whiteLabel._id;
  155. return usersResource.one($stateParams._id)
  156. .patch(user)
  157. .then(function (res) {
  158. prepareDates(res);
  159. vm.user = res;
  160. vm.originalUser = _.extend(vm.originalUser, res);
  161. if (res._id === $rootScope.user._id) {
  162. $rootScope.user = _.extend($rootScope.user, res);
  163. }
  164.  
  165. // until whitelabel is not populated after insert
  166. vm.user.whiteLabel = _.find(vm.whiteLabels, {_id: res.whiteLabel});
  167. return $rootScope.showSuccessMessage({message: 'User has been saved'});
  168. })
  169. .catch(function (err) {
  170. if (err && err.data && err.data.message === 'Validation error: Validation isEmail failed') {
  171. err.data.message = 'Invalid e-mail entered';
  172. }
  173. $rootScope.showError(err && err.data);
  174. });
  175. };
  176.  
  177. vm.deleteRole = function (role) {
  178. var isEdit = !role.isNew;
  179.  
  180. if (isEdit) {
  181. return usersResource
  182. .one(vm.user._id)
  183. .all('roles')
  184. .one(role.role)
  185. .remove()
  186. .then(function () {
  187. vm.user.roles = _.reject(vm.user.roles, {_id: role._id});
  188. $rootScope.showSuccessMessage({message: 'Role has been deleted'})
  189. });
  190. } else {
  191. vm.user.roles = _.reject(vm.user.roles, role);
  192. }
  193.  
  194. };
  195.  
  196. vm.saveRole = function (userRole) {
  197. var isEdit = !userRole.isNew;
  198. var roleData = {
  199. role: userRole.role,
  200. grantedAt: userRole.grantedAt || null,
  201. revokedAt: userRole.revokedAt || null
  202. };
  203. if (!roleData.role) {
  204. return $rootScope.showError({message: 'Select role from dropdown'});
  205. }
  206.  
  207. if (vm.isAddedRole(userRole.role)) {
  208. return $rootScope.showError({message: 'User is already granted with selected role!'});
  209. }
  210.  
  211. var updatePromise = usersResource
  212. .one(vm.user._id)
  213. .all('roles')
  214. .customPUT(roleData)
  215. .then(function (roles) {
  216.  
  217. if (!isEdit) {
  218. userRole._id = _.find(roles, {role: roleData.role})._id;
  219. delete userRole.isNew;
  220. }
  221. userRole.originalRole = userRole.role;
  222.  
  223. return $rootScope.showSuccessMessage({message: 'Role has been saved'});
  224. })
  225. .catch(function (err) {
  226. $rootScope.showError(err && err.data);
  227. });
  228.  
  229. if (userRole.originalRole !== roleData.role) {
  230. return usersResource
  231. .one(vm.user._id)
  232. .all('roles')
  233. .one(userRole.originalRole)
  234. .remove()
  235. .then(function () {
  236. return updatePromise;
  237. });
  238. } else {
  239. return updatePromise;
  240. }
  241. };
  242.  
  243. vm.isAddedRole = function (_id) {
  244. var existingRoles = _.reject(vm.user.roles, {isNew: true});
  245. return _.filter(existingRoles, {role: _id}).length > 1;
  246. };
  247.  
  248. vm.loadRoles = function () {
  249. return vm.rolesResource.getList({page: 1, perPage: 100})
  250. .then(function (roles) {
  251. vm.roles = _.map(roles, function (role) {
  252.  
  253. if (!!_.find(vm.user.roles, {role: role._id})) {
  254. role.isAdded = true;
  255. }
  256.  
  257. return role;
  258. });
  259. })
  260. .catch(function (err) {
  261. err = err && err.data || {};
  262. err.title = 'Unable to load roles';
  263. $rootScope.showError(err);
  264. });
  265. };
  266.  
  267. vm.addRole = function () {
  268. var inserted = {
  269. isNew: true,
  270. grantedAt: null,
  271. revokedAt: null,
  272. };
  273.  
  274. return vm.user.roles.unshift(inserted);
  275. };
  276.  
  277. vm.resetPassword = function (data) {
  278. if (data.password !== data.verifyPassword) {
  279. $rootScope.showError({message: 'Passwords do not match'});
  280. return;
  281. }
  282.  
  283. return usersResource
  284. .one(vm.user._id)
  285. .patch(data)
  286. .then(function () {
  287. $rootScope.showSuccessMessage({message: 'Password has been changed'});
  288. })
  289. .catch(function (err) {
  290. $rootScope.showError((err && err.data) || {message: 'Error occurred during resetting the password'});
  291. });
  292. };
  293. })
  294. .then(function () {
  295. return $q.all([vm.loadRoles(), vm.loadWhiteLabels(), vm.loadProjectsAmount()]);
  296. })
  297. .catch(function (err) {
  298. $rootScope.showError(err && err.data);
  299. });
  300. }
  301.  
  302. // init controller
  303. if (vm.isEdit || vm.isProfile) {
  304. initEditUserController();
  305. } else {
  306. initCreateUserController();
  307. }
  308.  
  309. // common things
  310. vm.returnToUsersList = function () {
  311. $state.go('app.users.list');
  312. };
  313. }
  314. }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement