Ember.js — Как получить текущие свойства пользователя в исходном файле способностей при использовании аддона ember-can

Как получить объект пользователя в исходном файле возможностей в аддоне Ember-can. Вот так выглядит мой файл способностей.

import Ember from 'ember';
import { Ability } from 'ember-can';

export default Ability.extend({
    canWrite: Ember.computed('user.isAdmin', function() {
       return this.get('user.isAdmin');
    })
});

person Vivekraj K R    schedule 20.01.2017    source источник


Ответы (1)


Согласно официальной документации:

Инъекция пользователя

Как способность узнает, кто вошел в систему? Это зависит от того, как вы реализуете это в своем приложении!

Если вы используете Ember.Service в качестве своего сеанса, вы можете просто внедрить его в способность:

// app/abilities/foo.js
import Ember from 'ember';
import { Ability } from 'ember-can';

export default Ability.extend({
  session: Ember.inject.service()
});

Если вы используете ember-simple-auth, вы, вероятно, захотите внедрить сеанс simple-auth-session:main в классы способностей.

Для этого добавьте инициализатор следующим образом:

// app/initializers/inject-session-into-abilities.js
export default {
  name: 'inject-session-into-abilities',
  initialize(app) {
    app.inject('ability', 'session', 'simple-auth-session:main');
  }
};

Классы способностей теперь будут иметь доступ к сеансу, который затем можно использовать для проверки того, вошел ли пользователь в систему и т. д.

person Samuel Herzog    schedule 20.01.2017
comment
как я могу получить пользовательский объект через веб-службу в классе способностей? - person Vivekraj K R; 20.01.2017
comment
Я думаю, что это то, что вы на самом деле не должны делать, чтобы сохранить его СУХИМ ... Используйте службу, чтобы получить свой пользовательский объект через веб-службу, и внедрить эту службу в свой класс способностей. - person Samuel Herzog; 20.01.2017
comment
Как внедрить этот пользовательский объект в класс способностей? - person Vivekraj K R; 23.01.2017
comment
С DI, предоставляемым Ember: guides.emberjs.com /v2.10.0/приложения/внедрение зависимостей/ - person Samuel Herzog; 23.01.2017
comment
Возможно, вы захотите попробовать эту серию скринкастов с более подробными объяснениями: emberscreencasts.com /теги/авторизация пользователя - person Samuel Herzog; 23.01.2017
comment
Спасибо за вашу помощь. Наконец-то я могу внедрить свойства пользователя в сам сеанс. Но возникает другая проблема stackoverflow.com/questions/41825811/ - person Vivekraj K R; 24.01.2017