Add GetPermissionsBySubmitter()

This commit is contained in:
Gucheng Wang 2022-08-15 14:09:12 +08:00
parent dfbf7753c3
commit c92d34e27c
15 changed files with 207 additions and 18 deletions

View File

@ -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 // GetPermission
// @Title GetPermission // @Title GetPermission
// @Tag Permission API // @Tag Permission API

View File

@ -36,8 +36,12 @@ type Permission struct {
Resources []string `xorm:"mediumtext" json:"resources"` Resources []string `xorm:"mediumtext" json:"resources"`
Actions []string `xorm:"mediumtext" json:"actions"` Actions []string `xorm:"mediumtext" json:"actions"`
Effect string `xorm:"varchar(100)" json:"effect"` 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 { type PermissionRule struct {
@ -163,3 +167,13 @@ func GetPermissionsByUser(userId string) []*Permission {
return permissions 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
}

View File

@ -78,6 +78,7 @@ func initAPI() {
beego.Router("/api/delete-role", &controllers.ApiController{}, "POST:DeleteRole") beego.Router("/api/delete-role", &controllers.ApiController{}, "POST:DeleteRole")
beego.Router("/api/get-permissions", &controllers.ApiController{}, "GET:GetPermissions") 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/get-permission", &controllers.ApiController{}, "GET:GetPermission")
beego.Router("/api/update-permission", &controllers.ApiController{}, "POST:UpdatePermission") beego.Router("/api/update-permission", &controllers.ApiController{}, "POST:UpdatePermission")
beego.Router("/api/add-permission", &controllers.ApiController{}, "POST:AddPermission") beego.Router("/api/add-permission", &controllers.ApiController{}, "POST:AddPermission")

View File

@ -385,13 +385,17 @@ class App extends Component {
</Link> </Link>
</Menu.Item> </Menu.Item>
); );
res.push( }
<Menu.Item key="/permissions">
<Link to="/permissions"> res.push(
{i18next.t("general:Permissions")} <Menu.Item key="/permissions">
</Link> <Link to="/permissions">
</Menu.Item> {i18next.t("general:Permissions")}
); </Link>
</Menu.Item>
);
if (Setting.isAdminUser(this.state.account)) {
res.push( res.push(
<Menu.Item key="/models"> <Menu.Item key="/models">
<Link to="/models"> <Link to="/models">

View File

@ -22,6 +22,7 @@ import i18next from "i18next";
import * as RoleBackend from "./backend/RoleBackend"; import * as RoleBackend from "./backend/RoleBackend";
import * as ModelBackend from "./backend/ModelBackend"; import * as ModelBackend from "./backend/ModelBackend";
import * as ApplicationBackend from "./backend/ApplicationBackend"; import * as ApplicationBackend from "./backend/ApplicationBackend";
import moment from "moment/moment";
const {Option} = Select; const {Option} = Select;
@ -297,6 +298,63 @@ class PermissionEditPage extends React.Component {
}} /> }} />
</Col> </Col>
</Row> </Row>
<Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{Setting.getLabel(i18next.t("permission:Submitter"), i18next.t("permission:Submitter - Tooltip"))} :
</Col>
<Col span={22} >
<Input disabled={true} value={this.state.permission.submitter} onChange={e => {
this.updatePermissionField("submitter", e.target.value);
}} />
</Col>
</Row>
<Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{Setting.getLabel(i18next.t("permission:Approver"), i18next.t("permission:Approver - Tooltip"))} :
</Col>
<Col span={22} >
<Input disabled={true} value={this.state.permission.approver} onChange={e => {
this.updatePermissionField("approver", e.target.value);
}} />
</Col>
</Row>
<Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{Setting.getLabel(i18next.t("permission:Approve time"), i18next.t("permission:Approve time - Tooltip"))} :
</Col>
<Col span={22} >
<Input disabled={true} value={Setting.getFormattedDate(this.state.permission.approveTime)} onChange={e => {
this.updatePermissionField("approveTime", e.target.value);
}} />
</Col>
</Row>
<Row style={{marginTop: "20px"}} >
<Col style={{marginTop: "5px"}} span={(Setting.isMobile()) ? 22 : 2}>
{Setting.getLabel(i18next.t("permission:State"), i18next.t("permission:State - Tooltip"))} :
</Col>
<Col span={22} >
<Select disabled={!Setting.isLocalAdminUser(this.props.account)} virtual={false} style={{width: "100%"}} value={this.state.permission.state} onChange={(value => {
if (this.state.permission.state !== value) {
if (value === "Approved") {
this.updatePermissionField("approver", this.props.account.name);
this.updatePermissionField("approveTime", moment().format());
} else {
this.updatePermissionField("approver", "");
this.updatePermissionField("approveTime", "");
}
}
this.updatePermissionField("state", value);
})}>
{
[
{id: "Approved", name: "Approved"},
{id: "Pending", name: "Pending"},
].map((item, index) => <Option key={index} value={item.id}>{item.name}</Option>)
}
</Select>
</Col>
</Row>
</Card> </Card>
); );
} }

