Add action Staffs::ContactNetworksController#index
This commit is contained in:
parent
0cb957d3b5
commit
e6e979041a
|
@ -0,0 +1,12 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Staffs::ContactNetworksController < ApplicationController
|
||||||
|
# GET /staff/contact_networks
|
||||||
|
def index
|
||||||
|
authorize %i[staff contact_network]
|
||||||
|
@contact_networks = policy_scope(
|
||||||
|
ContactNetwork,
|
||||||
|
policy_scope_class: Staff::ContactNetworkPolicy::Scope,
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,15 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
class Staff::ContactNetworkPolicy < ApplicationPolicy
|
||||||
|
def index?
|
||||||
|
account&.superuser?
|
||||||
|
end
|
||||||
|
|
||||||
|
class Scope < Scope
|
||||||
|
def resolve
|
||||||
|
return scope.all if account&.superuser?
|
||||||
|
|
||||||
|
scope.none
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -0,0 +1,29 @@
|
||||||
|
<div class="container">
|
||||||
|
<%= nav_breadcrumb(
|
||||||
|
[translate(:staff_services), staff_root_path],
|
||||||
|
ContactNetwork.model_name.human(count: 0),
|
||||||
|
) %>
|
||||||
|
|
||||||
|
<table class="table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th scope="col">
|
||||||
|
<%= ContactNetwork.human_attribute_name :nickname %>
|
||||||
|
</th>
|
||||||
|
<th scope="col">
|
||||||
|
<%= ContactNetwork.human_attribute_name :public_name %>
|
||||||
|
</th>
|
||||||
|
<th scope="col"></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
|
||||||
|
<tbody>
|
||||||
|
<% @contact_networks.each do |contact_network| %>
|
||||||
|
<tr>
|
||||||
|
<td scope="row"><%= contact_network.nickname %></td>
|
||||||
|
<td><%= contact_network.public_name %></td>
|
||||||
|
</tr>
|
||||||
|
<% end %>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
|
@ -13,5 +13,12 @@
|
||||||
<%= link_to Person.model_name.human(count: 0), staff_people_path %>
|
<%= link_to Person.model_name.human(count: 0), staff_people_path %>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
<% if policy(%i[staff contact_network]).index? %>
|
||||||
|
<li>
|
||||||
|
<%= link_to ContactNetwork.model_name.human(count: 0),
|
||||||
|
staff_contact_networks_path %>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -4,6 +4,9 @@ en:
|
||||||
account:
|
account:
|
||||||
one: Account
|
one: Account
|
||||||
many: Accounts
|
many: Accounts
|
||||||
|
contact_network:
|
||||||
|
one: Contact network
|
||||||
|
many: Contact networks
|
||||||
federal_subject:
|
federal_subject:
|
||||||
one: State
|
one: State
|
||||||
many: States
|
many: States
|
||||||
|
@ -33,6 +36,10 @@ en:
|
||||||
biography: Bio
|
biography: Bio
|
||||||
avatar: Avatar
|
avatar: Avatar
|
||||||
person: Person
|
person: Person
|
||||||
|
contact_network:
|
||||||
|
id: ID
|
||||||
|
nickname: Nickname
|
||||||
|
public_name: Public name
|
||||||
federal_subject:
|
federal_subject:
|
||||||
id: ID
|
id: ID
|
||||||
regional_office: Regional department
|
regional_office: Regional department
|
||||||
|
|
|
@ -4,6 +4,9 @@ ru:
|
||||||
account:
|
account:
|
||||||
one: Аккаунт
|
one: Аккаунт
|
||||||
many: Аккаунты
|
many: Аккаунты
|
||||||
|
contact_network:
|
||||||
|
one: Сеть контактов
|
||||||
|
many: Сети контактов
|
||||||
federal_subject:
|
federal_subject:
|
||||||
one: Регион
|
one: Регион
|
||||||
many: Регионы
|
many: Регионы
|
||||||
|
@ -33,6 +36,10 @@ ru:
|
||||||
biography: Биография
|
biography: Биография
|
||||||
avatar: Аватар
|
avatar: Аватар
|
||||||
person: Человек
|
person: Человек
|
||||||
|
contact_network:
|
||||||
|
id: ID
|
||||||
|
nickname: Имя пользователя
|
||||||
|
public_name: Публичное имя
|
||||||
federal_subject:
|
federal_subject:
|
||||||
id: ID
|
id: ID
|
||||||
regional_office: Региональное отделение
|
regional_office: Региональное отделение
|
||||||
|
|
|
@ -48,6 +48,8 @@ Rails.application.routes.draw do
|
||||||
|
|
||||||
get '/sidekiq', to: redirect('/', status: 307), as: :forbidden_sidekiq
|
get '/sidekiq', to: redirect('/', status: 307), as: :forbidden_sidekiq
|
||||||
|
|
||||||
|
resources :contact_networks, only: :index
|
||||||
|
|
||||||
resources :accounts, param: :nickname, only: %i[index show]
|
resources :accounts, param: :nickname, only: %i[index show]
|
||||||
|
|
||||||
resources :people, only: %i[index show] do
|
resources :people, only: %i[index show] do
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe Staff::ContactNetworkPolicy do
|
||||||
|
pending "add some examples to (or delete) #{__FILE__}"
|
||||||
|
end
|
|
@ -0,0 +1,25 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require 'rails_helper'
|
||||||
|
|
||||||
|
RSpec.describe 'GET /staff/contact_networks' do
|
||||||
|
before do
|
||||||
|
sign_in current_account.user if current_account&.user
|
||||||
|
|
||||||
|
create_list :contact_network, rand(1..5)
|
||||||
|
|
||||||
|
get '/staff/contact_networks'
|
||||||
|
end
|
||||||
|
|
||||||
|
for_account_types nil, :guest, :usual do
|
||||||
|
specify do
|
||||||
|
expect(response).to have_http_status :forbidden
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for_account_types :superuser do
|
||||||
|
specify do
|
||||||
|
expect(response).to have_http_status :ok
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Reference in New Issue