Files
awx/awx/ui/client/src/users/main.js
Jared Tabor 1b67755358 Cleanup to users' state tree
In order to add additional route flexibility for the users-tokens states

Removes unnecessary ui-view from form-generator

Adjust nested ui-view target

found during PR feedback
2018-07-11 16:45:20 -07:00

115 lines
4.6 KiB
JavaScript

/*************************************************
* Copyright (c) 2016 Ansible, Inc.
*
* All Rights Reserved
*************************************************/
import UsersList from './list/users-list.controller';
import UsersAdd from './add/users-add.controller';
import UsersEdit from './edit/users-edit.controller';
import UserForm from './users.form';
import UserList from './users.list';
import userListRoute from './users.route';
import UserTokensListRoute from '../../features/users/tokens/users-tokens-list.route';
import UserTokensAddRoute from '../../features/users/tokens/users-tokens-add.route';
import UserTokensAddApplicationRoute from '../../features/users/tokens/users-tokens-add-application.route';
export default
angular.module('Users', [])
.controller('UsersList', UsersList)
.controller('UsersAdd', UsersAdd)
.controller('UsersEdit', UsersEdit)
.factory('UserForm', UserForm)
.factory('UserList', UserList)
.config(['$stateProvider', 'stateDefinitionsProvider', '$stateExtenderProvider',
function($stateProvider, stateDefinitionsProvider, $stateExtenderProvider) {
let stateDefinitions = stateDefinitionsProvider.$get();
let stateExtender = $stateExtenderProvider.$get();
function generateStateTree() {
let userAdd = stateDefinitions.generateTree({
name: 'users.add',
url: '/add',
modes: ['add'],
form: 'UserForm',
controllers: {
add: 'UsersAdd'
},
resolve: {
add: {
canAdd: ['rbacUiControlService', '$state', function(rbacUiControlService, $state) {
return rbacUiControlService.canAdd('users')
.then(function(res) {
return res.canAdd;
})
.catch(function() {
$state.go('users');
});
}],
resolvedModels: ['MeModel', '$q', function(Me, $q) {
const promises= {
me: new Me('get').then((me) => me.extend('get', 'admin_of_organizations'))
};
return $q.all(promises);
}]
}
}
});
let userEdit = stateDefinitions.generateTree({
name: 'users.edit',
url: '/:user_id',
modes: ['edit'],
form: 'UserForm',
parent: 'users',
controllers: {
edit: 'UsersEdit'
},
data: {
activityStream: true,
activityStreamTarget: 'user'
},
breadcrumbs: {
edit: "{{breadcrumb.user_name}}"
},
resolve: {
edit: {
resolvedModels: ['MeModel', '$q', function(Me, $q) {
const promises= {
me: new Me('get').then((me) => me.extend('get', 'admin_of_organizations'))
};
return $q.all(promises);
}]
}
},
});
return Promise.all([
userAdd,
userEdit
]).then((generated) => {
return {
states: _.reduce(generated, (result, definition) => {
return result.concat(definition.states);
}, [
stateExtender.buildDefinition(userListRoute),
stateExtender.buildDefinition(UserTokensListRoute),
stateExtender.buildDefinition(UserTokensAddRoute),
stateExtender.buildDefinition(UserTokensAddApplicationRoute)
])
};
});
}
$stateProvider.state({
name: 'users.**',
url: '/users',
lazyLoad: () => generateStateTree()
});
}
]);