prevent non-authorized users to access medical release files #22

Closed
bilal.catic wants to merge 2 commits from only-account-manager-can-download-medical-releases into master
3 changed files with 26 additions and 7 deletions
Showing only changes of commit 71273a597e - Show all commits

View File

@@ -48,10 +48,8 @@ class ContractsController < ApplicationController
# Native release contracts must be generated on-the-fly; non-native releases have a contract attachment
if releasable.native?
send_file contract.to_pdf, download_attributes
elsif policy(contract).show?
redirect_to releasable.contract.service_url
else
raise Pundit::NotAuthorizedError
redirect_to releasable.contract.service_url
end
end
end

View File

@@ -4,7 +4,7 @@ class MedicalReleasePolicy < ReleasePolicy
end
def show?
true
user.account_manager?
end
def update?

View File

@@ -1,7 +1,8 @@
require "rails_helper"
describe MedicalReleasePolicy do
let(:user_context) { build(:user_context) }
let(:user) { create(:user) }
let(:user_context) { create(:user_context, user: user, account: user.primary_account) }
subject { described_class }
@@ -9,8 +10,28 @@ describe MedicalReleasePolicy do
it { is_expected.to permit(:create) }
end
permissions :show? do
it { is_expected.to permit(:show) }
context "for an account manager" do
let(:user) { create(:user, :account_manager) }
permissions :show? do
it { is_expected.to permit(user_context, :show) }
end
end
context "for an associate" do
let(:user) { create(:user, :associate) }
permissions :show? do
it { is_expected.not_to permit(user_context, :show) }
end
end
context "for a manager" do
let(:user) { create(:user, :manager) }
permissions :show? do
it { is_expected.not_to permit(user_context, :show) }
end
end
permissions :update? do