Browse Source

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.
closed-social-glitch-2
Ash Furrow 7 years ago
committed by Eugen
parent
commit
723f25a999
7 changed files with 47 additions and 0 deletions
  1. +18
    -0
      app/controllers/admin/confirmations_controller.rb
  2. +4
    -0
      app/models/user.rb
  3. +7
    -0
      app/views/admin/accounts/index.html.haml
  4. +3
    -0
      app/views/admin/accounts/show.html.haml
  5. +2
    -0
      config/locales/en.yml
  6. +1
    -0
      config/routes.rb
  7. +12
    -0
      spec/models/user_spec.rb

+ 18
- 0
app/controllers/admin/confirmations_controller.rb View 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

+ 4
- 0
app/models/user.rb View File

@ -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

+ 7
- 0
app/views/admin/accounts/index.html.haml View File

@ -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')

+ 3
- 0
app/views/admin/accounts/show.html.haml View File

@ -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

+ 2
- 0
config/locales/en.yml View File

@ -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

+ 1
- 0
config/routes.rb View File

@ -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

+ 12
- 0
spec/models/user_spec.rb View File

@ -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

Loading…
Cancel
Save