Files
Investidor-V2/app/Policies/ExistingBusinessPolicy.php
T

48 lines
1.5 KiB
PHP

<?php
namespace App\Policies;
use App\Models\ExistingBusiness;
use App\Models\User;
class ExistingBusinessPolicy
{
public function create(User $user): bool
{
return $user->hasVerifiedEmail();
}
public function update(User $user, ExistingBusiness $business): bool
{
return $this->owns($user, $business) && in_array($business->status, ['draft', 'needs_information'], true);
}
public function view(User $user, ExistingBusiness $business): bool
{
return $this->owns($user, $business) || $this->review($user, $business);
}
public function delete(User $user, ExistingBusiness $business): bool
{
return $this->update($user, $business);
}
public function owns(User $user, ExistingBusiness $business): bool
{
return $user->hasVerifiedEmail() && $business->owner_user_id === $user->id && ! $business->trashed();
}
public function review(User $user, ExistingBusiness $business): bool
{
return ! $business->trashed() && $business->owner_user_id !== $user->id
&& in_array($business->status, ['submitted', 'in_review', 'needs_information'], true)
&& $this->reviewQueue($user);
}
public function reviewQueue(User $user): bool
{
return $user->can('manage-portal') && (bool) $user->two_factor_confirmed_at && (bool) $user->two_factor_secret
&& in_array(strtolower($user->email), config('existing-business.reviewers', []), true);
}
}