From 2a703b7a76acf3d768a055f367118377e3c106e2 Mon Sep 17 00:00:00 2001 From: pengyuesheng Date: Thu, 22 Nov 2018 15:36:49 +0800 Subject: [PATCH] When creating a role, check if the role already exists Change-Id: I0b8574ddbad36751b5f7246403d15cf5fd7cdfae --- .../roles/actions/create.action.service.js | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/openstack_dashboard/dashboards/identity/static/dashboard/identity/roles/actions/create.action.service.js b/openstack_dashboard/dashboards/identity/static/dashboard/identity/roles/actions/create.action.service.js index f115195efd..3b293e4742 100644 --- a/openstack_dashboard/dashboards/identity/static/dashboard/identity/roles/actions/create.action.service.js +++ b/openstack_dashboard/dashboards/identity/static/dashboard/identity/roles/actions/create.action.service.js @@ -51,6 +51,21 @@ gettext, toast ) { + var invalidMsg = gettext("Role already exists."); + var roles = []; + var form = [ + { + key: "name", + validationMessage: { + rolesExists: invalidMsg + }, + $validators: { + rolesExists: function (name) { + return (roles.indexOf(name) === -1); + } + } + } + ]; var service = { allowed: allowed, perform: perform, @@ -69,12 +84,13 @@ } function perform() { + getRoles(); var model = {name: ''}; var config = { title: gettext('Create Role'), schema: schema, - form: ['*'], + form: form, model: model, size: 'md' }; @@ -95,6 +111,16 @@ .result; } + function getRoles() { + keystoneAPI.getRoles().then(function(response) { + roles = response.data.items.map(getName); + }); + } + + function getName(item) { + return item.name; + } + } })();