Custom password field with devise (ruby) -


i'm using database shared between 2 rails apps.

a webapp using bcrypt , has_secure_password authenticate user, , app, rest api, using devise authenticate users. password hash same.

so, use field password_digest instead of encrypted_password authenticate via devise , don't know how ! (i'm seeking in documentation find nothing). so, have copy / paste password hash password_digest encrypted_password yet.

here session controller code :

class sessionscontroller < devise::sessionscontroller  before_filter :ensure_params_exist  def create     build_resource     resource = user.find_for_database_authentication(:email => params[:email])     return invalid_login_attempt unless resource      if resource.valid_password?(params[:password])         #resource.ensure_authentication_token!  #make sure user has token generated         sign_in("user", resource)         render :json => { :authentication_token => resource.authentication_token, :lastname => resource.lastname, :firstname => resource.firstname, :last_sign_in => resource.last_sign_in_at }, :status => :created     return     end     invalid_login_attempt end  #def destroy #   # expire auth token #   @user=user.where(:authentication_token=>params[:auth_token]).first #   @user.reset_authentication_token! #   render :json => { :message => ["session deleted."] },  :success => true, :status => :ok #end   protected     def ensure_params_exist         return unless params[:email].blank?         render :json=>{:success=>false, :message=>"missing email parameter"}, :status=>422     end      def invalid_login_attempt         warden.custom_failure!         render :json => { :errors => ["invalid email or password."] },  :success => false, :status => :unauthorized     end 

end

and user model

    class user < activerecord::base   before_save :ensure_authentication_token   # include default devise modules. others available are:   # :token_authenticatable, :confirmable,   # :lockable, :timeoutable , :omniauthable   devise :database_authenticatable, :trackable, :token_authenticatable#, :registerable,          #:recoverable, :rememberable, :trackable, :validatable    # setup accessible (or protected) attributes model   attr_accessible :email, :password, :password_confirmation, :remember_me, :client_id, :firstname, :group_id, :lastname, :password, :password_confirmation, :role_id, :group_ids, :auth_token, :password_digest, :encrypted_password    # relations dans la base de données   belongs_to :client   belongs_to :role    has_many :memberships   has_many :groups, :through => :memberships    end 

i not aware how bcrypt/has_secure_password works, can either use virtual attributes follows

def encrypted_password  return password_digest end  def encrypted_password= value  return password_digest end 

or better, use alias methods set encrypted_password , encrypted_password= alias methods password_digest , password_digest=.


Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -