Ember.JS,根据用户角色显示视图

时间:2015-05-13 12:19:50

标签: mongodb ember.js

我正在使用Ember.Js来创建一个Web应用程序,我在MongoDb中有User集合,在User集合中有一个Role属性可以带两个值," admin"或"客户"。 我想做的是以下内容: 当有人登录时,他将被重定向到管理仪表板或客户界面,具体取决于他的角色。

我怎样才能做到这一点?什么是最佳做法? 这是一个好主意,或者我应该为管理员创建一个集合,为客户创建另一个集合?

1 个答案:

答案 0 :(得分:3)

我个人会使用应用程序路由afterModel挂钩。

export default Ember.Route.extend({
    model: function(){
        //I DK if you use Ember Data. I don't but this could be a store lookup.
        return this.userService.getCurrentUser()
    },
    afterModel: function(resolvedModel, transition){
        var user = resolvedModel;
        if(user.role === 'ADMIN'){
            this.transitionTo('admin-dashboard');
        }else{
            this.transitionTo('customer-interface');
        }
    }
});

然后,您可以拥有不同的菜单结构,分别只链接到管理员和客户路线,或两者兼而有之。我还有一个mixin,我所有其他仅管理员路线都延伸:

import Ember from 'ember';

export default Ember.Mixin.create({
    beforeModel: function(){
        var currentUser = this.modelFor('application');
        if(currentUser.role !== 'ADMIN'){
            //handle this howerver
            this.transitionTo('unauthorized');
        }
    }
});

所以你的admin-dashboard路线看起来像是:

import Ember from 'ember';
import AdminRoute from 'app_name/mixins/admin-route';

export default Ember.Route.extend(AdminRoute, {});