From cf6ee4ff243b66b2b53faaceed1266999b84c3c1 Mon Sep 17 00:00:00 2001 From: ThibG Date: Tue, 11 Dec 2018 19:28:03 +0100 Subject: [PATCH] Add admin ability to remove an user's header image (#9495) * Fix markup in admin/accounts/:id table for avatar * Add admin ability to remove an user's header image --- app/controllers/admin/accounts_controller.rb | 13 ++++++++++++- app/helpers/admin/action_logs_helper.rb | 2 +- app/policies/account_policy.rb | 4 ++++ app/views/admin/accounts/show.html.haml | 9 ++++++++- config/routes.rb | 1 + 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/controllers/admin/accounts_controller.rb b/app/controllers/admin/accounts_controller.rb index f155543ce..771302db8 100644 --- a/app/controllers/admin/accounts_controller.rb +++ b/app/controllers/admin/accounts_controller.rb @@ -2,7 +2,7 @@ module Admin class AccountsController < BaseController - before_action :set_account, only: [:show, :subscribe, :unsubscribe, :redownload, :remove_avatar, :enable, :disable, :memorialize] + before_action :set_account, only: [:show, :subscribe, :unsubscribe, :redownload, :remove_avatar, :remove_header, :enable, :disable, :memorialize] before_action :require_remote_account!, only: [:subscribe, :unsubscribe, :redownload] before_action :require_local_account!, only: [:enable, :disable, :memorialize] @@ -71,6 +71,17 @@ module Admin redirect_to admin_account_path(@account.id) end + def remove_header + authorize @account, :remove_header? + + @account.header = nil + @account.save! + + log_action :remove_header, @account.user + + redirect_to admin_account_path(@account.id) + end + private def set_account diff --git a/app/helpers/admin/action_logs_helper.rb b/app/helpers/admin/action_logs_helper.rb index c28f0be6b..68cf8c75d 100644 --- a/app/helpers/admin/action_logs_helper.rb +++ b/app/helpers/admin/action_logs_helper.rb @@ -92,7 +92,7 @@ module Admin::ActionLogsHelper opposite_verbs?(log) ? 'negative' : 'positive' when :update, :reset_password, :disable_2fa, :memorialize, :change_email 'neutral' - when :demote, :silence, :disable, :suspend, :remove_avatar, :reopen + when :demote, :silence, :disable, :suspend, :remove_avatar, :remove_header, :reopen 'negative' when :destroy opposite_verbs?(log) ? 'positive' : 'negative' diff --git a/app/policies/account_policy.rb b/app/policies/account_policy.rb index efabe80d0..07bae68ef 100644 --- a/app/policies/account_policy.rb +++ b/app/policies/account_policy.rb @@ -33,6 +33,10 @@ class AccountPolicy < ApplicationPolicy staff? end + def remove_header? + staff? + end + def subscribe? admin? end diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml index c1a5fc1bd..e9f765107 100644 --- a/app/views/admin/accounts/show.html.haml +++ b/app/views/admin/accounts/show.html.haml @@ -16,11 +16,18 @@ %tr %th= t('admin.accounts.avatar') - %th + %td = link_to @account.avatar.url(:original) do = image_tag @account.avatar.url(:original), alt: '', width: 40, height: 40, class: 'avatar' - if @account.local? && @account.avatar? = table_link_to 'trash', t('admin.accounts.remove_avatar'), remove_avatar_admin_account_path(@account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:remove_avatar, @account) + %tr + %th= t('admin.accounts.header') + %td + = link_to @account.header.url(:original) do + = image_tag @account.header.url(:original), alt: '', width: 128, height: 40, class: 'header' + - if @account.local? && @account.header? + = table_link_to 'trash', t('admin.accounts.remove_header'), remove_header_admin_account_path(@account.id), method: :post, data: { confirm: t('admin.accounts.are_you_sure') } if can?(:remove_header, @account) - if @account.local? %tr diff --git a/config/routes.rb b/config/routes.rb index 262868413..4a0289465 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -176,6 +176,7 @@ Rails.application.routes.draw do post :disable post :redownload post :remove_avatar + post :remove_header post :memorialize end