checkOnlyMinAdminOrInUserBrands($authUser, $claim); } /** * Update a Claim. * * @param \App\Models\User $authUser * @param \App\Models\Claim $claim * @return boolean */ public function update(User $authUser, Claim $claim): bool { return $this->checkOnlyMinAdminOrInUserBrands($authUser, $claim); } /** * Determine whether the user can update the associated brand of the model. * * @param \App\Models\User $authUser * @return boolean */ public function updateBrand(User $authUser): bool { return UserStaticRules::atLeastRole($authUser, RoleEnum::admin); } /** * Determine whether the user can update the associated subject of the model. * * @param \App\Models\User $authUser * @param \App\Models\Claim $claim * @return boolean */ public function updateSubject(User $authUser, Claim $claim): bool { return $this->checkOnlyMinAdminOrInUserBrands($authUser, $claim); } /** * Update a Claim. * * @param \App\Models\User $authUser * @param \App\Models\Claim $claim * @return boolean */ public function updateType(User $authUser, Claim $claim): bool { return $this->checkOnlyMinAdminOrInUserBrands($authUser, $claim); } /** * Update a Claim. * * @param \App\Models\User $authUser * @param \App\Models\Claim $claim * @return boolean */ public function updateStatus(User $authUser, Claim $claim): bool { return $this->checkOnlyMinAdminOrInUserBrands($authUser, $claim); } /** * Update a Claim. * * @param \App\Models\User $authUser * @param \App\Models\Claim $claim * @return boolean */ public function updateResponseType(User $authUser, Claim $claim): bool { return $this->checkOnlyMinAdminOrInUserBrands($authUser, $claim); } /** * Export a Claim. * * @param \App\Models\User $authUser * @param \App\Models\Claim $claim * @return boolean */ public function export(User $authUser, Claim $claim): bool { return $this->checkOnlyMinAdminOrInUserBrands($authUser, $claim); } /** * Check if the user an access a specific resource. * * @param \App\Models\User $authUser * @param \App\Models\Claim $claim * @return boolean */ private function checkOnlyMinAdminOrInUserBrands(User $authUser, Claim $claim): bool { $userBrandModelKeys = $authUser->brands->modelKeys(); $claimModelKey = $claim->brand->getKey(); return UserStaticRules::atLeastRole($authUser, RoleEnum::admin) || ( UserStaticRules::atLeastRole($authUser, RoleEnum::marketing) && \in_array($claimModelKey, $userBrandModelKeys) ); } }