2013-07-25 33 views
2

我有一個網絡,人們可以在其中撰寫帖子,並且他們有自己的帖子的個人提要以及每個人的網絡提要。如何阻止用戶在Omniauth中編輯其他用戶帖子(導軌)

問題是,任何omniauth用戶都可以通過在URL中輸入/編輯或刪除來編輯其他用戶。

不能有這個活的網站!

有沒有人有如何快速回答這個問題?我有:

before_filter :authenticate_user!, :except => [:index, :show] 

但我不能沒有錯誤地找出如何鎖定編輯創建該帖子的用戶。

型號 - user.rb

class User 
    has_many :posts 
end 

型號 - post.rb

class Post 
    belongs_to :user 
end 

讓我知道如果你想看到的幫助更多 - 感謝! -D

回答

3

如果我正確地閱讀了您的內容,您的用戶將通過OmniAuth進行身份驗證,但現在您正在尋找一種方法來根據權限或所有權爲其授予特定資源/操作的權限。

用於授權用戶,組,角色和中間人的資源/操作的最流行的gem是CanCan。

Can, can you do the CanCan?

還有一個railscast video,幫助我理解我的應用程序創業板的應用。

一旦你知道如何在CanCan中編寫能力,take a look here能夠解決你原來的問題,並根據父級用戶進行後期編輯。

+1

謝謝科爾森,有一個完整的brainfart。謝謝你讓我回來。歡呼 – keade

+1

不用擔心。它發生在我們所有人身上。^_ ^ – colsen

1

如果你已經從無到有您的應用程序,而不康康舞寶石,然後用這個方法

def logged_in_user 
    unless current_user?(@model.user) 
    flash[:danger] = "You do not have authorization to edit this post" #if not logged in as the owner of the post 
    redirect_to login_url 
    end 
    end 

,並確保你有你的行動之前設置

before_action:LOGGED_IN_USER,只有:[:編輯,:更新,:刪除]

相關問題