Сеанс Rails - изменения current_user - PullRequest
1 голос
/ 31 мая 2011

У меня переменная current_user, установленная для вошедшего в систему пользователя, она должна быть статической на время сеанса, но когда я показываю одного из других пользователей, я, кажется, «становлюсь» этим пользователем со всеми его разрешениями (или его отсутствие)

в моем контроллере пользователя:

def show
  @user = User.find(params[:id])

 respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @user }
end
end

в моих сессиях помощник:

  def current_user?(user)
    @current_user = user
  end

 def current_user
   @current_user ||= user_from_remember_token
 end

На моей боковой панели

<%= link_to current_user.username, :controller => 'users', :action => 'show', :id => current_user.id %></br>

Это отражает смену пользователя (как и новое отсутствие дополнительных ссылок «admin»)

Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 31 мая 2011

Метод current_user? неверен.Он устанавливает current_user на user, вместо того, чтобы возвращать, совпадает ли current_user с user.

Если вы измените его на следующее, все, вероятно, будет работать должным образом:

def current_user?(user)
  @current_user == user
end
0 голосов
/ 31 мая 2011

Возможно, ваша система аутентификации хранит текущего пользователя в @current_user и @user - поэтому в вашем действии show вы случайно устанавливаете текущего пользователя на пользователя, которого пытаетесь показать.

Попробуйте @user_to_show в своем действии show и посмотрите, исправит ли это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...