add a domain policy viewer at `/policies`
parent
3f327a3ea7
commit
ccb84572d6
|
@ -0,0 +1,30 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class DomainPolicyController < ApplicationController
|
||||||
|
before_action :authenticate_user!
|
||||||
|
|
||||||
|
before_action :set_pack
|
||||||
|
layout 'public'
|
||||||
|
|
||||||
|
before_action :set_instance_presenter, only: [:show]
|
||||||
|
|
||||||
|
def show
|
||||||
|
@hide_navbar = true
|
||||||
|
@domain_policies = DomainBlock.all
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def set_pack
|
||||||
|
use_pack 'common'
|
||||||
|
end
|
||||||
|
|
||||||
|
def set_instance_presenter
|
||||||
|
@instance_presenter = InstancePresenter.new
|
||||||
|
end
|
||||||
|
|
||||||
|
def authenticate_user!
|
||||||
|
return if user_signed_in?
|
||||||
|
not_found
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,2 @@
|
||||||
|
module DomainPolicyHelper
|
||||||
|
end
|
|
@ -1 +1,16 @@
|
||||||
.landing .box-widget { text-align: center; }
|
.landing .box-widget { text-align: center; }
|
||||||
|
.rich-formatting td {
|
||||||
|
ul {
|
||||||
|
list-style: none;
|
||||||
|
margin: 0;
|
||||||
|
|
||||||
|
li {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
line-height: 18px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li:after { content: "," }
|
||||||
|
li:last-child:after { content: "" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
%tr
|
||||||
|
%td
|
||||||
|
%samp= domain_block.domain
|
||||||
|
%td= domain_block.severity.gsub('_', ' ').capitalize
|
||||||
|
%td
|
||||||
|
%ul
|
||||||
|
-if domain_block.reject_media?
|
||||||
|
%li= "Rejecting media"
|
||||||
|
-if domain_block.force_sensitive?
|
||||||
|
%li= "Media marked sensitive"
|
||||||
|
-if domain_block.reject_reports?
|
||||||
|
%li= "Rejecting reports"
|
||||||
|
%td= "None"
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
- content_for :page_title do
|
||||||
|
= "#{site_hostname} Domain Policies"
|
||||||
|
|
||||||
|
- content_for :header_tags do
|
||||||
|
= render partial: 'shared/og'
|
||||||
|
|
||||||
|
.grid-3
|
||||||
|
.column-0
|
||||||
|
.public-account-header.public-account-header--no-bar
|
||||||
|
.public-account-header__image
|
||||||
|
= image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.jpg'), alt: @instance_presenter.site_title, class: 'parallax'
|
||||||
|
|
||||||
|
.column-1
|
||||||
|
.landing-page__call-to-action{ dir: 'ltr' }
|
||||||
|
.row
|
||||||
|
.row__information-board
|
||||||
|
.information-board__section
|
||||||
|
%span= t 'about.user_count_before'
|
||||||
|
%strong= number_with_delimiter @instance_presenter.user_count
|
||||||
|
%span= t 'about.user_count_after', count: @instance_presenter.user_count
|
||||||
|
.information-board__section
|
||||||
|
%span= t 'about.status_count_before'
|
||||||
|
%strong= number_with_delimiter @instance_presenter.status_count
|
||||||
|
%span= t 'about.status_count_after', count: @instance_presenter.status_count
|
||||||
|
.row__mascot
|
||||||
|
.landing-page__mascot
|
||||||
|
= image_tag @instance_presenter.mascot&.file&.url || asset_pack_path('media/images/elephant_ui_plane.svg'), alt: ''
|
||||||
|
|
||||||
|
.column-2
|
||||||
|
.landing-page__information.contact-widget
|
||||||
|
%p
|
||||||
|
%strong= t 'about.administered_by'
|
||||||
|
|
||||||
|
= account_link_to(@instance_presenter.contact_account)
|
||||||
|
|
||||||
|
- if @instance_presenter.site_contact_email.present?
|
||||||
|
%p.contact-widget__mail
|
||||||
|
%strong
|
||||||
|
= succeed ':' do
|
||||||
|
= t 'about.contact'
|
||||||
|
%br/
|
||||||
|
= mail_to @instance_presenter.site_contact_email, nil, title: @instance_presenter.site_contact_email
|
||||||
|
|
||||||
|
.column-3
|
||||||
|
.box-widget
|
||||||
|
.rich-formatting
|
||||||
|
%h1= "#{@instance_presenter.site_title} Domain Policies"
|
||||||
|
|
||||||
|
.table-wrapper
|
||||||
|
%table.table
|
||||||
|
%thead
|
||||||
|
%tr
|
||||||
|
%th= "Domain"
|
||||||
|
%th= "Policy"
|
||||||
|
%th= "Additional"
|
||||||
|
%th= "Reason"
|
||||||
|
%tbody
|
||||||
|
= render @domain_policies
|
|
@ -419,6 +419,8 @@ Rails.application.routes.draw do
|
||||||
get '/about/more', to: 'about#more'
|
get '/about/more', to: 'about#more'
|
||||||
get '/terms', to: 'about#terms'
|
get '/terms', to: 'about#terms'
|
||||||
|
|
||||||
|
get '/policies', to: 'domain_policy#show'
|
||||||
|
|
||||||
root 'home#index'
|
root 'home#index'
|
||||||
|
|
||||||
match '*unmatched_route',
|
match '*unmatched_route',
|
||||||
|
|
|
@ -0,0 +1,12 @@
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe DomainPolicyController, type: :controller do
|
||||||
|
|
||||||
|
describe "GET #show" do
|
||||||
|
it "returns http success" do
|
||||||
|
get :show
|
||||||
|
expect(response).to have_http_status(:success)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,15 @@
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
# Specs in this file have access to a helper object that includes
|
||||||
|
# the DomainPolicyHelper. For example:
|
||||||
|
#
|
||||||
|
# describe DomainPolicyHelper do
|
||||||
|
# describe "string concat" do
|
||||||
|
# it "concats two strings with spaces" do
|
||||||
|
# expect(helper.concat_strings("this","that")).to eq("this that")
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
RSpec.describe DomainPolicyHelper, type: :helper do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
|
@ -0,0 +1,5 @@
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe "domain_policy/show.html.haml", type: :view do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
Loading…
Reference in New Issue