From 3eeba6cbb044d9af8d531b32c4dab819a16ee5ac Mon Sep 17 00:00:00 2001 From: Nishanth Vijayan Date: Sat, 2 Jul 2016 00:38:43 +0530 Subject: [PATCH] Allow admins to manually confirm users --- app/controllers/admin/users_controller.rb | 8 ++++++++ app/views/admin/users/index.html.haml | 1 + config/routes.rb | 7 ++++++- spec/features/user_spec.rb | 17 ++++++++++++++++- 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/app/controllers/admin/users_controller.rb b/app/controllers/admin/users_controller.rb index dbd54ffd..b5abc85b 100644 --- a/app/controllers/admin/users_controller.rb +++ b/app/controllers/admin/users_controller.rb @@ -36,6 +36,14 @@ module Admin def edit; end + def confirm + if @user.confirm + redirect_to admin_users_path, notice: "Confirmed #{@user.name}'s email (#{@user.email})!" + else + redirect_to admin_users_path, error: "Could not confirm #{@user.name}'s email (#{@user.email}). #{@user.errors.full_messages.join('. ')}." + end + end + private def user_params diff --git a/app/views/admin/users/index.html.haml b/app/views/admin/users/index.html.haml index c3d7b672..1cbe6122 100644 --- a/app/views/admin/users/index.html.haml +++ b/app/views/admin/users/index.html.haml @@ -27,6 +27,7 @@ confirmed - else unconfirmed + = link_to 'Confirm', confirm_admin_user_path(user), method: :patch, class: 'btn btn-xs btn-success' %td = user.email %td diff --git a/config/routes.rb b/config/routes.rb index b2180a8b..e05e00bc 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -18,7 +18,12 @@ Osem::Application.routes.draw do resources :users, except: [:new, :index, :create, :destroy] namespace :admin do - resources :users + resources :users do + member do + patch :confirm + end + end + resources :comments, only: [:index] resources :conference do resource :contact, except: [:index, :new, :create, :show, :destroy] diff --git a/spec/features/user_spec.rb b/spec/features/user_spec.rb index 7294ec5c..8fa6dc3f 100644 --- a/spec/features/user_spec.rb +++ b/spec/features/user_spec.rb @@ -2,8 +2,23 @@ require 'spec_helper' feature User do - shared_examples 'admin ability' do + let(:admin) { create(:admin) } + shared_examples 'admin ability' do + scenario 'manually confirm unconfirmed users', feature: true, js: true do + sign_in admin + user = create(:user, confirmed_at: nil) + expect(user.confirmed?).to be false + visit admin_users_path + + within('tr', text: user.name) do + expect(page.has_content?('unconfirmed')).to be true + click_link 'Confirm' + end + + user.reload + expect(user.confirmed?).to be true + end end describe 'admin' do