diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-06-13 20:53:04 +0400 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-06-13 20:53:04 +0400 |
commit | 5b40780290e7d7c9e129e58c4f3f435073598ae6 (patch) | |
tree | 4208b073ab460e8f1bfab4fe98cf62d63a937be6 /app | |
parent | 81a9e81fae349e3e2b1cc336bf6cef767d65dbfc (diff) |
Password expire: implement password resource inside profile. add before_fiter check
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/application_controller.rb | 7 | ||||
-rw-r--r-- | app/controllers/passwords_controller.rb | 35 | ||||
-rw-r--r-- | app/views/passwords/new.html.haml | 23 |
3 files changed, 65 insertions, 0 deletions
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 09af5b94164..63ad8d0e56d 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,6 +1,7 @@ class ApplicationController < ActionController::Base before_filter :authenticate_user! before_filter :reject_blocked! + before_filter :check_password_expiration! before_filter :set_current_user_for_thread before_filter :add_abilities before_filter :dev_tools if Rails.env == 'development' @@ -156,4 +157,10 @@ class ApplicationController < ActionController::Base gon.gravatar_url = request.ssl? || Gitlab.config.gitlab.https ? Gitlab.config.gravatar.ssl_url : Gitlab.config.gravatar.plain_url gon.relative_url_root = Gitlab.config.gitlab.relative_url_root end + + def check_password_expiration + if current_user.password_expires_at < Time.now + redirect_to new_profile_password_path and return + end + end end diff --git a/app/controllers/passwords_controller.rb b/app/controllers/passwords_controller.rb new file mode 100644 index 00000000000..166313130ad --- /dev/null +++ b/app/controllers/passwords_controller.rb @@ -0,0 +1,35 @@ +class PasswordsController < ApplicationController + layout 'navless' + + before_filter :set_user + before_filter :set_title + + def new + end + + def create + new_password = params[:user][:password] + new_password_confirmation = params[:user][:password_confirmation] + + result = @user.update_attributes( + password: new_password, + password_confirmation: new_password_confirmation + ) + + if result + redirect_to root_path(notice: 'Password successfully changed') + else + render :new + end + end + + private + + def set_user + @user = current_user + end + + def set_title + @title = "New password" + end +end diff --git a/app/views/passwords/new.html.haml b/app/views/passwords/new.html.haml new file mode 100644 index 00000000000..769a47a042c --- /dev/null +++ b/app/views/passwords/new.html.haml @@ -0,0 +1,23 @@ +%h3.page_title Setup your new password + +%br + += form_for @user, url: profile_password_path, method: :put do |f| + .padded + %p.slead After successful password update you will be redirected to dashboard + -if @user.errors.any? + .alert.alert-error + %ul + - @user.errors.full_messages.each do |msg| + %li= msg + + .clearfix + = f.label :password + .input= f.password_field :password, required: true + .clearfix + = f.label :password_confirmation + .input + = f.password_field :password_confirmation, required: true + .clearfix + .input + = f.submit 'Save password', class: "btn btn-save" |