Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- *
- * Created by eugenia on 20.07.16.
- */
- (function () {
- angular.module('app.users')
- .controller('UserManageController', UserManageController);
- //Added paymentsResolver as dependency injection
- function UserManageController($rootScope, paymentsResolver, $state, $stateParams, $q, Users, Authentication, WhiteLabels, Roles, _) {
- var vm = this;
- var usersResource;
- vm.isEdit = $state.current.data.isEdit;
- vm.isProfile = $state.current.data.isProfile;
- vm.isSuperAdmin = Authentication.user.isSuperAdmin();
- // Pass payment data to view as payments
- vm.payments = paymentsResolver;
- if (vm.isProfile) {
- $stateParams._id = $rootScope.user._id;
- }
- if (vm.isSuperAdmin) {
- usersResource = Users;
- vm.authLevels = [
- {
- name: 'Admin',
- value: window.config.authorityLevels.ADMIN
- },
- {
- name: 'WhiteLabel Admin',
- value: window.config.authorityLevels.WL_ADMIN
- },
- {
- name: 'User',
- value: window.config.authorityLevels.USER
- }
- ];
- } else {
- usersResource = vm.isProfile ? Users : WhiteLabels.one('my').all('users');
- }
- vm.loadWhiteLabels = function () {
- if (!vm.isSuperAdmin) {
- return;
- }
- return WhiteLabels.getList({perPage: 50})
- .then(function (res) {
- vm.whiteLabels = res;
- })
- .catch(function (err) {
- $rootScope.showError(err && err.data);
- });
- };
- vm.loadProjectsAmount = function () {
- return Users
- .one(vm.user.id).all('makes').one('count').get()
- .then(function (projects) {
- vm.user.projectsAmount = projects.count;
- });
- };
- /* helper functions */
- function prepareDates(user) {
- user.roles = _.map(user.roles, function (userRole) {
- return {
- grantedAt: typeof userRole.grantedAt === 'string' ? new Date(userRole.grantedAt) :
- userRole.grantedAt,
- revokedAt: typeof userRole.revokedAt === 'string' ? new Date(userRole.revokedAt) :
- userRole.revokedAt,
- role: userRole.role,
- originalRole: userRole.role,
- _id: userRole._id
- };
- });
- return user;
- }
- function initCreateUserController() {
- vm.createUser = function (user) {
- if (vm.isSuperAdmin) {
- user.whiteLabel = user.whiteLabel && user.whiteLabel._id || $rootScope.user.whiteLabel._id;
- }
- if (user.password !== user.verifyPassword) {
- return $rootScope.showError({message: 'Passwords should be equal!'});
- }
- return usersResource.post(user)
- .then(function (res) {
- $rootScope.showSuccessMessage({message: 'User has been created'});
- $state.go('app.users.edit', {_id: res._id});
- })
- .catch(function (err) {
- if (err && err.data && err.data.message === 'Validation error: Validation isEmail failed') {
- err.data.message = 'Invalid e-mail entered';
- }
- $rootScope.showError(err && err.data);
- });
- };
- }
- function initEditUserController() {
- return $q(function (resolve) {
- if (vm.isProfile) {
- return resolve($rootScope.user);
- }
- return resolve(usersResource.one($stateParams._id).get());
- })
- .then(function (user) {
- vm.user = _.extend({}, user);
- vm.rolesResource = vm.isSuperAdmin ?
- Roles :
- WhiteLabels
- .one('my')
- .all('roles');
- vm.user.projectsAmount = 0;
- return usersResource
- .one(user._id)
- .all('roles')
- .getList({page: 1, perPage: 100});
- })
- .then(function (userRoles) {
- return vm.rolesResource.getList({page: 1, perPage: 100})
- .then(function (roles) {
- if (!vm.isSuperAdmin) {
- vm.user.roles = _.filter(userRoles, function (userRole) {
- return _.find(roles, {_id: userRole.role});
- });
- } else {
- vm.user.roles = userRoles;
- }
- });
- })
- .then(function () {
- return prepareDates(vm.user);
- })
- .then(function (user) {
- vm.user = user;
- vm.originalUser = _.extend({}, user);
- vm.saveUser = function (user) {
- if (user.password !== user.verifyPassword) {
- return $rootScope.showError({message: 'Passwords must be equal!'});
- }
- user.whiteLabel = user.whiteLabel && user.whiteLabel._id;
- return usersResource.one($stateParams._id)
- .patch(user)
- .then(function (res) {
- prepareDates(res);
- vm.user = res;
- vm.originalUser = _.extend(vm.originalUser, res);
- if (res._id === $rootScope.user._id) {
- $rootScope.user = _.extend($rootScope.user, res);
- }
- // until whitelabel is not populated after insert
- vm.user.whiteLabel = _.find(vm.whiteLabels, {_id: res.whiteLabel});
- return $rootScope.showSuccessMessage({message: 'User has been saved'});
- })
- .catch(function (err) {
- if (err && err.data && err.data.message === 'Validation error: Validation isEmail failed') {
- err.data.message = 'Invalid e-mail entered';
- }
- $rootScope.showError(err && err.data);
- });
- };
- vm.deleteRole = function (role) {
- var isEdit = !role.isNew;
- if (isEdit) {
- return usersResource
- .one(vm.user._id)
- .all('roles')
- .one(role.role)
- .remove()
- .then(function () {
- vm.user.roles = _.reject(vm.user.roles, {_id: role._id});
- $rootScope.showSuccessMessage({message: 'Role has been deleted'})
- });
- } else {
- vm.user.roles = _.reject(vm.user.roles, role);
- }
- };
- vm.saveRole = function (userRole) {
- var isEdit = !userRole.isNew;
- var roleData = {
- role: userRole.role,
- grantedAt: userRole.grantedAt || null,
- revokedAt: userRole.revokedAt || null
- };
- if (!roleData.role) {
- return $rootScope.showError({message: 'Select role from dropdown'});
- }
- if (vm.isAddedRole(userRole.role)) {
- return $rootScope.showError({message: 'User is already granted with selected role!'});
- }
- var updatePromise = usersResource
- .one(vm.user._id)
- .all('roles')
- .customPUT(roleData)
- .then(function (roles) {
- if (!isEdit) {
- userRole._id = _.find(roles, {role: roleData.role})._id;
- delete userRole.isNew;
- }
- userRole.originalRole = userRole.role;
- return $rootScope.showSuccessMessage({message: 'Role has been saved'});
- })
- .catch(function (err) {
- $rootScope.showError(err && err.data);
- });
- if (userRole.originalRole !== roleData.role) {
- return usersResource
- .one(vm.user._id)
- .all('roles')
- .one(userRole.originalRole)
- .remove()
- .then(function () {
- return updatePromise;
- });
- } else {
- return updatePromise;
- }
- };
- vm.isAddedRole = function (_id) {
- var existingRoles = _.reject(vm.user.roles, {isNew: true});
- return _.filter(existingRoles, {role: _id}).length > 1;
- };
- vm.loadRoles = function () {
- return vm.rolesResource.getList({page: 1, perPage: 100})
- .then(function (roles) {
- vm.roles = _.map(roles, function (role) {
- if (!!_.find(vm.user.roles, {role: role._id})) {
- role.isAdded = true;
- }
- return role;
- });
- })
- .catch(function (err) {
- err = err && err.data || {};
- err.title = 'Unable to load roles';
- $rootScope.showError(err);
- });
- };
- vm.addRole = function () {
- var inserted = {
- isNew: true,
- grantedAt: null,
- revokedAt: null,
- };
- return vm.user.roles.unshift(inserted);
- };
- vm.resetPassword = function (data) {
- if (data.password !== data.verifyPassword) {
- $rootScope.showError({message: 'Passwords do not match'});
- return;
- }
- return usersResource
- .one(vm.user._id)
- .patch(data)
- .then(function () {
- $rootScope.showSuccessMessage({message: 'Password has been changed'});
- })
- .catch(function (err) {
- $rootScope.showError((err && err.data) || {message: 'Error occurred during resetting the password'});
- });
- };
- })
- .then(function () {
- return $q.all([vm.loadRoles(), vm.loadWhiteLabels(), vm.loadProjectsAmount()]);
- })
- .catch(function (err) {
- $rootScope.showError(err && err.data);
- });
- }
- // init controller
- if (vm.isEdit || vm.isProfile) {
- initEditUserController();
- } else {
- initCreateUserController();
- }
- // common things
- vm.returnToUsersList = function () {
- $state.go('app.users.list');
- };
- }
- }());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement