ruby-on-rails-3refinerycmsauthentication

Can we use refinerycms for user authentication purpose


Am developing one website for which I have to do user login and registration form for the authentication purpose. My question is can we do this using only refinerycms and if it is possible please tell me how to do this. If it is not possible then please tell me which is the best approach. Am trying to implement user authentication using refinerycms. Am new to refinerycms.


Solution

  • Refinery uses devise so you can use that as well. You can create a model that might look something like this:

    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
    

    and not to forget the migration:

    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
    

    This should create the basic model that you can use. To finish up, change the routes.rb in your extension to add devise routes:

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

    and override refinery/partners/passwords_controller.rb

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

    and refinery/partners/sessions_controller.rb

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

    now you should have everything you need