diff --git a/app/controllers/admin/reports_controller.rb b/app/controllers/admin/reports_controller.rb new file mode 100644 index 0000000000000000000000000000000000000000..3eb5ab51717b0c0a3085f0da8584db4fc816101a --- /dev/null +++ b/app/controllers/admin/reports_controller.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class Admin::ReportsController < ApplicationController + before_action :require_admin! + + layout 'admin' + + def index + @reports = Report.includes(:account, :target_account).paginate(page: params[:page], per_page: 40) + @reports = params[:action_taken].present? ? @reports.resolved : @reports.unresolved + end + + def show + @report = Report.find(params[:id]) + @statuses = Status.where(id: @report.status_ids) + end +end diff --git a/app/models/status.rb b/app/models/status.rb index e440bbacabe627421688319ec76807746923d634..46d92ea3318b16e8cbd34a8277f66e2069d4d5ae 100644 --- a/app/models/status.rb +++ b/app/models/status.rb @@ -77,7 +77,7 @@ class Status < ApplicationRecord def permitted?(other_account = nil) if private_visibility? - (account.id == other_account&.id || other_account&.following?(account) || mentions.include?(other_account)) + (account.id == other_account&.id || other_account&.following?(account) || mentions.where(account: other_account).exists?) else other_account.nil? || !account.blocking?(other_account) end diff --git a/app/views/admin/accounts/show.html.haml b/app/views/admin/accounts/show.html.haml index 206d6f81eab3731185dbe1040a4c9d911170a009..b528e161e4fb03fc4adbbb2deed104c1a4796fa0 100644 --- a/app/views/admin/accounts/show.html.haml +++ b/app/views/admin/accounts/show.html.haml @@ -22,7 +22,11 @@ %td= @account.user.current_sign_in_ip %tr %th Most recent activity - %td= l @account.user.current_sign_in_at + %td + - if @account.user.current_sign_in_at + = l @account.user.current_sign_in_at + - else + Never - else %tr %th Profile URL diff --git a/app/views/admin/reports/index.html.haml b/app/views/admin/reports/index.html.haml new file mode 100644 index 0000000000000000000000000000000000000000..8a5414cef3db618a412bdbfaa5facfac72302893 --- /dev/null +++ b/app/views/admin/reports/index.html.haml @@ -0,0 +1,27 @@ +- content_for :page_title do + Reports + +.filters + .filter-subset + %strong Status + %ul + %li= filter_link_to 'Unresolved', action_taken: nil + %li= filter_link_to 'Resolved', action_taken: '1' + +%table.table + %thead + %tr + %th ID + %th Target + %th Reported by + %th Comment + %th + %tbody + - @reports.each do |report| + %tr + %td= "##{report.id}" + %td= link_to report.target_account.acct, admin_account_path(report.target_account.id) + %td= link_to report.account.acct, admin_account_path(report.account.id) + %td= truncate(report.comment, length: 30, separator: ' ') + %td= table_link_to 'circle', 'View', admin_report_path(report) += will_paginate @reports, pagination_options diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml new file mode 100644 index 0000000000000000000000000000000000000000..8aeb562006808643f2ba24d4b591cdf614bb1ac3 --- /dev/null +++ b/app/views/admin/reports/show.html.haml @@ -0,0 +1,2 @@ +- content_for :page_title do + = "Report ##{@report.id}" diff --git a/config/navigation.rb b/config/navigation.rb index b2930f62fea0ede1b0784af1b4a6525ec8a9ec32..0d43a9f73157466d72401f89a5955f2b106820bf 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -13,6 +13,7 @@ SimpleNavigation::Configuration.run do |navigation| end primary.item :admin, safe_join([fa_icon('cogs fw'), 'Administration']), admin_accounts_url, if: proc { current_user.admin? } do |admin| + admin.item :reports, safe_join([fa_icon('flag fw'), 'Reports']), admin_reports_url, highlights_on: %r{/admin/reports} admin.item :accounts, safe_join([fa_icon('users fw'), 'Accounts']), admin_accounts_url, highlights_on: %r{/admin/accounts} admin.item :pubsubhubbubs, safe_join([fa_icon('paper-plane-o fw'), 'PubSubHubbub']), admin_pubsubhubbub_index_url admin.item :domain_blocks, safe_join([fa_icon('lock fw'), 'Domain Blocks']), admin_domain_blocks_url diff --git a/config/routes.rb b/config/routes.rb index 419b17ce1ca878a7acc562997d89d46952466dc1..e3fef9d567db63437ff6ff621038dc18b1342324 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -66,6 +66,7 @@ Rails.application.routes.draw do resources :pubsubhubbub, only: [:index] resources :domain_blocks, only: [:index, :create] resources :settings, only: [:index, :update] + resources :reports, only: [:index, :show] resources :accounts, only: [:index, :show] do member do