You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.3 KiB
58 lines
1.3 KiB
class OrganisationsController < ApplicationController |
|
include Pagy::Backend |
|
before_action :authenticate_user!, except: [:index] |
|
before_action :find_resource, except: [:index] |
|
before_action :authenticate_scope! |
|
|
|
def index |
|
redirect_to organisation_path(current_user.organisation) unless current_user.support? |
|
|
|
@pagy, @organisations = pagy(Organisation.all) |
|
end |
|
|
|
def show |
|
redirect_to details_organisation_path(@organisation) |
|
end |
|
|
|
def users |
|
@pagy, @users = pagy(@organisation.users.where(active: true)) |
|
render "users/index" |
|
end |
|
|
|
def details |
|
render "show" |
|
end |
|
|
|
def edit |
|
if current_user.data_coordinator? |
|
render "edit", layout: "application" |
|
else |
|
head :unauthorized |
|
end |
|
end |
|
|
|
def update |
|
if current_user.data_coordinator? |
|
if @organisation.update(org_params) |
|
flash[:notice] = I18n.t("organisation.updated") |
|
redirect_to details_organisation_path(@organisation) |
|
end |
|
else |
|
head :unauthorized |
|
end |
|
end |
|
|
|
private |
|
|
|
def org_params |
|
params.require(:organisation).permit(:name, :address_line1, :address_line2, :postcode, :phone) |
|
end |
|
|
|
def authenticate_scope! |
|
render_not_found if current_user.organisation != @organisation && !current_user.support? |
|
end |
|
|
|
def find_resource |
|
@organisation = Organisation.find(params[:id]) |
|
end |
|
end
|
|
|