gpt4 book ai didi

ember.js - 根据用户权限显示/隐藏内容的最佳方法

转载 作者:行者123 更新时间:2023-12-04 21:43:37 25 4
gpt4 key购买 nike

我正在寻找根据用户的权限为用户显示或隐藏内容的最佳方式。我可以很容易地检查当前用户是否是管理员或类似的东西,但假设用户想要编辑他们的帖子。然后管理员和作者都需要能够看到编辑按钮。

什么是最好的解决方案?

之前,我用过 this custom 'can' helper ,但在 Ember Auth 中更新后,此解决方案停止工作。见 here .

最佳答案

我通常会创建一个服务来保存权限表、用户角色和一些帮助程序,如 can()、isAdmin()。

例如:
应用程序/服务/用户权限.js

import Ember from 'ember';

export default Ember.Service.extend({
setData(roles, rightsTable){
this.set('rightsTable', rightsTable);
this.set('roles', roles);
},
can: function (action) {
let roles = this.get('roles');
if (!roles /*|| !this.get('rightsTable')*/) {
return false;
}
let rolesToAssignOrder = [
'ceo',
'partner'
];

let rolesToReceiveOrder = [
'senior_broker',
'broker',
'junior_broker'
];

let buildingsModeration = [
'ceo',
'partner',
'updaters_manager'
];
let seeBuildingsModeration = Array.prototype.concat(buildingsModeration, ['office_manager']);

switch (action) {
case 'canAssignOrder':
return this.checkRoles(rolesToAssignOrder);
case 'canReceiveOrder':
return this.checkRoles(rolesToReceiveOrder);
case 'canModerateBC':
return this.checkRoles(buildingsModeration);
case 'canSeeModeratingBC':
return this.checkRoles(seeBuildingsModeration);
case 'canChangeBroker':
return this.checkRoles(['ceo']);
default:
return false;
}
},
checkRoles(allowedRoles){
let can = false;
this.get('roles').forEach(el=>{
if(allowedRoles.indexOf(el.name) > -1){
can = true;
}
});
return can;
}
});

关于ember.js - 根据用户权限显示/隐藏内容的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19570913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com