ограниченный доступ через объект учетной записи/пользователя в emberjs init: function()

Предполагая, что у меня есть модель/контроллер/представления emberjs для учетной записи, проекта и задачи, и я хочу ограничить доступ к проекту и задаче через учетную запись, как мне это сделать в угли. Я рассматриваю возможность использования 'init', но 'init function' вызывается после установки всех остальных свойств, поэтому я не знаю, сможет ли она получить currentUser или создать currentUser по умолчанию и связать его с каждым экземпляром объекта ember, создаваемым в пространстве имен приложений.

В emberjs, если у меня есть это, например:

App = Ember.Application.create({

  init: function() {
    this._super();
    this.setCurrentUser();
    //console.log(this.get("setCurrentUser")
  },

  setCurrentUser: function(json) {
    this.store.load(this.User, json);
    this.set('currentUser', this.User.find(json['id']));
  }
});

Будет ли вышеприведенный код emberjs означать, что всякий раз, когда осуществляется доступ к любой части пространства имен App, например App.project, в первую очередь будет просматриваться текущий пользователь, тем самым гарантируя, что проект ограничен пользователем.

Чтобы было понятнее, например, в rails, я сделаю доступ к области таким образом:

   #account-scope in Rails?
  class ApplicationController < ActionController::Base
    def current_account
      @current_account ||= current_user && current_user.account
    end
  end

  #An imagined ProjectsController showing scoped access of project through account
  @projects = current_account.projects
  @project = current_account.projects.find(params[:id])

Спасибо за ваше понимание.


person brg    schedule 21.11.2012    source источник
comment
Вам действительно нужна модель пользователя в приложении ember? Если вы каким-то образом не манипулируете объектом пользователя в своем приложении, я думаю, что это может быть ненужным. Например, ваш магазин может получать все проекты с сервера, и вы можете оставить область видимости серверу. Таким образом, все объекты привязаны к пользователю, и вам не нужна лишняя пользовательская модель в вашем приложении. Зависит от того, что еще делает ваше приложение.   -  person Sean O'Hara    schedule 22.11.2012
comment
Спасибо за предложение @Sean. Просто для уточнения. Это приложение SaaS, поэтому предположим, что должны быть какие-то манипуляции с пользователями, но чтобы я понял, что вы называете манипуляциями с пользователями, не могли бы вы привести несколько примеров того, что такое манипуляции с пользователями в вашем контексте. Я все еще думал о том, чтобы иметь область видимости на уровне сервера. Когда я увижу ваш ответ, я посмотрю, применимы ли вещи, которые вы называете манипулированием пользователями, или нет. еще раз спасибо.   -  person brg    schedule 22.11.2012
comment
Предполагая, что ваша модель данных поддерживает, кто владеет какими данными и у кого есть доступ для их изменения, возьмите это свойство и передайте его вашей модели в Ember, и вы сможете переключать соответствующий пользовательский интерфейс через привязку. Если у вас есть скрипка, которую вы можете подбросить, я был бы рад взглянуть на нее и дать дополнительные советы. Но я думаю, что переопределение конструктора объекта не облегчает вам задачу. Если у проекта есть пользователь, а у пользователя много проектов, вы сможете довольно быстро определить это в своих привязках.   -  person atsjj    schedule 22.11.2012
comment
@atsjj большое спасибо, что заглянули и предложили посмотреть на скрипку. Вот первоначальный проект скрипта: jsfiddle.net/egKAH/2.   -  person brg    schedule 22.11.2012
comment
Потрясающий. Я посмотрю на это сегодня и вернусь к вам с любыми вопросами или отзывами.   -  person atsjj    schedule 26.11.2012
comment
Этот пост в блоге довольно хорошо отвечает на вопрос. На самом деле нам не нужно использовать функцию инициализации, основанную на подходе в этом блоге: say26.com/using-rails-devise-with-ember-js   -  person brg    schedule 19.01.2013