login with both email or username
This commit is contained in:
parent
1496c01521
commit
9d92433a7c
4 changed files with 27 additions and 10 deletions
|
@ -46,6 +46,13 @@ class User < ActiveRecord::Base
|
||||||
|
|
||||||
attr_accessor :force_random_password
|
attr_accessor :force_random_password
|
||||||
|
|
||||||
|
# Virtual attribute for authenticating by either username or email
|
||||||
|
attr_accessor :login
|
||||||
|
|
||||||
|
# Add login to attr_accessible
|
||||||
|
attr_accessible :login
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Relations
|
# Relations
|
||||||
#
|
#
|
||||||
|
@ -140,6 +147,16 @@ class User < ActiveRecord::Base
|
||||||
# Class methods
|
# Class methods
|
||||||
#
|
#
|
||||||
class << self
|
class << self
|
||||||
|
# Devise method overriden to allow sing in with email or username
|
||||||
|
def find_for_database_authentication(warden_conditions)
|
||||||
|
conditions = warden_conditions.dup
|
||||||
|
if login = conditions.delete(:login)
|
||||||
|
where(conditions).where(["lower(username) = :value OR lower(email) = :value", { value: login.downcase }]).first
|
||||||
|
else
|
||||||
|
where(conditions).first
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def filter filter_name
|
def filter filter_name
|
||||||
case filter_name
|
case filter_name
|
||||||
when "admins"; self.admins
|
when "admins"; self.admins
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
- if ldap_enable?
|
- if ldap_enable?
|
||||||
= render :partial => 'devise/sessions/new_ldap'
|
= render partial: 'devise/sessions/new_ldap'
|
||||||
- else
|
- else
|
||||||
= form_for(resource, :as => resource_name, :url => session_path(resource_name), :html => { :class => "login-box" }) do |f|
|
= form_for(resource, as: resource_name, url: session_path(resource_name), html: { class: "login-box" }) do |f|
|
||||||
= image_tag "login-logo.png", :width => "304", :height => "66", :class => "login-logo", :alt => "Login Logo"
|
= image_tag "login-logo.png", width: "304", height: "66", class: "login-logo", alt: "Login Logo"
|
||||||
= f.email_field :email, :class => "text top", :placeholder => "Email", :autofocus => "autofocus"
|
= f.text_field :login, class: "text top", placeholder: "Username or Email", autofocus: "autofocus"
|
||||||
= f.password_field :password, :class => "text bottom", :placeholder => "Password"
|
= f.password_field :password, class: "text bottom", placeholder: "Password"
|
||||||
- if devise_mapping.rememberable?
|
- if devise_mapping.rememberable?
|
||||||
.clearfix.inputs-list
|
.clearfix.inputs-list
|
||||||
%label.checkbox.remember_me{:for => "user_remember_me"}
|
%label.checkbox.remember_me{for: "user_remember_me"}
|
||||||
= f.check_box :remember_me
|
= f.check_box :remember_me
|
||||||
%span Remember me
|
%span Remember me
|
||||||
%br/
|
%br/
|
||||||
= f.submit "Sign in", :class => "btn-create btn"
|
= f.submit "Sign in", class: "btn-create btn"
|
||||||
.pull-right
|
.pull-right
|
||||||
= link_to "Forgot your password?", new_password_path(resource_name), :class => "btn"
|
= link_to "Forgot your password?", new_password_path(resource_name), class: "btn"
|
||||||
%br/
|
%br/
|
||||||
- if Gitlab.config.gitlab.signup_enabled
|
- if Gitlab.config.gitlab.signup_enabled
|
||||||
%hr/
|
%hr/
|
||||||
|
|
|
@ -23,7 +23,7 @@ Devise.setup do |config|
|
||||||
# session. If you need permissions, you should implement that in a before filter.
|
# session. If you need permissions, you should implement that in a before filter.
|
||||||
# You can also supply a hash where the value is a boolean determining whether
|
# You can also supply a hash where the value is a boolean determining whether
|
||||||
# or not authentication should be aborted when the value is not present.
|
# or not authentication should be aborted when the value is not present.
|
||||||
# config.authentication_keys = [ :email ]
|
config.authentication_keys = [ :login ]
|
||||||
|
|
||||||
# Configure parameters from the request object used for authentication. Each entry
|
# Configure parameters from the request object used for authentication. Each entry
|
||||||
# given should be a request method and it will automatically be passed to the
|
# given should be a request method and it will automatically be passed to the
|
||||||
|
|
|
@ -12,7 +12,7 @@ module LoginHelpers
|
||||||
# user - User instance to login with
|
# user - User instance to login with
|
||||||
def login_with(user)
|
def login_with(user)
|
||||||
visit new_user_session_path
|
visit new_user_session_path
|
||||||
fill_in "user_email", with: user.email
|
fill_in "user_login", with: user.email
|
||||||
fill_in "user_password", with: "123456"
|
fill_in "user_password", with: "123456"
|
||||||
click_button "Sign in"
|
click_button "Sign in"
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue