Admin UI for confirming users (#2245)
* Shows confirmed status in list. * Adds ability to confirm users in admin UI. * Added new english translations. * Addresses feedback from #2245. * More feedback.
This commit is contained in:
		
							
								
								
									
										18
									
								
								app/controllers/admin/confirmations_controller.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								app/controllers/admin/confirmations_controller.rb
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| # frozen_string_literal: true | ||||
|  | ||||
| module Admin | ||||
|   class ConfirmationsController < BaseController | ||||
|     before_action :set_account | ||||
|  | ||||
|     def create | ||||
|       @account.user.confirm | ||||
|       redirect_to admin_accounts_path | ||||
|     end | ||||
|  | ||||
|     private | ||||
|  | ||||
|     def set_account | ||||
|       @account = Account.find(params[:account_id]) | ||||
|     end | ||||
|   end | ||||
| end | ||||
| @@ -19,6 +19,10 @@ class User < ApplicationRecord | ||||
|   scope :admins,    -> { where(admin: true) } | ||||
|   scope :confirmed, -> { where.not(confirmed_at: nil) } | ||||
|  | ||||
|   def confirmed? | ||||
|     confirmed_at.present? | ||||
|   end | ||||
|  | ||||
|   def send_devise_notification(notification, *args) | ||||
|     devise_mailer.send(notification, self, *args).deliver_later | ||||
|   end | ||||
|   | ||||
| @@ -25,6 +25,7 @@ | ||||
|     %tr | ||||
|       %th= t('admin.accounts.username') | ||||
|       %th= t('admin.accounts.domain') | ||||
|       %th= t('admin.accounts.confirmed') | ||||
|       %th= fa_icon 'paper-plane-o' | ||||
|       %th | ||||
|   %tbody | ||||
| @@ -34,6 +35,12 @@ | ||||
|         %td | ||||
|           - unless account.local? | ||||
|             = link_to account.domain, admin_accounts_path(by_domain: account.domain) | ||||
|         %td | ||||
|           - if account.local? | ||||
|             - if account.user.present? && account.user.confirmed? | ||||
|               %i.fa.fa-check | ||||
|             - else  | ||||
|               %i.fa.fa-times | ||||
|         %td | ||||
|           - if account.local? | ||||
|             = t('admin.accounts.location.local') | ||||
|   | ||||
| @@ -77,6 +77,9 @@ | ||||
|   - else | ||||
|     = link_to t('admin.accounts.silence'), admin_account_silence_path(@account.id), method: :post, class: 'button' | ||||
|  | ||||
|   - unless @account.user.confirmed? | ||||
|     = link_to t('admin.accounts.confirm'), admin_account_confirmation_path(@account.id), method: :post, class: 'button' | ||||
|  | ||||
|   - if @account.suspended? | ||||
|     = link_to t('admin.accounts.undo_suspension'), admin_account_suspension_path(@account.id), method: :delete, class: 'button' | ||||
|   - else | ||||
|   | ||||
| @@ -43,6 +43,8 @@ en: | ||||
|   admin: | ||||
|     accounts: | ||||
|       are_you_sure: Are you sure? | ||||
|       confirm: Confirm | ||||
|       confirmed: Confirmed | ||||
|       display_name: Display name | ||||
|       domain: Domain | ||||
|       edit: Edit | ||||
|   | ||||
| @@ -86,6 +86,7 @@ Rails.application.routes.draw do | ||||
|       resource :reset, only: [:create] | ||||
|       resource :silence, only: [:create, :destroy] | ||||
|       resource :suspension, only: [:create, :destroy] | ||||
|       resource :confirmation, only: [:create] | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   | ||||
| @@ -98,6 +98,18 @@ RSpec.describe User, type: :model do | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   describe '#confirmed?' do | ||||
|     it 'returns true when a confirmed_at is set' do | ||||
|       user = Fabricate.build(:user, confirmed_at: Time.now.utc) | ||||
|       expect(user.confirmed?).to be true | ||||
|     end | ||||
|  | ||||
|     it 'returns false if a confirmed_at is nil' do | ||||
|       user = Fabricate.build(:user, confirmed_at: nil) | ||||
|       expect(user.confirmed?).to be false | ||||
|     end | ||||
|   end | ||||
|  | ||||
|   describe 'whitelist' do | ||||
|     around(:each) do |example| | ||||
|       old_whitelist = Rails.configuration.x.email_whitelist | ||||
|   | ||||
		Reference in New Issue
	
	Block a user