Аутентификация с помощью before_filter - PullRequest
1 голос
/ 05 сентября 2011

Я пытаюсь выяснить before_filters, и я надеялся на небольшую помощь.

У меня есть простое приложение для блога, с записями, которые могут быть (черновыми или опубликованными) и (общедоступными или частными). Мне было интересно, как я могу сделать свою аутентификацию?

В настоящее время у меня есть:

before_filter :authenticate, :except => [ :show ]

Так что блокирует все действия CRUD. Для show мне нужно проверить, что:

  1. Если это черновик, то вошедший в систему пользователь владеет записью.
  2. Если это личное, пользователь вошел в систему (при этом все вошедшие пользователи могут видеть личные записи)

Я могу сделать это в самом действии, но кажется, что rails способ сделать это в before_filter.

Спасибо!

1 Ответ

1 голос
/ 05 сентября 2011

Сделайте это в фильтре перед.Если вы используете devise, тогда метод current_user доступен, если пользователь вошел в систему. В противном случае замените current_user значением, возвращаемым из вашего метода authenticate.

def find_post
  @post = Post.find(params[:id])
  redirect_to root_path if @post.draft && @post.user != current_user
  redirect_to root_path if @post.private && !current_user
end
...