diff --git a/controllers/permission.go b/controllers/permission.go
index 8f3cdafc..2dd40f1c 100644
--- a/controllers/permission.go
+++ b/controllers/permission.go
@@ -48,6 +48,24 @@ func (c *ApiController) GetPermissions() {
}
}
+// GetPermissionsBySubmitter
+// @Title GetPermissionsBySubmitter
+// @Tag Permission API
+// @Description get permissions by submitter
+// @Success 200 {array} object.Permission The Response object
+// @router /get-permissions-by-submitter [get]
+func (c *ApiController) GetPermissionsBySubmitter() {
+ userId, ok := c.RequireSignedIn()
+ if !ok {
+ return
+ }
+
+ owner, username := util.GetOwnerAndNameFromId(userId)
+ permissions := object.GetPermissionsBySubmitter(owner, username)
+ c.ResponseOk(permissions, len(permissions))
+ return
+}
+
// GetPermission
// @Title GetPermission
// @Tag Permission API
diff --git a/object/permission.go b/object/permission.go
index 99090c5e..f2193016 100644
--- a/object/permission.go
+++ b/object/permission.go
@@ -36,8 +36,12 @@ type Permission struct {
Resources []string `xorm:"mediumtext" json:"resources"`
Actions []string `xorm:"mediumtext" json:"actions"`
Effect string `xorm:"varchar(100)" json:"effect"`
+ IsEnabled bool `json:"isEnabled"`
- IsEnabled bool `json:"isEnabled"`
+ Submitter string `xorm:"varchar(100)" json:"submitter"`
+ Approver string `xorm:"varchar(100)" json:"approver"`
+ ApproveTime string `xorm:"varchar(100)" json:"approveTime"`
+ State string `xorm:"varchar(100)" json:"state"`
}
type PermissionRule struct {
@@ -163,3 +167,13 @@ func GetPermissionsByUser(userId string) []*Permission {
return permissions
}
+
+func GetPermissionsBySubmitter(owner string, submitter string) []*Permission {
+ permissions := []*Permission{}
+ err := adapter.Engine.Desc("created_time").Find(&permissions, &Permission{Owner: owner, Submitter: submitter})
+ if err != nil {
+ panic(err)
+ }
+
+ return permissions
+}
diff --git a/routers/router.go b/routers/router.go
index ca59fabe..bb4e4ea6 100644
--- a/routers/router.go
+++ b/routers/router.go
@@ -78,6 +78,7 @@ func initAPI() {
beego.Router("/api/delete-role", &controllers.ApiController{}, "POST:DeleteRole")
beego.Router("/api/get-permissions", &controllers.ApiController{}, "GET:GetPermissions")
+ beego.Router("/api/get-permissions-by-submitter", &controllers.ApiController{}, "GET:GetPermissionsBySubmitter")
beego.Router("/api/get-permission", &controllers.ApiController{}, "GET:GetPermission")
beego.Router("/api/update-permission", &controllers.ApiController{}, "POST:UpdatePermission")
beego.Router("/api/add-permission", &controllers.ApiController{}, "POST:AddPermission")
diff --git a/web/src/App.js b/web/src/App.js
index 960df1bc..98c9e23a 100644
--- a/web/src/App.js
+++ b/web/src/App.js
@@ -385,13 +385,17 @@ class App extends Component {
);
- res.push(
-
-
- {i18next.t("general:Permissions")}
-
-
- );
+ }
+
+ res.push(
+
+
+ {i18next.t("general:Permissions")}
+
+
+ );
+
+ if (Setting.isAdminUser(this.state.account)) {
res.push(
diff --git a/web/src/PermissionEditPage.js b/web/src/PermissionEditPage.js
index 6bf3a0a2..5a8dfb2b 100644
--- a/web/src/PermissionEditPage.js
+++ b/web/src/PermissionEditPage.js
@@ -22,6 +22,7 @@ import i18next from "i18next";
import * as RoleBackend from "./backend/RoleBackend";
import * as ModelBackend from "./backend/ModelBackend";
import * as ApplicationBackend from "./backend/ApplicationBackend";
+import moment from "moment/moment";
const {Option} = Select;
@@ -297,6 +298,63 @@ class PermissionEditPage extends React.Component {
}} />
+
+
+ {Setting.getLabel(i18next.t("permission:Submitter"), i18next.t("permission:Submitter - Tooltip"))} :
+
+
+ {
+ this.updatePermissionField("submitter", e.target.value);
+ }} />
+
+
+
+
+ {Setting.getLabel(i18next.t("permission:Approver"), i18next.t("permission:Approver - Tooltip"))} :
+
+
+ {
+ this.updatePermissionField("approver", e.target.value);
+ }} />
+
+
+
+
+ {Setting.getLabel(i18next.t("permission:Approve time"), i18next.t("permission:Approve time - Tooltip"))} :
+
+
+ {
+ this.updatePermissionField("approveTime", e.target.value);
+ }} />
+
+
+
+
+ {Setting.getLabel(i18next.t("permission:State"), i18next.t("permission:State - Tooltip"))} :
+
+
+
+
+
);
}
diff --git a/web/src/PermissionListPage.js b/web/src/PermissionListPage.js
index 73a82972..a256b54e 100644
--- a/web/src/PermissionListPage.js
+++ b/web/src/PermissionListPage.js
@@ -25,11 +25,11 @@ class PermissionListPage extends BaseListPage {
newPermission() {
const randomName = Setting.getRandomName();
return {
- owner: "built-in",
+ owner: this.props.account.owner,
name: `permission_${randomName}`,
createdTime: moment().format(),
displayName: `New Permission - ${randomName}`,
- users: [],
+ users: [this.props.account.name],
roles: [],
domains: [],
resourceType: "Application",
@@ -37,6 +37,10 @@ class PermissionListPage extends BaseListPage {
actions: ["Read"],
effect: "Allow",
isEnabled: true,
+ submitter: this.props.account.name,
+ approver: "",
+ approveTime: "",
+ state: "Pending",
};
}
@@ -44,6 +48,10 @@ class PermissionListPage extends BaseListPage {
const newPermission = this.newPermission();
PermissionBackend.addPermission(newPermission)
.then((res) => {
+ if (res.msg !== "") {
+ Setting.showMessage("error", res.msg);
+ return;
+ }
this.props.history.push({pathname: `/permissions/${newPermission.owner}/${newPermission.name}`, mode: "add"});
}
)
@@ -260,7 +268,9 @@ class PermissionListPage extends BaseListPage {
value = params.type;
}
this.setState({loading: true});
- PermissionBackend.getPermissions("", params.pagination.current, params.pagination.pageSize, field, value, sortField, sortOrder)
+
+ const getPermissions = Setting.isAdminUser(this.props.account) ? PermissionBackend.getPermissions : PermissionBackend.getPermissionsBySubmitter;
+ getPermissions("", params.pagination.current, params.pagination.pageSize, field, value, sortField, sortOrder)
.then((res) => {
if (res.status === "ok") {
this.setState({
diff --git a/web/src/Setting.js b/web/src/Setting.js
index 78eb7a04..887a1105 100644
--- a/web/src/Setting.js
+++ b/web/src/Setting.js
@@ -373,6 +373,13 @@ export function isAdminUser(account) {
return account.owner === "built-in" || account.isGlobalAdmin === true;
}
+export function isLocalAdminUser(account) {
+ if (account === undefined || account === null) {
+ return false;
+ }
+ return account.isAdmin === true || isAdminUser(account);
+}
+
export function deepCopy(obj) {
return Object.assign({}, obj);
}
diff --git a/web/src/backend/PermissionBackend.js b/web/src/backend/PermissionBackend.js
index 43f86b6f..5611bfd6 100644
--- a/web/src/backend/PermissionBackend.js
+++ b/web/src/backend/PermissionBackend.js
@@ -21,6 +21,13 @@ export function getPermissions(owner, page = "", pageSize = "", field = "", valu
}).then(res => res.json());
}
+export function getPermissionsBySubmitter() {
+ return fetch(`${Setting.ServerUrl}/api/get-permissions-by-submitter`, {
+ method: "GET",
+ credentials: "include",
+ }).then(res => res.json());
+}
+
export function getPermission(owner, name) {
return fetch(`${Setting.ServerUrl}/api/get-permission?id=${owner}/${encodeURIComponent(name)}`, {
method: "GET",
diff --git a/web/src/locales/de/data.json b/web/src/locales/de/data.json
index d9cb1a27..57d8b251 100644
--- a/web/src/locales/de/data.json
+++ b/web/src/locales/de/data.json
@@ -343,6 +343,10 @@
"permission": {
"Actions": "Aktionen",
"Actions - Tooltip": "Aktionen - Tooltip",
+ "Approve time": "Approve time",
+ "Approve time - Tooltip": "Approve time - Tooltip",
+ "Approver": "Approver",
+ "Approver - Tooltip": "Approver - Tooltip",
"Edit Permission": "Berechtigung bearbeiten",
"Effect": "Effekt",
"Effect - Tooltip": "Effekt - Tooltip",
@@ -350,7 +354,11 @@
"Resource type": "Ressourcentyp",
"Resource type - Tooltip": "Ressourcentyp - Tooltip",
"Resources": "Ressourcen",
- "Resources - Tooltip": "Resources - Tooltip"
+ "Resources - Tooltip": "Resources - Tooltip",
+ "State": "State",
+ "State - Tooltip": "State - Tooltip",
+ "Submitter": "Submitter",
+ "Submitter - Tooltip": "Submitter - Tooltip"
},
"product": {
"Alipay": "Alipay",
@@ -519,6 +527,8 @@
"role": {
"Edit Role": "Rolle bearbeiten",
"New Role": "New Role",
+ "Sub domains": "Sub domains",
+ "Sub domains - Tooltip": "Sub domains - Tooltip",
"Sub roles": "Unterrollen",
"Sub roles - Tooltip": "Unterrollen - Tooltip",
"Sub users": "Unternutzer",
diff --git a/web/src/locales/en/data.json b/web/src/locales/en/data.json
index 0212f0f6..5d8383cc 100644
--- a/web/src/locales/en/data.json
+++ b/web/src/locales/en/data.json
@@ -343,6 +343,10 @@
"permission": {
"Actions": "Actions",
"Actions - Tooltip": "Actions - Tooltip",
+ "Approve time": "Approve time",
+ "Approve time - Tooltip": "Approve time - Tooltip",
+ "Approver": "Approver",
+ "Approver - Tooltip": "Approver - Tooltip",
"Edit Permission": "Edit Permission",
"Effect": "Effect",
"Effect - Tooltip": "Effect - Tooltip",
@@ -350,7 +354,11 @@
"Resource type": "Resource type",
"Resource type - Tooltip": "Resource type - Tooltip",
"Resources": "Resources",
- "Resources - Tooltip": "Resources - Tooltip"
+ "Resources - Tooltip": "Resources - Tooltip",
+ "State": "State",
+ "State - Tooltip": "State - Tooltip",
+ "Submitter": "Submitter",
+ "Submitter - Tooltip": "Submitter - Tooltip"
},
"product": {
"Alipay": "Alipay",
@@ -519,6 +527,8 @@
"role": {
"Edit Role": "Edit Role",
"New Role": "New Role",
+ "Sub domains": "Sub domains",
+ "Sub domains - Tooltip": "Sub domains - Tooltip",
"Sub roles": "Sub roles",
"Sub roles - Tooltip": "Sub roles - Tooltip",
"Sub users": "Sub users",
diff --git a/web/src/locales/fr/data.json b/web/src/locales/fr/data.json
index 24f5c0bc..0f2b7e71 100644
--- a/web/src/locales/fr/data.json
+++ b/web/src/locales/fr/data.json
@@ -343,6 +343,10 @@
"permission": {
"Actions": "Actions",
"Actions - Tooltip": "Actions - Info-bulle",
+ "Approve time": "Approve time",
+ "Approve time - Tooltip": "Approve time - Tooltip",
+ "Approver": "Approver",
+ "Approver - Tooltip": "Approver - Tooltip",
"Edit Permission": "Autorisation d'édition",
"Effect": "Effet",
"Effect - Tooltip": "Effet - Infobulle",
@@ -350,7 +354,11 @@
"Resource type": "Type de ressource",
"Resource type - Tooltip": "Type de ressource - infobulle",
"Resources": "Ressource",
- "Resources - Tooltip": "Resources - Tooltip"
+ "Resources - Tooltip": "Resources - Tooltip",
+ "State": "State",
+ "State - Tooltip": "State - Tooltip",
+ "Submitter": "Submitter",
+ "Submitter - Tooltip": "Submitter - Tooltip"
},
"product": {
"Alipay": "Alipay",
@@ -519,6 +527,8 @@
"role": {
"Edit Role": "Modifier le rôle",
"New Role": "New Role",
+ "Sub domains": "Sub domains",
+ "Sub domains - Tooltip": "Sub domains - Tooltip",
"Sub roles": "Sous-rôles",
"Sub roles - Tooltip": "Sous-rôles - infobulle",
"Sub users": "Sous-utilisateurs",
diff --git a/web/src/locales/ja/data.json b/web/src/locales/ja/data.json
index 0487a09a..1561633b 100644
--- a/web/src/locales/ja/data.json
+++ b/web/src/locales/ja/data.json
@@ -343,6 +343,10 @@
"permission": {
"Actions": "アクション",
"Actions - Tooltip": "アクション → ツールチップ",
+ "Approve time": "Approve time",
+ "Approve time - Tooltip": "Approve time - Tooltip",
+ "Approver": "Approver",
+ "Approver - Tooltip": "Approver - Tooltip",
"Edit Permission": "権限を編集",
"Effect": "効果",
"Effect - Tooltip": "エフェクト - ツールチップ",
@@ -350,7 +354,11 @@
"Resource type": "リソースタイプ",
"Resource type - Tooltip": "リソースタイプ - ツールチップ",
"Resources": "リソース",
- "Resources - Tooltip": "Resources - Tooltip"
+ "Resources - Tooltip": "Resources - Tooltip",
+ "State": "State",
+ "State - Tooltip": "State - Tooltip",
+ "Submitter": "Submitter",
+ "Submitter - Tooltip": "Submitter - Tooltip"
},
"product": {
"Alipay": "Alipay",
@@ -519,6 +527,8 @@
"role": {
"Edit Role": "役割を編集",
"New Role": "New Role",
+ "Sub domains": "Sub domains",
+ "Sub domains - Tooltip": "Sub domains - Tooltip",
"Sub roles": "サブロール",
"Sub roles - Tooltip": "Sub roles - Tooltip",
"Sub users": "サブユーザー",
diff --git a/web/src/locales/ko/data.json b/web/src/locales/ko/data.json
index 09b30879..04af7c77 100644
--- a/web/src/locales/ko/data.json
+++ b/web/src/locales/ko/data.json
@@ -343,6 +343,10 @@
"permission": {
"Actions": "Actions",
"Actions - Tooltip": "Actions - Tooltip",
+ "Approve time": "Approve time",
+ "Approve time - Tooltip": "Approve time - Tooltip",
+ "Approver": "Approver",
+ "Approver - Tooltip": "Approver - Tooltip",
"Edit Permission": "Edit Permission",
"Effect": "Effect",
"Effect - Tooltip": "Effect - Tooltip",
@@ -350,7 +354,11 @@
"Resource type": "Resource type",
"Resource type - Tooltip": "Resource type - Tooltip",
"Resources": "Resources",
- "Resources - Tooltip": "Resources - Tooltip"
+ "Resources - Tooltip": "Resources - Tooltip",
+ "State": "State",
+ "State - Tooltip": "State - Tooltip",
+ "Submitter": "Submitter",
+ "Submitter - Tooltip": "Submitter - Tooltip"
},
"product": {
"Alipay": "Alipay",
@@ -519,6 +527,8 @@
"role": {
"Edit Role": "Edit Role",
"New Role": "New Role",
+ "Sub domains": "Sub domains",
+ "Sub domains - Tooltip": "Sub domains - Tooltip",
"Sub roles": "Sub roles",
"Sub roles - Tooltip": "Sub roles - Tooltip",
"Sub users": "Sub users",
diff --git a/web/src/locales/ru/data.json b/web/src/locales/ru/data.json
index 4d338602..6684fef8 100644
--- a/web/src/locales/ru/data.json
+++ b/web/src/locales/ru/data.json
@@ -343,6 +343,10 @@
"permission": {
"Actions": "Действия",
"Actions - Tooltip": "Действия - Подсказка",
+ "Approve time": "Approve time",
+ "Approve time - Tooltip": "Approve time - Tooltip",
+ "Approver": "Approver",
+ "Approver - Tooltip": "Approver - Tooltip",
"Edit Permission": "Изменить права доступа",
"Effect": "Эффект",
"Effect - Tooltip": "Эффект - Подсказка",
@@ -350,7 +354,11 @@
"Resource type": "Тип ресурса",
"Resource type - Tooltip": "Тип ресурса - Подсказка",
"Resources": "Ресурсы",
- "Resources - Tooltip": "Resources - Tooltip"
+ "Resources - Tooltip": "Resources - Tooltip",
+ "State": "State",
+ "State - Tooltip": "State - Tooltip",
+ "Submitter": "Submitter",
+ "Submitter - Tooltip": "Submitter - Tooltip"
},
"product": {
"Alipay": "Alipay",
@@ -519,6 +527,8 @@
"role": {
"Edit Role": "Изменить роль",
"New Role": "New Role",
+ "Sub domains": "Sub domains",
+ "Sub domains - Tooltip": "Sub domains - Tooltip",
"Sub roles": "Суб роли",
"Sub roles - Tooltip": "Суб роли - Tooltip",
"Sub users": "Субпользователи",
diff --git a/web/src/locales/zh/data.json b/web/src/locales/zh/data.json
index 8a0ff24e..4674d326 100644
--- a/web/src/locales/zh/data.json
+++ b/web/src/locales/zh/data.json
@@ -343,6 +343,10 @@
"permission": {
"Actions": "动作",
"Actions - Tooltip": "授权的动作",
+ "Approve time": "审批时间",
+ "Approve time - Tooltip": "该授权被审批通过的时间",
+ "Approver": "审批者",
+ "Approver - Tooltip": "审批通过该授权的人",
"Edit Permission": "编辑权限",
"Effect": "效果",
"Effect - Tooltip": "允许还是拒绝",
@@ -350,7 +354,11 @@
"Resource type": "资源类型",
"Resource type - Tooltip": "授权资源的类型",
"Resources": "资源",
- "Resources - Tooltip": "被授权的资源"
+ "Resources - Tooltip": "被授权的资源",
+ "State": "审批状态",
+ "State - Tooltip": "该授权现在的状态",
+ "Submitter": "申请者",
+ "Submitter - Tooltip": "申请该授权的人"
},
"product": {
"Alipay": "支付宝",
@@ -519,6 +527,8 @@
"role": {
"Edit Role": "编辑角色",
"New Role": "添加角色",
+ "Sub domains": "包含域",
+ "Sub domains - Tooltip": "当前角色所包含的子域",
"Sub roles": "包含角色",
"Sub roles - Tooltip": "当前角色所包含的子角色",
"Sub users": "包含用户",