From 1a96e20a07e56cb4e2d12414720787178a668738 Mon Sep 17 00:00:00 2001 From: John Mitchell Date: Mon, 1 May 2017 15:27:30 -0400 Subject: [PATCH] tacacs ui implementation --- .../configuration-auth.controller.js | 31 ++++++++++ .../auth-form/configuration-auth.partial.html | 5 ++ .../auth-form/sub-forms/auth-tacacs.form.js | 58 +++++++++++++++++++ .../configuration/configuration.controller.js | 3 + awx/ui/client/src/configuration/main.js | 2 + 5 files changed, 99 insertions(+) create mode 100644 awx/ui/client/src/configuration/auth-form/sub-forms/auth-tacacs.form.js diff --git a/awx/ui/client/src/configuration/auth-form/configuration-auth.controller.js b/awx/ui/client/src/configuration/auth-form/configuration-auth.controller.js index f3cb9605e6..92657b68c9 100644 --- a/awx/ui/client/src/configuration/auth-form/configuration-auth.controller.js +++ b/awx/ui/client/src/configuration/auth-form/configuration-auth.controller.js @@ -18,6 +18,7 @@ export default [ 'configurationGoogleForm', 'configurationLdapForm', 'configurationRadiusForm', + 'configurationTacacsForm', 'configurationSamlForm', 'ConfigurationService', 'ConfigurationUtils', @@ -39,6 +40,7 @@ export default [ configurationGoogleForm, configurationLdapForm, configurationRadiusForm, + configurationTacacsForm, configurationSamlForm, ConfigurationService, ConfigurationUtils, @@ -107,6 +109,7 @@ export default [ {label: i18n._('Google OAuth2'), value: 'google_oauth'}, {label: i18n._('LDAP'), value: 'ldap'}, {label: i18n._('RADIUS'), value: 'radius'}, + {label: i18n._('TACACS+'), value: 'tacacs'}, {label: i18n._('SAML'), value: 'saml'} ]; @@ -143,6 +146,10 @@ export default [ formDef: configurationRadiusForm, id: 'auth-radius-form', name: 'radius' + }, { + formDef: configurationTacacsForm, + id: 'auth-tacacs-form', + name: 'tacacs' }, { formDef: configurationSamlForm, id: 'auth-saml-form', @@ -258,10 +265,33 @@ export default [ } } + function populateTacacsProtocol(flag){ + if($scope.$parent.TACACSPLUS_AUTH_PROTOCOL !== null) { + $scope.$parent.TACACSPLUS_AUTH_PROTOCOL = _.find($scope.$parent.TACACSPLUS_AUTH_PROTOCOL_options, { value: $scope.$parent.TACACSPLUS_AUTH_PROTOCOL }); + } + + if(flag !== undefined){ + dropdownRendered = flag; + } + + if(!dropdownRendered) { + dropdownRendered = true; + CreateSelect2({ + element: '#configuration_tacacs_template_TACACSPLUS_AUTH_PROTOCOL', + multiple: false, + placeholder: i18n._('Select group types'), + }); + } + } + $scope.$on('AUTH_LDAP_GROUP_TYPE_populated', function(e, data, flag) { populateLDAPGroupType(flag); }); + $scope.$on('TACACSPLUS_AUTH_PROTOCOL_populated', function(e, data, flag) { + populateTacacsProtocol(flag); + }); + $scope.$on('codeMirror_populated', function(e, key) { startCodeMirrors(key); }); @@ -269,6 +299,7 @@ export default [ $scope.$on('populated', function() { startCodeMirrors(); populateLDAPGroupType(false); + populateTacacsProtocol(false); }); angular.extend(authVm, { diff --git a/awx/ui/client/src/configuration/auth-form/configuration-auth.partial.html b/awx/ui/client/src/configuration/auth-form/configuration-auth.partial.html index 8004975a34..e1ffb3d9f4 100644 --- a/awx/ui/client/src/configuration/auth-form/configuration-auth.partial.html +++ b/awx/ui/client/src/configuration/auth-form/configuration-auth.partial.html @@ -48,6 +48,11 @@ +
+
+ +
+
diff --git a/awx/ui/client/src/configuration/auth-form/sub-forms/auth-tacacs.form.js b/awx/ui/client/src/configuration/auth-form/sub-forms/auth-tacacs.form.js new file mode 100644 index 0000000000..c003b4fb3e --- /dev/null +++ b/awx/ui/client/src/configuration/auth-form/sub-forms/auth-tacacs.form.js @@ -0,0 +1,58 @@ +/************************************************* + * Copyright (c) 2016 Ansible, Inc. + * + * All Rights Reserved + *************************************************/ + +export default ['i18n', function(i18n) { + return { + // editTitle: 'Authorization Configuration', + name: 'configuration_tacacs_template', + showActions: true, + showHeader: false, + + fields: { + TACACSPLUS_HOST: { + type: 'text', + reset: 'TACACSPLUS_HOST' + }, + TACACSPLUS_PORT: { + type: 'text', + reset: 'TACACSPLUS_PORT' + }, + TACACSPLUS_SECRET: { + type: 'sensitive', + hasShowInputButton: true, + reset: 'TACACSPLUS_SECRET' + }, + TACACSPLUS_SESSION_TIMEOUT: { + type: 'number', + integer: true, + spinner: true, + min: 0, + reset: 'TACACSPLUS_SESSION_TIMEOUT' + }, + TACACSPLUS_AUTH_PROTOCOL: { + type: 'select', + reset: 'TACACSPLUS_AUTH_PROTOCOL', + ngOptions: 'protocol.label for protocol in TACACSPLUS_AUTH_PROTOCOL_options track by protocol.value' + } + }, + + buttons: { + reset: { + ngClick: 'vm.resetAllConfirm()', + label: i18n._('Revert all to default'), + class: 'Form-resetAll' + }, + cancel: { + ngClick: 'vm.formCancel()', + }, + save: { + ngClick: 'vm.formSave()', + ngDisabled: true + } + } + }; +} +]; diff --git a/awx/ui/client/src/configuration/configuration.controller.js b/awx/ui/client/src/configuration/configuration.controller.js index 16f40901db..9844ab5178 100644 --- a/awx/ui/client/src/configuration/configuration.controller.js +++ b/awx/ui/client/src/configuration/configuration.controller.js @@ -16,6 +16,7 @@ export default [ 'configurationGoogleForm', 'configurationLdapForm', 'configurationRadiusForm', + 'configurationTacacsForm', 'configurationSamlForm', 'systemActivityStreamForm', 'systemLoggingForm', @@ -34,6 +35,7 @@ export default [ configurationGoogleForm, configurationLdapForm, configurationRadiusForm, + configurationTacacsForm, configurationSamlForm, systemActivityStreamForm, systemLoggingForm, @@ -51,6 +53,7 @@ export default [ 'google_oauth': configurationGoogleForm, 'ldap': configurationLdapForm, 'radius': configurationRadiusForm, + 'tacacs': configurationTacacsForm, 'saml': configurationSamlForm, 'activity_stream': systemActivityStreamForm, 'logging': systemLoggingForm, diff --git a/awx/ui/client/src/configuration/main.js b/awx/ui/client/src/configuration/main.js index f37bab3d84..40715249b1 100644 --- a/awx/ui/client/src/configuration/main.js +++ b/awx/ui/client/src/configuration/main.js @@ -18,6 +18,7 @@ import configurationGithubTeamForm from './auth-form/sub-forms/auth-github-team. import configurationGoogleForm from './auth-form/sub-forms/auth-google-oauth2.form'; import configurationLdapForm from './auth-form/sub-forms/auth-ldap.form.js'; import configurationRadiusForm from './auth-form/sub-forms/auth-radius.form.js'; +import configurationTacacsForm from './auth-form/sub-forms/auth-tacacs.form.js'; import configurationSamlForm from './auth-form/sub-forms/auth-saml.form'; //system sub-forms @@ -39,6 +40,7 @@ angular.module('configuration', []) .factory('configurationGoogleForm', configurationGoogleForm) .factory('configurationLdapForm', configurationLdapForm) .factory('configurationRadiusForm', configurationRadiusForm) + .factory('configurationTacacsForm', configurationTacacsForm) .factory('configurationSamlForm', configurationSamlForm) //system forms .factory('systemActivityStreamForm', systemActivityStreamForm)