From fda090f7dd05548c7da6c3ac61253e90960bcb4d Mon Sep 17 00:00:00 2001
From: jinapurapu <65002498+jinapurapu@users.noreply.github.com>
Date: Fri, 22 Apr 2022 21:21:06 -0700
Subject: [PATCH] Created Add Policy screen (#1896)
---
.../src/common/SecureComponent/permissions.ts | 4 +
portal-ui/src/screens/Console/Console.tsx | 6 +
.../Console/Policies/AddPolicyHelpBox.tsx | 105 ++++++++
.../Console/Policies/AddPolicyScreen.tsx | 242 ++++++++++++++++++
.../screens/Console/Policies/ListPolicies.tsx | 22 +-
5 files changed, 358 insertions(+), 21 deletions(-)
create mode 100644 portal-ui/src/screens/Console/Policies/AddPolicyHelpBox.tsx
create mode 100644 portal-ui/src/screens/Console/Policies/AddPolicyScreen.tsx
diff --git a/portal-ui/src/common/SecureComponent/permissions.ts b/portal-ui/src/common/SecureComponent/permissions.ts
index a1364a552..daec07d57 100644
--- a/portal-ui/src/common/SecureComponent/permissions.ts
+++ b/portal-ui/src/common/SecureComponent/permissions.ts
@@ -127,6 +127,7 @@ export const IAM_PAGES = {
ACCOUNT_ADD: "/identity/new-account",
/* Access */
POLICIES: "/access/policies",
+ POLICY_ADD: "/access/add-policy",
POLICIES_VIEW: "/access/policies/*",
/* Monitoring */
TOOLS_LOGS: "/tools/logs",
@@ -329,6 +330,9 @@ export const IAM_PAGES_PERMISSIONS = {
IAM_SCOPES.ADMIN_LIST_USER_POLICIES, // displays policies
IAM_SCOPES.ADMIN_CREATE_POLICY, // displays create policy button
],
+ [IAM_PAGES.POLICY_ADD]: [
+ IAM_SCOPES.ADMIN_CREATE_POLICY, // displays create policy button
+ ],
[IAM_PAGES.SETTINGS]: [
IAM_SCOPES.ADMIN_CONFIG_UPDATE, // displays configuration list
],
diff --git a/portal-ui/src/screens/Console/Console.tsx b/portal-ui/src/screens/Console/Console.tsx
index 4b07b48a9..847b26afe 100644
--- a/portal-ui/src/screens/Console/Console.tsx
+++ b/portal-ui/src/screens/Console/Console.tsx
@@ -102,6 +102,8 @@ const ObjectManager = React.lazy(
const Buckets = React.lazy(() => import("./Buckets/Buckets"));
const Policies = React.lazy(() => import("./Policies/Policies"));
+
+const AddPolicy = React.lazy(() => import("./Policies/AddPolicyScreen"));
const Dashboard = React.lazy(() => import("./Dashboard/Dashboard"));
const Account = React.lazy(() => import("./Account/Account"));
@@ -304,6 +306,10 @@ const Console = ({
component: Policies,
path: IAM_PAGES.POLICIES_VIEW,
},
+ {
+ component: AddPolicy,
+ path: IAM_PAGES.POLICY_ADD,
+ },
{
component: Policies,
path: IAM_PAGES.POLICIES,
diff --git a/portal-ui/src/screens/Console/Policies/AddPolicyHelpBox.tsx b/portal-ui/src/screens/Console/Policies/AddPolicyHelpBox.tsx
new file mode 100644
index 000000000..71a3f893f
--- /dev/null
+++ b/portal-ui/src/screens/Console/Policies/AddPolicyHelpBox.tsx
@@ -0,0 +1,105 @@
+// This file is part of MinIO Console Server
+// Copyright (c) 2022 MinIO, Inc.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+import React from "react";
+import { Box } from "@mui/material";
+import {
+ HelpIconFilled,
+ IAMPoliciesIcon,
+} from "../../../icons";
+
+const FeatureItem = ({
+ icon,
+ description,
+}: {
+ icon: any;
+ description: string;
+}) => {
+ return (
+
+ {icon}{" "}
+