From 79304cb93536b12664b0e3405d5320ca81b72def Mon Sep 17 00:00:00 2001 From: brasseld Date: Thu, 15 Dec 2016 23:39:17 +0100 Subject: [PATCH] feat(security): Add multiple security implementations and manage security by plan Closes gravitee-io/issues#379 --- src/app/api/admin/plans/apiPlans.controller.js | 8 ++++++++ src/app/api/admin/plans/apiPlans.html | 17 ++++++++++++++--- src/app/api/admin/plans/closePlan.dialog.html | 7 +++++-- .../admin/plans/closePlanDialog.controller.js | 2 +- .../admin/plans/publishPlanDialog.controller.js | 1 - src/app/api/portal/plan/apiPlan.html | 8 ++++++-- src/app/services/api.service.js | 3 ++- 7 files changed, 36 insertions(+), 10 deletions(-) diff --git a/src/app/api/admin/plans/apiPlans.controller.js b/src/app/api/admin/plans/apiPlans.controller.js index a533cf1c5e..53465412d2 100644 --- a/src/app/api/admin/plans/apiPlans.controller.js +++ b/src/app/api/admin/plans/apiPlans.controller.js @@ -27,6 +27,14 @@ class ApiPlansController { this.dndEnabled = true; this.statusFilters = ['staging', 'published', 'closed']; this.selectedStatus = ['published']; + this.securityTypes = [ + { + 'id': 'api_key', + 'name': 'API Key' + }, { + 'id': 'key_less', + 'name': 'Keyless (public)' + }]; $scope.planEdit = true; diff --git a/src/app/api/admin/plans/apiPlans.html b/src/app/api/admin/plans/apiPlans.html index 628b40e53d..ac40dcfa5c 100644 --- a/src/app/api/admin/plans/apiPlans.html +++ b/src/app/api/admin/plans/apiPlans.html @@ -87,7 +87,7 @@

-

{{plan.description}}

+

{{plan.description}} ({{plan.security}})

{{characteristic}}
@@ -97,10 +97,14 @@
{{characteristic}}
- {{plan.alreadySubscribed ? 'Subscribed' : (plan.validation === 'auto'?'Subscribe': 'Request for subscription')}} + + No subscription required +
@@ -150,6 +154,13 @@

+ + + + {{type.name}} + + + ng-model="plan.validation" ng-true-value="'auto'" ng-disabled="plan.security == 'key_less'" ng-false-value="'manual'">

diff --git a/src/app/api/admin/plans/closePlan.dialog.html b/src/app/api/admin/plans/closePlan.dialog.html index 0bf3076083..08d2cdffe8 100644 --- a/src/app/api/admin/plans/closePlan.dialog.html +++ b/src/app/api/admin/plans/closePlan.dialog.html @@ -26,7 +26,7 @@

Close plan

-
+
No subscription is associated to this plan. You can delete it safely.
There are {{subscriptions}} active subscriptions associated to this plan.

@@ -34,6 +34,9 @@

There are {{subscriptions}} active su available.

+
+
Are you sure to close the plan {{plan.name}}?
+
@@ -41,7 +44,7 @@
There are {{subscriptions}} active su Cancel - {{subscriptions == 0 ? 'Delete' : 'Close'}} + {{subscriptions == 0 && plan.security == 'api_key' ? 'Delete' : 'Close'}} diff --git a/src/app/api/admin/plans/closePlanDialog.controller.js b/src/app/api/admin/plans/closePlanDialog.controller.js index ff4824904f..d1fe9d07c0 100644 --- a/src/app/api/admin/plans/closePlanDialog.controller.js +++ b/src/app/api/admin/plans/closePlanDialog.controller.js @@ -25,7 +25,7 @@ function DialogClosePlanController($scope, $mdDialog, ApiService, NotificationSe }; $scope.close = function () { - if ($scope.subscriptions === 0) { + if ($scope.plan.security === 'api_key' && $scope.subscriptions === 0) { ApiService.deletePlan($scope.apiId, $scope.plan.id).then(function() { NotificationService.show('Plan ' + plan.name + ' has been deleted'); }).catch(function (error) { diff --git a/src/app/api/admin/plans/publishPlanDialog.controller.js b/src/app/api/admin/plans/publishPlanDialog.controller.js index 279a05af07..1b65f2e4b3 100644 --- a/src/app/api/admin/plans/publishPlanDialog.controller.js +++ b/src/app/api/admin/plans/publishPlanDialog.controller.js @@ -27,7 +27,6 @@ function DialogPublishPlanController($scope, $mdDialog, ApiService, Notification ApiService.publishPlan($scope.apiId, $scope.plan.id).then(function() { NotificationService.show('Plan ' + plan.name + ' has been published'); }).catch(function (error) { - NotificationService.show('Error while publishing plan ' + plan.name); $scope.error = error; }); diff --git a/src/app/api/portal/plan/apiPlan.html b/src/app/api/portal/plan/apiPlan.html index ead7902fff..e2afe322ac 100644 --- a/src/app/api/portal/plan/apiPlan.html +++ b/src/app/api/portal/plan/apiPlan.html @@ -21,7 +21,7 @@

{{plan.name}}

-

{{plan.description}}

+

{{plan.description}} ({{plan.security}})

{{characteristic}}
@@ -31,10 +31,14 @@
{{characteristic}}
- {{plan.alreadySubscribed ? 'Subscribed' : (plan.validation === 'auto'?'Subscribe': 'Request for subscription')}} + + No subscription required +
diff --git a/src/app/services/api.service.js b/src/app/services/api.service.js index 83c371ed7d..ffaebd8661 100644 --- a/src/app/services/api.service.js +++ b/src/app/services/api.service.js @@ -192,7 +192,8 @@ class ApiService { { name: plan.name, description: plan.description, api: plan.api, validation: plan.validation, policies: plan.policies, - characteristics: plan.characteristics, type: plan.type, paths: plan.paths + characteristics: plan.characteristics, type: plan.type, paths: plan.paths, + security: plan.security }); } }