Использование Devise для создания личных профилей - PullRequest
0 голосов
/ 18 сентября 2011

В настоящее время я пытаюсь создать личные профили пользователей, используя гем Devise.До сих пор у меня работали функции регистрации, входа, выхода и редактирования профиля.Проблема заключается в том, что когда пользователь входит в систему, он может видеть всех других пользователей, введя URL-адрес users / [username].Я относительно новичок в рельсах, поэтому я все еще выясняю, как работать с сессиями.

Итак, вопрос в том, как мне ограничить доступ пользователя к частям сайта, относящимся к другим пользователям?И даже лучше, легко ли это сделать с помощью самоцвета Devise?

Другими словами, если я подписываюсь как пользователь john.Я должен видеть сайт / users / john (это мой профиль), но не вижу сайт /user/greg.

спасибо

Ответы [ 2 ]

4 голосов
/ 18 сентября 2011

Devise не будет этого делать, но CanCan, как кто-то упомянул, будет. CanCan может быть немного тяжелым для новичка, просто чтобы сделать то, что вы пытаетесь сделать. Все, что вам нужно сделать, это добавить before_filter, который проверяет, кто пользователь.

Например:

class UserProfilesController < ApplicationController

  before_filter :verify_owner

  def show
    @user_profile = current_user.user_profile
    # or maybe this way, not sure how you have your relations set up
    # @user_profile = UserProfile.where(:user => current_user)
  end

private

  def verify_owner
    # assume the route looks like this  /user/:username
    redirect_to root_url unless current_user.username == params[:username]
  end    

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

Используйте CanCan , чтобы помочь для авторизации. Разработка + CanCan больше ничего!

На CanCan есть отличный RailsCast, с которого можно начать.

...