InfluxOW/laravel_ddd_ecommerce

View on GitHub
app/Domains/Feedback/Policies/FeedbackPolicy.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace App\Domains\Feedback\Policies;

use App\Domains\Feedback\Models\Feedback;
use App\Domains\Users\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
use Illuminate\Auth\Access\Response;
use Illuminate\Http\Request;

final class FeedbackPolicy
{
    use HandlesAuthorization;

    public function create(?User $user, Request $request, ?int $limitPerHour): Response
    {
        if (Feedback::canBeCreated($limitPerHour, $request->ip(), $user)) {
            return Response::allow();
        }

        $denyMessage = sprintf('You have posted too much feedback. Please, try again in %s!', Feedback::getTimeStringDecayBeforeNextFeedback($request->ip(), $user));

        return Response::deny($denyMessage);
    }
}