Allow account unlock via email
This commit is contained in:
parent
b95f7b1864
commit
be41d84fb0
10 changed files with 35 additions and 21 deletions
|
@ -19,6 +19,7 @@ v 8.3.0 (unreleased)
|
||||||
- Recognize issue/MR/snippet/commit links as references
|
- Recognize issue/MR/snippet/commit links as references
|
||||||
- Add ignore whitespace change option to commit view
|
- Add ignore whitespace change option to commit view
|
||||||
- Fire update hook from GitLab
|
- Fire update hook from GitLab
|
||||||
|
- Allow account unlock via email
|
||||||
- Style warning about mentioning many people in a comment
|
- Style warning about mentioning many people in a comment
|
||||||
- Fix: sort milestones by due date once again (Greg Smethells)
|
- Fix: sort milestones by due date once again (Greg Smethells)
|
||||||
- Migrate all CI::Services and CI::WebHooks to Services and WebHooks
|
- Migrate all CI::Services and CI::WebHooks to Services and WebHooks
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
# bio :string(255)
|
# bio :string(255)
|
||||||
# failed_attempts :integer default(0)
|
# failed_attempts :integer default(0)
|
||||||
# locked_at :datetime
|
# locked_at :datetime
|
||||||
|
# unlock_token :string(255)
|
||||||
# username :string(255)
|
# username :string(255)
|
||||||
# can_create_group :boolean default(TRUE), not null
|
# can_create_group :boolean default(TRUE), not null
|
||||||
# can_create_team :boolean default(TRUE), not null
|
# can_create_team :boolean default(TRUE), not null
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<p>Hello <%= @resource.email %>!</p>
|
|
||||||
|
|
||||||
<p>Your account has been locked due to an excessive amount of unsuccessful sign in attempts.</p>
|
|
||||||
|
|
||||||
<p>Click the link below to unlock your account:</p>
|
|
||||||
|
|
||||||
<p><%= link_to 'Unlock your account', unlock_url(@resource, unlock_token: @token) %></p>
|
|
10
app/views/devise/mailer/unlock_instructions.html.haml
Normal file
10
app/views/devise/mailer/unlock_instructions.html.haml
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
%p
|
||||||
|
Hello #{@resource.name}!
|
||||||
|
|
||||||
|
%p
|
||||||
|
Your GitLab account has been locked due to an excessive amount of unsuccessful
|
||||||
|
sign in attempts. Your account will automatically unlock in
|
||||||
|
= time_ago_in_words(Devise.unlock_in.from_now)
|
||||||
|
or you may click the link below to unlock now.
|
||||||
|
|
||||||
|
%p= link_to 'Unlock your account', unlock_url(@resource, unlock_token: @token)
|
|
@ -1,12 +0,0 @@
|
||||||
<h2>Resend unlock instructions</h2>
|
|
||||||
|
|
||||||
<%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %>
|
|
||||||
<%= devise_error_messages! %>
|
|
||||||
|
|
||||||
<div><%= f.label :email %><br />
|
|
||||||
<%= f.email_field :email %></div>
|
|
||||||
|
|
||||||
<div><%= f.submit "Resend unlock instructions" %></div>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<%= render partial: "devise/shared/links" %>
|
|
14
app/views/devise/unlocks/new.html.haml
Normal file
14
app/views/devise/unlocks/new.html.haml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
.login-box
|
||||||
|
.login-heading
|
||||||
|
%h3 Resend unlock email
|
||||||
|
.login-body
|
||||||
|
= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f|
|
||||||
|
.devise-errors
|
||||||
|
= devise_error_messages!
|
||||||
|
.clearfix.append-bottom-20
|
||||||
|
= f.email_field :email, class: 'form-control', placeholder: 'Email', autofocus: 'autofocus', autocapitalize: 'off', autocorrect: 'off'
|
||||||
|
.clearfix
|
||||||
|
= f.submit 'Resend unlock instructions', class: 'btn btn-success'
|
||||||
|
|
||||||
|
.clearfix.prepend-top-20
|
||||||
|
= render 'devise/shared/sign_in_link'
|
|
@ -121,14 +121,14 @@ Devise.setup do |config|
|
||||||
config.lock_strategy = :failed_attempts
|
config.lock_strategy = :failed_attempts
|
||||||
|
|
||||||
# Defines which key will be used when locking and unlocking an account
|
# Defines which key will be used when locking and unlocking an account
|
||||||
# config.unlock_keys = [ :email ]
|
config.unlock_keys = [ :email ]
|
||||||
|
|
||||||
# Defines which strategy will be used to unlock an account.
|
# Defines which strategy will be used to unlock an account.
|
||||||
# :email = Sends an unlock link to the user email
|
# :email = Sends an unlock link to the user email
|
||||||
# :time = Re-enables login after a certain amount of time (see :unlock_in below)
|
# :time = Re-enables login after a certain amount of time (see :unlock_in below)
|
||||||
# :both = Enables both strategies
|
# :both = Enables both strategies
|
||||||
# :none = No unlock strategy. You should handle unlocking by yourself.
|
# :none = No unlock strategy. You should handle unlocking by yourself.
|
||||||
config.unlock_strategy = :time
|
config.unlock_strategy = :both
|
||||||
|
|
||||||
# Number of authentication tries before locking an account if lock_strategy
|
# Number of authentication tries before locking an account if lock_strategy
|
||||||
# is failed attempts.
|
# is failed attempts.
|
||||||
|
|
5
db/migrate/20151210030143_add_unlock_token_to_user.rb
Normal file
5
db/migrate/20151210030143_add_unlock_token_to_user.rb
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
class AddUnlockTokenToUser < ActiveRecord::Migration
|
||||||
|
def change
|
||||||
|
add_column :users, :unlock_token, :string
|
||||||
|
end
|
||||||
|
end
|
|
@ -837,6 +837,7 @@ ActiveRecord::Schema.define(version: 20151210125932) do
|
||||||
t.integer "consumed_timestep"
|
t.integer "consumed_timestep"
|
||||||
t.integer "layout", default: 0
|
t.integer "layout", default: 0
|
||||||
t.boolean "hide_project_limit", default: false
|
t.boolean "hide_project_limit", default: false
|
||||||
|
t.string "unlock_token"
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "users", ["admin"], name: "index_users_on_admin", using: :btree
|
add_index "users", ["admin"], name: "index_users_on_admin", using: :btree
|
||||||
|
|
|
@ -26,6 +26,7 @@
|
||||||
# bio :string(255)
|
# bio :string(255)
|
||||||
# failed_attempts :integer default(0)
|
# failed_attempts :integer default(0)
|
||||||
# locked_at :datetime
|
# locked_at :datetime
|
||||||
|
# unlock_token :string(255)
|
||||||
# username :string(255)
|
# username :string(255)
|
||||||
# can_create_group :boolean default(TRUE), not null
|
# can_create_group :boolean default(TRUE), not null
|
||||||
# can_create_team :boolean default(TRUE), not null
|
# can_create_team :boolean default(TRUE), not null
|
||||||
|
|
Loading…
Reference in a new issue