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 %>
|
||||
</li>
|
||||
<% end %>
|
||||
|
||||
<% if policy(%i[staff contact_network]).index? %>
|
||||
<li>
|
||||
<%= link_to ContactNetwork.model_name.human(count: 0),
|
||||
staff_contact_networks_path %>
|
||||
</li>
|
||||
<% end %>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
@ -4,6 +4,9 @@ en:
|
|||
account:
|
||||
one: Account
|
||||
many: Accounts
|
||||
contact_network:
|
||||
one: Contact network
|
||||
many: Contact networks
|
||||
federal_subject:
|
||||
one: State
|
||||
many: States
|
||||
|
@ -33,6 +36,10 @@ en:
|
|||
biography: Bio
|
||||
avatar: Avatar
|
||||
person: Person
|
||||
contact_network:
|
||||
id: ID
|
||||
nickname: Nickname
|
||||
public_name: Public name
|
||||
federal_subject:
|
||||
id: ID
|
||||
regional_office: Regional department
|
||||
|
|
|
@ -4,6 +4,9 @@ ru:
|
|||
account:
|
||||
one: Аккаунт
|
||||
many: Аккаунты
|
||||
contact_network:
|
||||
one: Сеть контактов
|
||||
many: Сети контактов
|
||||
federal_subject:
|
||||
one: Регион
|
||||
many: Регионы
|
||||
|
@ -33,6 +36,10 @@ ru:
|
|||
biography: Биография
|
||||
avatar: Аватар
|
||||
person: Человек
|
||||
contact_network:
|
||||
id: ID
|
||||
nickname: Имя пользователя
|
||||
public_name: Публичное имя
|
||||
federal_subject:
|
||||
id: ID
|
||||
regional_office: Региональное отделение
|
||||
|
|
|
@ -48,6 +48,8 @@ Rails.application.routes.draw do
|
|||
|
||||
get '/sidekiq', to: redirect('/', status: 307), as: :forbidden_sidekiq
|
||||
|
||||
resources :contact_networks, only: :index
|
||||
|
||||
resources :accounts, param: :nickname, only: %i[index show]
|
||||
|
||||
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