5
我正在尋找基於用戶權限顯示或隱藏用戶內容的最佳方式。我可以輕鬆地檢查當前用戶是否是管理員,或者類似的東西,但假設用戶想要編輯他們的帖子。然後管理員和作者都需要能夠看到編輯按鈕。基於用戶權限顯示/隱藏內容的最佳方法
這是最好的解決方案是什麼?
之前,我用this custom 'can' helper,但在Ember Auth更新後,此解決方案停止工作。見here。
我正在尋找基於用戶權限顯示或隱藏用戶內容的最佳方式。我可以輕鬆地檢查當前用戶是否是管理員,或者類似的東西,但假設用戶想要編輯他們的帖子。然後管理員和作者都需要能夠看到編輯按鈕。基於用戶權限顯示/隱藏內容的最佳方法
這是最好的解決方案是什麼?
之前,我用this custom 'can' helper,但在Ember Auth更新後,此解決方案停止工作。見here。
我通常會創建一個服務來保存許可表,用戶角色和一些助手,比如can(),isAdmin()。
例如: 應用程序/服務/用戶rights.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;
}
});