%PDF- %PDF-
| Direktori : /www/loslex_o/production/app/Policies/ |
| Current File : /www/loslex_o/production/app/Policies/ContestPolicy.php |
<?php
namespace App\Policies;
use App\Enums\ContestPublicationStatusEnum;
use App\Models\Contest;
use App\Models\User;
use Illuminate\Auth\Access\Response;
use Illuminate\Support\Facades\Log;
class ContestPolicy
{
public function before(User $user, string $ability): bool|null
{
if ($user->is_admin) return true;
return null;
}
/**
* Determine whether the user can view any models.
*/
public function viewAny(?User $user): bool
{
return true;
}
/**
* Determine whether the user can view the model.
*/
public function view(?User $user, Contest $contest): bool
{
if ($contest->published == ContestPublicationStatusEnum::PUBLISHED) return true; // published contest is ok for all
if (is_null($user)) return false; // no visitors for rest
if ($user->is_organizer_member($contest->organizer_group_id)) return true; // maybe if user is organizer
if ($contest->published == ContestPublicationStatusEnum::HIDDEN // users registered to (so far) contests
&& $contest->registrations->where('user_id', $user?->id)->count() > 0) return true;
return false;
}
/**
* Determine whether the user can create models.
*/
public function create(User $user): bool
{
return $user->organizer_groups->isNotEmpty();
}
/**
* Determine whether the user can update the model.
*/
public function update(User $user, Contest $contest): bool
{
return $user->organizer_groups->pluck('id')->contains($contest->organizer_group_id);
}
/**
* Determine whether the user can delete the model.
*/
public function delete(User $user, Contest $contest): bool
{
return $user->organizer_groups->pluck('id')->contains($contest->organizer_group_id);
}
/**
* Determine whether the user can restore the model.
*/
public function restore(User $user, Contest $contest): bool
{
return $user->organizer_groups->pluck('id')->contains($contest->organizer_group_id);
}
/**
* Determine whether the user can permanently delete the model.
*/
public function forceDelete(User $user, Contest $contest): bool
{
return $user->is_admin;
}
public function fileManage(User $user, Contest $contest): bool
{
return $user->is_admin;
}
}