View File

@ -25,11 +25,11 @@ class PermissionListPage extends BaseListPage {
newPermission() { newPermission() {
const randomName = Setting.getRandomName(); const randomName = Setting.getRandomName();
return { return {
owner: "built-in", owner: this.props.account.owner,
name: `permission_${randomName}`, name: `permission_${randomName}`,
createdTime: moment().format(), createdTime: moment().format(),
displayName: `New Permission - ${randomName}`, displayName: `New Permission - ${randomName}`,
users: [], users: [this.props.account.name],
roles: [], roles: [],
domains: [], domains: [],
resourceType: "Application", resourceType: "Application",
@ -37,6 +37,10 @@ class PermissionListPage extends BaseListPage {
actions: ["Read"], actions: ["Read"],
effect: "Allow", effect: "Allow",
isEnabled: true, isEnabled: true,
submitter: this.props.account.name,
approver: "",
approveTime: "",
state: "Pending",
}; };
} }
@ -44,6 +48,10 @@ class PermissionListPage extends BaseListPage {
const newPermission = this.newPermission(); const newPermission = this.newPermission();
PermissionBackend.addPermission(newPermission) PermissionBackend.addPermission(newPermission)
.then((res) => { .then((res) => {
if (res.msg !== "") {
Setting.showMessage("error", res.msg);
return;
}
this.props.history.push({pathname: `/permissions/${newPermission.owner}/${newPermission.name}`, mode: "add"}); this.props.history.push({pathname: `/permissions/${newPermission.owner}/${newPermission.name}`, mode: "add"});
} }
) )
@ -260,7 +268,9 @@ class PermissionListPage extends BaseListPage {
value = params.type; value = params.type;
} }
this.setState({loading: true}); 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) => { .then((res) => {
if (res.status === "ok") { if (res.status === "ok") {
this.setState({ this.setState({

View File

@ -373,6 +373,13 @@ export function isAdminUser(account) {
return account.owner === "built-in" || account.isGlobalAdmin === true; 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) { export function deepCopy(obj) {
return Object.assign({}, obj); return Object.assign({}, obj);
} }

View File

@ -21,6 +21,13 @@ export function getPermissions(owner, page = "", pageSize = "", field = "", valu
}).then(res => res.json()); }).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) { export function getPermission(owner, name) {
return fetch(`${Setting.ServerUrl}/api/get-permission?id=${owner}/${encodeURIComponent(name)}`, { return fetch(`${Setting.ServerUrl}/api/get-permission?id=${owner}/${encodeURIComponent(name)}`, {
method: "GET", method: "GET",

View File

@ -343,6 +343,10 @@
"permission": { "permission": {
"Actions": "Aktionen", "Actions": "Aktionen",
"Actions - Tooltip": "Aktionen - Tooltip", "Actions - Tooltip": "Aktionen - Tooltip",
"Approve time": "Approve time",
"Approve time - Tooltip": "Approve time - Tooltip",
"Approver": "Approver",
"Approver - Tooltip": "Approver - Tooltip",
"Edit Permission": "Berechtigung bearbeiten", "Edit Permission": "Berechtigung bearbeiten",
"Effect": "Effekt", "Effect": "Effekt",
"Effect - Tooltip": "Effekt - Tooltip", "Effect - Tooltip": "Effekt - Tooltip",
@ -350,7 +354,11 @@
"Resource type": "Ressourcentyp", "Resource type": "Ressourcentyp",
"Resource type - Tooltip": "Ressourcentyp - Tooltip", "Resource type - Tooltip": "Ressourcentyp - Tooltip",
"Resources": "Ressourcen", "Resources": "Ressourcen",
"Resources - Tooltip": "Resources - Tooltip" "Resources - Tooltip": "Resources - Tooltip",
"State": "State",
"State - Tooltip": "State - Tooltip",
"Submitter": "Submitter",
"Submitter - Tooltip": "Submitter - Tooltip"
}, },
"product": { "product": {
"Alipay": "Alipay", "Alipay": "Alipay",
@ -519,6 +527,8 @@
"role": { "role": {
"Edit Role": "Rolle bearbeiten", "Edit Role": "Rolle bearbeiten",
"New Role": "New Role", "New Role": "New Role",
"Sub domains": "Sub domains",
"Sub domains - Tooltip": "Sub domains - Tooltip",
"Sub roles": "Unterrollen", "Sub roles": "Unterrollen",
"Sub roles - Tooltip": "Unterrollen - Tooltip", "Sub roles - Tooltip": "Unterrollen - Tooltip",
"Sub users": "Unternutzer", "Sub users": "Unternutzer",

View File

@ -343,6 +343,10 @@
"permission": { "permission": {
"Actions": "Actions", "Actions": "Actions",
"Actions - Tooltip": "Actions - Tooltip", "Actions - Tooltip": "Actions - Tooltip",
"Approve time": "Approve time",
"Approve time - Tooltip": "Approve time - Tooltip",
"Approver": "Approver",
"Approver - Tooltip": "Approver - Tooltip",
"Edit Permission": "Edit Permission", "Edit Permission": "Edit Permission",
"Effect": "Effect", "Effect": "Effect",
"Effect - Tooltip": "Effect - Tooltip", "Effect - Tooltip": "Effect - Tooltip",
@ -350,7 +354,11 @@
"Resource type": "Resource type", "Resource type": "Resource type",
"Resource type - Tooltip": "Resource type - Tooltip", "Resource type - Tooltip": "Resource type - Tooltip",
"Resources": "Resources", "Resources": "Resources",
"Resources - Tooltip": "Resources - Tooltip" "Resources - Tooltip": "Resources - Tooltip",
"State": "State",
"State - Tooltip": "State - Tooltip",
"Submitter": "Submitter",
"Submitter - Tooltip": "Submitter - Tooltip"
}, },
"product": { "product": {
"Alipay": "Alipay", "Alipay": "Alipay",
@ -519,6 +527,8 @@
"role": { "role": {
"Edit Role": "Edit Role", "Edit Role": "Edit Role",
"New Role": "New Role", "New Role": "New Role",
"Sub domains": "Sub domains",
"Sub domains - Tooltip": "Sub domains - Tooltip",
"Sub roles": "Sub roles", "Sub roles": "Sub roles",
"Sub roles - Tooltip": "Sub roles - Tooltip", "Sub roles - Tooltip": "Sub roles - Tooltip",
"Sub users": "Sub users", "Sub users": "Sub users",

View File

@ -343,6 +343,10 @@
"permission": { "permission": {
"Actions": "Actions", "Actions": "Actions",
"Actions - Tooltip": "Actions - Info-bulle", "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", "Edit Permission": "Autorisation d'édition",
"Effect": "Effet", "Effect": "Effet",
"Effect - Tooltip": "Effet - Infobulle", "Effect - Tooltip": "Effet - Infobulle",
@ -350,7 +354,11 @@
"Resource type": "Type de ressource", "Resource type": "Type de ressource",
"Resource type - Tooltip": "Type de ressource - infobulle", "Resource type - Tooltip": "Type de ressource - infobulle",
"Resources": "Ressource", "Resources": "Ressource",
"Resources - Tooltip": "Resources - Tooltip" "Resources - Tooltip": "Resources - Tooltip",
"State": "State",
"State - Tooltip": "State - Tooltip",
"Submitter": "Submitter",
"Submitter - Tooltip": "Submitter - Tooltip"
}, },
"product": { "product": {
"Alipay": "Alipay", "Alipay": "Alipay",
@ -519,6 +527,8 @@
"role": { "role": {
"Edit Role": "Modifier le rôle", "Edit Role": "Modifier le rôle",
"New Role": "New Role", "New Role": "New Role",
"Sub domains": "Sub domains",
"Sub domains - Tooltip": "Sub domains - Tooltip",
"Sub roles": "Sous-rôles", "Sub roles": "Sous-rôles",
"Sub roles - Tooltip": "Sous-rôles - infobulle", "Sub roles - Tooltip": "Sous-rôles - infobulle",
"Sub users": "Sous-utilisateurs", "Sub users": "Sous-utilisateurs",

View File

@ -343,6 +343,10 @@
"permission": { "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": { "product": {
"Alipay": "Alipay", "Alipay": "Alipay",
@ -519,6 +527,8 @@
"role": { "role": {
"Edit Role": "役割を編集", "Edit Role": "役割を編集",
"New Role": "New 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 roles - Tooltip": "Sub roles - Tooltip",
"Sub users": "サブユーザー", "Sub users": "サブユーザー",

View File

@ -343,6 +343,10 @@
"permission": { "permission": {
"Actions": "Actions", "Actions": "Actions",
"Actions - Tooltip": "Actions - Tooltip", "Actions - Tooltip": "Actions - Tooltip",
"Approve time": "Approve time",
"Approve time - Tooltip": "Approve time - Tooltip",
"Approver": "Approver",
"Approver - Tooltip": "Approver - Tooltip",
"Edit Permission": "Edit Permission", "Edit Permission": "Edit Permission",
"Effect": "Effect", "Effect": "Effect",
"Effect - Tooltip": "Effect - Tooltip", "Effect - Tooltip": "Effect - Tooltip",
@ -350,7 +354,11 @@
"Resource type": "Resource type", "Resource type": "Resource type",
"Resource type - Tooltip": "Resource type - Tooltip", "Resource type - Tooltip": "Resource type - Tooltip",
"Resources": "Resources", "Resources": "Resources",
"Resources - Tooltip": "Resources - Tooltip" "Resources - Tooltip": "Resources - Tooltip",
"State": "State",
"State - Tooltip": "State - Tooltip",
"Submitter": "Submitter",
"Submitter - Tooltip": "Submitter - Tooltip"
}, },
"product": { "product": {
"Alipay": "Alipay", "Alipay": "Alipay",
@ -519,6 +527,8 @@
"role": { "role": {
"Edit Role": "Edit Role", "Edit Role": "Edit Role",
"New Role": "New Role", "New Role": "New Role",
"Sub domains": "Sub domains",
"Sub domains - Tooltip": "Sub domains - Tooltip",
"Sub roles": "Sub roles", "Sub roles": "Sub roles",
"Sub roles - Tooltip": "Sub roles - Tooltip", "Sub roles - Tooltip": "Sub roles - Tooltip",
"Sub users": "Sub users", "Sub users": "Sub users",

View File

@ -343,6 +343,10 @@
"permission": { "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": { "product": {
"Alipay": "Alipay", "Alipay": "Alipay",
@ -519,6 +527,8 @@
"role": { "role": {
"Edit Role": "Изменить роль", "Edit Role": "Изменить роль",
"New Role": "New Role", "New Role": "New Role",
"Sub domains": "Sub domains",
"Sub domains - Tooltip": "Sub domains - Tooltip",
"Sub roles": "Суб роли", "Sub roles": "Суб роли",
"Sub roles - Tooltip": "Суб роли - Tooltip", "Sub roles - Tooltip": "Суб роли - Tooltip",
"Sub users": "Субпользователи", "Sub users": "Субпользователи",

View File

@ -343,6 +343,10 @@
"permission": { "permission": {
"Actions": "动作", "Actions": "动作",
"Actions - Tooltip": "授权的动作", "Actions - Tooltip": "授权的动作",
"Approve time": "审批时间",
"Approve time - Tooltip": "该授权被审批通过的时间",
"Approver": "审批者",
"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": "被授权的资源",
"State": "审批状态",
"State - Tooltip": "该授权现在的状态",
"Submitter": "申请者",
"Submitter - Tooltip": "申请该授权的人"
}, },
"product": { "product": {
"Alipay": "支付宝", "Alipay": "支付宝",
@ -519,6 +527,8 @@
"role": { "role": {
"Edit Role": "编辑角色", "Edit Role": "编辑角色",
"New Role": "添加角色", "New Role": "添加角色",
"Sub domains": "包含域",
"Sub domains - Tooltip": "当前角色所包含的子域",
"Sub roles": "包含角色", "Sub roles": "包含角色",
"Sub roles - Tooltip": "当前角色所包含的子角色", "Sub roles - Tooltip": "当前角色所包含的子角色",
"Sub users": "包含用户", "Sub users": "包含用户",