Implement the ability for an Administrator or Moderator to remove an account avatar (#6998)
parent
4fd71accd4
commit
e7a1716701
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
module Admin
|
module Admin
|
||||||
class AccountsController < BaseController
|
class AccountsController < BaseController
|
||||||
before_action :set_account, only: [:show, :subscribe, :unsubscribe, :redownload, :enable, :disable, :memorialize]
|
before_action :set_account, only: [:show, :subscribe, :unsubscribe, :redownload, :remove_avatar, :enable, :disable, :memorialize]
|
||||||
before_action :require_remote_account!, only: [:subscribe, :unsubscribe, :redownload]
|
before_action :require_remote_account!, only: [:subscribe, :unsubscribe, :redownload]
|
||||||
before_action :require_local_account!, only: [:enable, :disable, :memorialize]
|
before_action :require_local_account!, only: [:enable, :disable, :memorialize]
|
||||||
|
|
||||||
|
@ -60,6 +60,17 @@ module Admin
|
||||||
redirect_to admin_account_path(@account.id)
|
redirect_to admin_account_path(@account.id)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def remove_avatar
|
||||||
|
authorize @account, :remove_avatar?
|
||||||
|
|
||||||
|
@account.avatar = nil
|
||||||
|
@account.save!
|
||||||
|
|
||||||
|
log_action :remove_avatar, @account.user
|
||||||
|
|
||||||
|
redirect_to admin_account_path(@account.id)
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def set_account
|
def set_account
|
||||||
|
|
|
@ -86,7 +86,7 @@ module Admin::ActionLogsHelper
|
||||||
opposite_verbs?(log) ? 'negative' : 'positive'
|
opposite_verbs?(log) ? 'negative' : 'positive'
|
||||||
when :update, :reset_password, :disable_2fa, :memorialize
|
when :update, :reset_password, :disable_2fa, :memorialize
|
||||||
'neutral'
|
'neutral'
|
||||||
when :demote, :silence, :disable, :suspend
|
when :demote, :silence, :disable, :suspend, :remove_avatar
|
||||||
'negative'
|
'negative'
|
||||||
when :destroy
|
when :destroy
|
||||||
opposite_verbs?(log) ? 'positive' : 'negative'
|
opposite_verbs?(log) ? 'positive' : 'negative'
|
||||||
|
|
|
@ -29,6 +29,10 @@ class AccountPolicy < ApplicationPolicy
|
||||||
admin?
|
admin?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def remove_avatar?
|
||||||
|
staff?
|
||||||
|
end
|
||||||
|
|
||||||
def subscribe?
|
def subscribe?
|
||||||
admin?
|
admin?
|
||||||
end
|
end
|
||||||
|
|
|
@ -14,6 +14,14 @@
|
||||||
%th= t('admin.accounts.display_name')
|
%th= t('admin.accounts.display_name')
|
||||||
%td= @account.display_name
|
%td= @account.display_name
|
||||||
|
|
||||||
|
%tr
|
||||||
|
%th= t('admin.accounts.avatar')
|
||||||
|
%th
|
||||||
|
= 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)
|
||||||
|
|
||||||
- if @account.local?
|
- if @account.local?
|
||||||
%tr
|
%tr
|
||||||
%th= t('admin.accounts.role')
|
%th= t('admin.accounts.role')
|
||||||
|
|
|
@ -60,6 +60,7 @@ en:
|
||||||
destroyed_msg: Moderation note successfully destroyed!
|
destroyed_msg: Moderation note successfully destroyed!
|
||||||
accounts:
|
accounts:
|
||||||
are_you_sure: Are you sure?
|
are_you_sure: Are you sure?
|
||||||
|
avatar: Avatar
|
||||||
by_domain: Domain
|
by_domain: Domain
|
||||||
confirm: Confirm
|
confirm: Confirm
|
||||||
confirmed: Confirmed
|
confirmed: Confirmed
|
||||||
|
@ -108,6 +109,7 @@ en:
|
||||||
public: Public
|
public: Public
|
||||||
push_subscription_expires: PuSH subscription expires
|
push_subscription_expires: PuSH subscription expires
|
||||||
redownload: Refresh avatar
|
redownload: Refresh avatar
|
||||||
|
remove_avatar: Remove avatar
|
||||||
reset: Reset
|
reset: Reset
|
||||||
reset_password: Reset password
|
reset_password: Reset password
|
||||||
resubscribe: Resubscribe
|
resubscribe: Resubscribe
|
||||||
|
@ -150,6 +152,7 @@ en:
|
||||||
enable_user: "%{name} enabled login for user %{target}"
|
enable_user: "%{name} enabled login for user %{target}"
|
||||||
memorialize_account: "%{name} turned %{target}'s account into a memoriam page"
|
memorialize_account: "%{name} turned %{target}'s account into a memoriam page"
|
||||||
promote_user: "%{name} promoted user %{target}"
|
promote_user: "%{name} promoted user %{target}"
|
||||||
|
remove_avatar_user: "%{name} removed %{target}'s avatar"
|
||||||
reset_password_user: "%{name} reset password of user %{target}"
|
reset_password_user: "%{name} reset password of user %{target}"
|
||||||
resolve_report: "%{name} dismissed report %{target}"
|
resolve_report: "%{name} dismissed report %{target}"
|
||||||
silence_account: "%{name} silenced %{target}'s account"
|
silence_account: "%{name} silenced %{target}'s account"
|
||||||
|
|
|
@ -144,6 +144,7 @@ Rails.application.routes.draw do
|
||||||
post :enable
|
post :enable
|
||||||
post :disable
|
post :disable
|
||||||
post :redownload
|
post :redownload
|
||||||
|
post :remove_avatar
|
||||||
post :memorialize
|
post :memorialize
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Reference in New Issue