删除我自己的用户 ACL 权限
Removing my own users ACL permisions
我有一个允许多个用户编辑对象数据的应用程序,假设用户 A、B 和 C。所有对象都在对象 ACL 上明确定义了读和写。
当我以用户 A 身份登录时,我可以删除用户 B 和 C 的访问权限...但是当我尝试删除自己时会引发错误:
通信错误{消息:"The permission modification is not valid.",名称:"CommunicationError",原因:{...},原因:"Invalid Permission Modification",状态:462,...}
有没有办法允许用户删除他自己的 ACL?如果没有,给定此代码,我如何捕获此错误并执行 alert("You can't remove your own access to this company, please have an associate remove you or contact our support team.") ?
removeManager(event, id) {
event.preventDefault();
db.Companies.load(this.props.match.params.id)
.then((company) => {
company.acl.denyReadAccess(id);
company.acl.denyWriteAccess(id);
return company.update()
.then(() => {
return company.partialUpdate()
.remove("managers", id)
.execute()
.then(() => {
this.getCompanyandManagers()
})
})
})
}
无法撤销用户自己的访问权限是设计使然,因为用户之后无法撤消此操作。
就是说,如果您确实需要,可以解决这个问题:
- 您需要授予
node
角色读写权限。这样就可以始终从后端代码访问对象。
- 您编写了一个后端代码来撤销当前登录用户 (
db.User.me
) 的访问权限。
如果您希望捕获异常并显示错误消息,您可以这样做:
.catch(e => {
if (e.status == 462) {
// show message
}
})
我希望这能回答您的问题。
关于您上面的代码,您可以使用 deleteReadAccess(id)
而不是 denyReadAccess(id)
(写访问相同)。使用 denyReadAccess(id)
您正在创建一个额外的拒绝规则,因此您最终会得到一个针对 UserX 的允许规则和一个针对 UserX 的拒绝规则,因此最好通过删除允许规则来撤销访问权限。 (有关允许和拒绝规则的解释,请参阅 )
我有一个允许多个用户编辑对象数据的应用程序,假设用户 A、B 和 C。所有对象都在对象 ACL 上明确定义了读和写。
当我以用户 A 身份登录时,我可以删除用户 B 和 C 的访问权限...但是当我尝试删除自己时会引发错误:
通信错误{消息:"The permission modification is not valid.",名称:"CommunicationError",原因:{...},原因:"Invalid Permission Modification",状态:462,...}
有没有办法允许用户删除他自己的 ACL?如果没有,给定此代码,我如何捕获此错误并执行 alert("You can't remove your own access to this company, please have an associate remove you or contact our support team.") ?
removeManager(event, id) {
event.preventDefault();
db.Companies.load(this.props.match.params.id)
.then((company) => {
company.acl.denyReadAccess(id);
company.acl.denyWriteAccess(id);
return company.update()
.then(() => {
return company.partialUpdate()
.remove("managers", id)
.execute()
.then(() => {
this.getCompanyandManagers()
})
})
})
}
无法撤销用户自己的访问权限是设计使然,因为用户之后无法撤消此操作。
就是说,如果您确实需要,可以解决这个问题:
- 您需要授予
node
角色读写权限。这样就可以始终从后端代码访问对象。 - 您编写了一个后端代码来撤销当前登录用户 (
db.User.me
) 的访问权限。
如果您希望捕获异常并显示错误消息,您可以这样做:
.catch(e => {
if (e.status == 462) {
// show message
}
})
我希望这能回答您的问题。
关于您上面的代码,您可以使用 deleteReadAccess(id)
而不是 denyReadAccess(id)
(写访问相同)。使用 denyReadAccess(id)
您正在创建一个额外的拒绝规则,因此您最终会得到一个针对 UserX 的允许规则和一个针对 UserX 的拒绝规则,因此最好通过删除允许规则来撤销访问权限。 (有关允许和拒绝规则的解释,请参阅