diff --git a/app/controllers/passwords_controller.rb b/app/controllers/users/passwords_controller.rb similarity index 85% rename from app/controllers/passwords_controller.rb rename to app/controllers/users/passwords_controller.rb index f4c7130..31d9ada 100644 --- a/app/controllers/passwords_controller.rb +++ b/app/controllers/users/passwords_controller.rb @@ -1,4 +1,4 @@ -class PasswordsController < ApplicationController +class Users::PasswordsController < ApplicationController before_action :no_login_required before_action :check_token, only: [:edit, :update] @@ -11,7 +11,7 @@ class PasswordsController < ApplicationController def create if @user = User.find_by(email: params[:email]) UserMailer.password_reset(@user.id).deliver - redirect_to password_path + redirect_to users_password_path else flash.now[:warning] = I18n.t('passwords.flashes.user_email_not_found') render :new @@ -35,7 +35,7 @@ class PasswordsController < ApplicationController def check_token unless @user = User.find_by_password_reset_token(params[:token]) flash[:warning] = I18n.t('passwords.flashes.token_invalid') - redirect_to new_password_path + redirect_to new_users_password_path end end end diff --git a/app/views/sessions/access_limiter.html.slim b/app/views/sessions/access_limiter.html.slim index 6728acf..ef0af28 100644 --- a/app/views/sessions/access_limiter.html.slim +++ b/app/views/sessions/access_limiter.html.slim @@ -10,5 +10,5 @@ = render 'share/flash_messages' = t '.are_you' ' - a href=new_password_path + a href=new_users_password_path = t '.forgot_password' diff --git a/app/views/sessions/new.html.slim b/app/views/sessions/new.html.slim index 406d6df..e8653ed 100644 --- a/app/views/sessions/new.html.slim +++ b/app/views/sessions/new.html.slim @@ -17,5 +17,5 @@ = password_field_tag :password, nil, placeholder: t('.password'), tabindex: 2, class: 'form-control' = submit_tag t('.sign_in'), class: 'btn btn-success', tabindex: 5 hr - a href=new_password_path + a href=new_users_password_path = t '.forgot_password' diff --git a/app/views/user_mailer/password_reset.html.slim b/app/views/user_mailer/password_reset.html.slim index 5379a3f..55f7d30 100644 --- a/app/views/user_mailer/password_reset.html.slim +++ b/app/views/user_mailer/password_reset.html.slim @@ -1 +1 @@ -= sanitize markdown t '.text_body', url: edit_password_url(token: @user.password_reset_token), host: CONFIG['host'] += sanitize markdown t '.text_body', url: edit_users_password_url(token: @user.password_reset_token), host: CONFIG['host'] diff --git a/app/views/user_mailer/password_reset.text.erb b/app/views/user_mailer/password_reset.text.erb index 42749cc..1f0fa21 100644 --- a/app/views/user_mailer/password_reset.text.erb +++ b/app/views/user_mailer/password_reset.text.erb @@ -1 +1 @@ -<%= t '.text_body', url: edit_password_url(email: @user.email, token: @user.password_reset_token), host: CONFIG['host'] %> +<%= t '.text_body', url: edit_users_password_url(email: @user.email, token: @user.password_reset_token), host: CONFIG['host'] %> diff --git a/app/views/passwords/edit.html.slim b/app/views/users/passwords/edit.html.slim similarity index 93% rename from app/views/passwords/edit.html.slim rename to app/views/users/passwords/edit.html.slim index c0bd637..db34bf1 100644 --- a/app/views/passwords/edit.html.slim +++ b/app/views/users/passwords/edit.html.slim @@ -7,7 +7,7 @@ h3.panel-title = t '.password_reset' .panel-body - = form_for @user, url: password_path, html: { class: 'password-form' } do |f| + = form_for @user, url: users_password_path, html: { class: 'password-form' } do |f| = render 'share/flash_messages' = render 'share/form_error_messages', form: f = hidden_field_tag :email, params[:email] diff --git a/app/views/passwords/new.html.slim b/app/views/users/passwords/new.html.slim similarity index 92% rename from app/views/passwords/new.html.slim rename to app/views/users/passwords/new.html.slim index d41536e..0bdcc38 100644 --- a/app/views/passwords/new.html.slim +++ b/app/views/users/passwords/new.html.slim @@ -7,7 +7,7 @@ h3.panel-title = t '.password_reset' .panel-body - = form_tag password_path do + = form_tag users_password_path do = render 'share/flash_messages' .form-group = label_tag :email, t('.email'), class: 'control-label' diff --git a/app/views/passwords/show.html.slim b/app/views/users/passwords/show.html.slim similarity index 100% rename from app/views/passwords/show.html.slim rename to app/views/users/passwords/show.html.slim diff --git a/config/locales/en.yml b/config/locales/en.yml index 0bab139..4935edd 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -148,23 +148,6 @@ en: commented_on: Commented on mention: mentioned_you_on: Mentioned you on - passwords: - edit: - password_reset: Password reset - save_changes: Save changes - flashes: - successfully_update: Successfully update - token_invalid: Token invalid - user_email_not_found: User email not found - new: - email: Email - password_reset: Password reset - send_reset_email: Send reset email - your_email: Your email - show: - password_reset: Password reset - password_reset_email_has_been_sent_message: Password reset email has been sent - message sessions: access_limiter: are_you: Are you @@ -270,6 +253,23 @@ en: %{url} users: + passwords: + edit: + password_reset: Password reset + save_changes: Save changes + flashes: + successfully_update: Successfully update + token_invalid: Token invalid + user_email_not_found: User email not found + new: + email: Email + password_reset: Password reset + send_reset_email: Send reset email + your_email: Your email + show: + password_reset: Password reset + password_reset_email_has_been_sent_message: Password reset email has been sent + message comments: index: comments: Comments diff --git a/config/locales/zh-CN.yml b/config/locales/zh-CN.yml index 2c4739e..4e81f2d 100644 --- a/config/locales/zh-CN.yml +++ b/config/locales/zh-CN.yml @@ -155,22 +155,6 @@ zh-CN: commented_on: "评论了" mention: mentioned_you_on: "提及你于" - passwords: - edit: - password_reset: "密码重置" - save_changes: "保存修改" - flashes: - successfully_update: "成功更新,现在可以使用新密码登录!" - token_invalid: "密码重置地址过期或无效,请重新发送重置邮件。" - user_email_not_found: "没有找到此用户。" - new: - email: Email - password_reset: "密码重置" - send_reset_email: "发送重置密码" - your_email: "你的 Email 地址" - show: - password_reset: "密码重置" - password_reset_email_has_been_sent_message: "密码重置邮件已发送,请注意查收。" sessions: access_limiter: are_you: "你是否" @@ -274,6 +258,22 @@ zh-CN: %{url} users: + passwords: + edit: + password_reset: "密码重置" + save_changes: "保存修改" + flashes: + successfully_update: "成功更新,现在可以使用新密码登录!" + token_invalid: "密码重置地址过期或无效,请重新发送重置邮件。" + user_email_not_found: "没有找到此用户。" + new: + email: Email + password_reset: "密码重置" + send_reset_email: "发送重置密码" + your_email: "你的 Email 地址" + show: + password_reset: "密码重置" + password_reset_email_has_been_sent_message: "密码重置邮件已发送,请注意查收。" comments: index: comments: "评论" diff --git a/config/routes.rb b/config/routes.rb index e9e2b3b..8405ef4 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,7 +12,6 @@ Rails.application.routes.draw do get 'login', to: 'sessions#new', as: 'login' post 'login', to: 'sessions#create' delete 'logout', to: 'sessions#destroy' - resource :password, only: [:show, :new, :create, :edit, :update] post 'markdown/preview', to: 'markdown#preview' @@ -23,6 +22,10 @@ Rails.application.routes.draw do end end + namespace :users do + resource :password, only: [:show, :new, :create, :edit, :update] + end + concern :commentable do resources :comments, only: [:create] end diff --git a/test/controllers/passwords_controller_test.rb b/test/controllers/users/passwords_controller_test.rb similarity index 88% rename from test/controllers/passwords_controller_test.rb rename to test/controllers/users/passwords_controller_test.rb index 485da8f..32c2de3 100644 --- a/test/controllers/passwords_controller_test.rb +++ b/test/controllers/users/passwords_controller_test.rb @@ -1,6 +1,6 @@ require 'test_helper' -class PasswordsControllerTest < ActionController::TestCase +class Users::PasswordsControllerTest < ActionController::TestCase test "should get new page" do get :new assert_response :success, @response.body @@ -12,7 +12,7 @@ class PasswordsControllerTest < ActionController::TestCase assert_difference "ActionMailer::Base.deliveries.size" do post :create, email: 'user@example.com' end - assert_redirected_to password_path + assert_redirected_to users_password_path reset_email = ActionMailer::Base.deliveries.last assert_equal 'user@example.com', reset_email.to[0] @@ -28,13 +28,13 @@ class PasswordsControllerTest < ActionController::TestCase test "should not get edit page if token invalid" do user = create(:user) get :edit, email: user.email - assert_redirected_to new_password_path + assert_redirected_to new_users_password_path end test "should not get edit page if token expired" do user = create(:user) get :edit, token: User.verifier_for('password-reset').generate([user.id, 2.hours.ago]) - assert_redirected_to new_password_path + assert_redirected_to new_users_password_path end test "should get edit page" do