forge/app/Policies/ModVersionPolicy.php
Refringe 7e1c66f250
Download Count Review
Reviewed the download count PR work and made some changes:
- Updated the download link route to include the mod's slug for easier identification.
- Moved rate limiter from the route middleware (the entire controller) to just the show method in the controller.
- Created a ModVersionPolicy that the controller can check against.
- Moves download increment logic into the model.
- Defers the call to the download increment logic (now run in the background)
- Updated the route to have a name, and the downloadUrl methods to build the URL dynamically using the route name.
- Wrote some tests to check URL building, download counting, and rate limiting.

# Conflicts:
#	app/Http/Controllers/ModVersionController.php
#	app/Providers/AppServiceProvider.php
2024-09-25 17:04:46 -04:00

69 lines
1.4 KiB
PHP

<?php
namespace App\Policies;
use App\Models\ModVersion;
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class ModVersionPolicy
{
use HandlesAuthorization;
/**
* Determine whether the user can view any mod versions.
*/
public function viewAny(?User $user): bool
{
return true;
}
/**
* Determine whether the user can view the mod version.
*/
public function view(?User $user, ModVersion $modVersion): bool
{
return true;
}
/**
* Determine whether the user can create mod versions.
*/
public function create(User $user): bool
{
return false;
}
/**
* Determine whether the user can update the mod version.
*/
public function update(User $user, ModVersion $modVersion): bool
{
return false;
}
/**
* Determine whether the user can delete the mod version.
*/
public function delete(User $user, ModVersion $modVersion): bool
{
return false;
}
/**
* Determine whether the user can restore the mod version.
*/
public function restore(User $user, ModVersion $modVersion): bool
{
return false;
}
/**
* Determine whether the user can permanently delete the mod version.
*/
public function forceDelete(User $user, ModVersion $modVersion): bool
{
return false;
}
}