Saya menggunakan Ember.Js untuk membuat aplikasi web, saya memiliki koleksi Pengguna di MongoDb saya, di Koleksi Pengguna ada atribut Peran yang dapat mengambil dua nilai, "admin" atau "pelanggan". Yang ingin saya lakukan adalah sebagai berikut: Ketika seseorang masuk, dia akan diarahkan ke dasbor admin atau antarmuka pelanggan, tergantung pada Perannya.

Bagaimana saya bisa mencapai ini? apa praktik terbaik? Itu ide yang bagus atau sebaiknya saya membuat koleksi untuk admin dan satu lagi untuk pelanggan?

1
Alaa-GI 13 Mei 2015, 15:19
1
 – 
MilkyWayJoe
13 Mei 2015, 17:47

1 menjawab

Jawaban Terbaik

Saya pribadi akan menggunakan kait afterModel rute Aplikasi.

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');
        }
    }
});

Anda kemudian dapat memiliki struktur menu berbeda yang hanya terhubung ke admin dan rute pelanggan masing-masing atau keduanya. Saya juga memiliki mixin yang diperluas oleh semua rute khusus Admin saya yang lain:

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');
        }
    }
});

Jadi rute admin-dashboard Anda akan terlihat seperti:

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

export default Ember.Route.extend(AdminRoute, {});
3
mistahenry 13 Mei 2015, 18:04