checkOnlyMinAdminOrInUserBrands($authUser, $claim_mail_template); } /** * Create a claim subject. * * @param \App\Models\User $authUser * @return boolean */ public function create(User $authUser): bool { return UserStaticRules::atLeastRole($authUser, RoleEnum::marketing); } /** * Store a claim subject. * * @param \App\Models\User $authUser * @return boolean */ public function store(User $authUser): bool { return UserStaticRules::atLeastRole($authUser, RoleEnum::marketing); } /** * Edit a claim subject. * * @param \App\Models\User $authUser * @param \App\Models\ClaimMailTemplate $claim_mail_template * @return boolean */ public function edit(User $authUser, ClaimMailTemplate $claim_mail_template): bool { return $this->checkOnlyMinAdminOrInUserBrands($authUser, $claim_mail_template); } /** * Update a claim subject. * * @param \App\Models\User $authUser * @param \App\Models\ClaimMailTemplate $claim_mail_template * @return boolean */ public function update(User $authUser, ClaimMailTemplate $claim_mail_template): bool { return $this->checkOnlyMinAdminOrInUserBrands($authUser, $claim_mail_template); } /** * Delete a claim subject. * * @param \App\Models\User $authUser * @param \App\Models\ClaimMailTemplate $claim_mail_template * @return boolean */ public function delete(User $authUser, ClaimMailTemplate $claim_mail_template): bool { return $this->checkOnlyMinAdminOrInUserBrands($authUser, $claim_mail_template); } /** * Check if the user an access a specific resource. * * @param \App\Models\User $authUser * @param \App\Models\ClaimMailTemplate $claim_mail_template * @return boolean */ private function checkOnlyMinAdminOrInUserBrands(User $authUser, ClaimMailTemplate $claim_mail_template): bool { $userBrandModelKeys = $authUser->brands->modelKeys(); $claimMailTemplateModelKey = $claim_mail_template->brand->getKey(); return UserStaticRules::atLeastRole($authUser, RoleEnum::admin) || ( UserStaticRules::atLeastRole($authUser, RoleEnum::marketing) && \in_array($claimMailTemplateModelKey, $userBrandModelKeys) ); } }