Skip to content

@r00k /gist:906356
Created

Embed URL

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Custom devise strategy
# In config/initializers/local_override.rb:
require 'devise/strategies/authenticatable'
module Devise
module Strategies
class LocalOverride < Authenticatable
def valid?
true
end
def authenticate!
if params[:user]
user = User.find_by_email(params[:user][:email])
if user && user.encrypted_password == params[:user][:password]
success!(user)
else
fail
end
else
fail
end
end
end
end
end
Warden::Strategies.add(:local_override, Devise::Strategies::LocalOverride)
# In config/initializers/devise.rb
config.warden do |manager|
manager.default_strategies(:scope => :user).unshift :local_override
@jancel

How might one test this using rspec?

@r00k
Owner

Sorry, it's been a while since I've looked at this. I'm afraid the answer to that question is left as an exercise to the reader :)

@jancel

I forked it and put my spec in there for hungry minds.

https://gist.github.com/1367606

@r00k
Owner

Thanks!

@aag1091

thanks for code as well specs :)

@michaeljkchoi

Thanks! This was really helpful but to get this working on my end, I had to replace

if user && user.encrypted_password == params[:user][:password]

with

if user && user.valid_password?(params[:user][:password])

I also had to throw a

fail!

in order to get fail to also halt the authentication process.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.