2012-06-22 157 views
4

我正在開發一個網站,爲此我必須爲用戶登錄和註冊表單進行身份驗證。我的問題是,我們可以只使用refinerycms來做到這一點,如果可能的話,請告訴我如何做到這一點。如果不可能,那麼請告訴我哪個是最好的方法。我試圖使用refinerycms來實現用戶認證。對煉油廠來說是新的。在此先感謝我們可以使用refinerycms進行用戶身份驗證嗎

回答

7

煉油廠使用設計,所以你可以使用它。您可以創建一個模型,可能是這個樣子:

module Refinery 
    module Partners 
    class Partner < Refinery::Core::BaseModel 
     self.table_name = 'refinery_partners'  

     acts_as_indexed :fields => [:name] 

     validates :email, :presence => true, :uniqueness => true 

     #devise methods 
     devise :database_authenticatable, :recoverable, :rememberable, :trackable,:validatable, :authentication_keys => [:email] 


    end 
    end 
end 

並沒有忘記遷移:

class CreatePartnersPartners < ActiveRecord::Migration 

    def up 
    create_table :refinery_partners do |t| 
     t.string :email 
     t.string :name 

     ## Database authenticatable 
     t.string :encrypted_password, :null => false, :default => "" 

     ## Recoverable 
     t.string :reset_password_token 
     t.datetime :reset_password_sent_at 

     ## Rememberable 
     t.datetime :remember_created_at 

     ## Trackable 
     t.integer :sign_in_count, :default => 0 
     t.datetime :current_sign_in_at 
     t.datetime :last_sign_in_at 
     t.string :current_sign_in_ip 
     t.string :last_sign_in_ip 

     t.timestamps 
    end 

    end 

    def down 
    if defined?(::Refinery::UserPlugin) 
     ::Refinery::UserPlugin.destroy_all({:name => "refinerycms-partners"}) 
    end 

    if defined?(::Refinery::Page) 
     ::Refinery::Page.delete_all({:link_url => "/partners/partners"}) 
    end 

    drop_table :refinery_partners 

    end 

end 

這應該創建一個可以使用的基本模型。要完成了,改變的routes.rb在擴展來添加色器件路線:

devise_for :partners, :class_name => "Refinery::Partners::Partner", 
    :controllers => {:sessions => 'refinery/partners/sessions', :passwords => 'refinery/partners/passwords'} 

,並覆蓋煉油廠/合作伙伴/ passwords_controller.rb

module Refinery 
    module Partners 
    class PasswordsController < Devise::PasswordsController 
    end 
    end 
end 

和煉油廠/合作伙伴/ sessions_controller.rb

module Refinery 
    module Partners 
    class SessionsController < Devise::SessionsController 
    end 
    end 
end 

現在你應該有你需要的一切

相關問題