Laravel - ограничение пользователей по количеству постов - PullRequest
1 голос
/ 15 января 2020

Есть ли способ ограничить пользователей в моем проекте количеством постов. Например, я хочу, чтобы мои пользователи могли создавать максимум 10 сообщений каждое. Так у одного пользователя 10 постов? Это что-то с hasMany или что-то еще? Пожалуйста, помогите найти решение. Спасибо

Ответы [ 2 ]

3 голосов
/ 15 января 2020

По определению

Промежуточное программное обеспечение предоставляет удобный механизм фильтрации HTTP-запросов, поступающих в ваше приложение. Например, Laravel включает промежуточное программное обеспечение, которое проверяет подлинность пользователя вашего приложения. Если пользователь не аутентифицирован, промежуточное программное обеспечение перенаправит пользователя на экран входа в систему. Однако, если пользователь прошел проверку подлинности, промежуточное программное обеспечение разрешит дальнейшее выполнение запроса в приложении.

Чтобы пользователь не мог добавить более 10 сообщений, необходимо создать промежуточное программное обеспечение для защиты * 1007. * route

Чтобы создать новое промежуточное программное обеспечение, используйте команду make: middleware Artisan:

php artisan make:middleware CheckUserPostsNumber

Эта команда поместит новый класс CheckUserPostsNumber в каталог app/Http/Middleware. В этом промежуточном программном обеспечении мы будем разрешать доступ к маршруту posts/create только в том случае, если пользователь публикует номер менее 10. В противном случае вы будете перенаправлять пользователя обратно на домашний URI:

<?php

namespace App\Http\Middleware;
use Illuminate\Support\Facades\Auth;
use Closure;

class CheckUserPostsNumber
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (Auth::user()->posts->count() >= 10) {
            return redirect('home');
        }

        return $next($request);
    }
}

Назначение Промежуточное программное обеспечение для маршрутов

Если вы хотите назначить промежуточное программное обеспечение для указанных c маршрутов, вы должны сначала назначить промежуточному программному обеспечению ключ в файле приложения / Http / Kernel. php. По умолчанию свойство $ routeMiddleware этого класса содержит записи для промежуточного программного обеспечения, включенного в Laravel. Чтобы добавить свой собственный, добавьте его в этот список и назначьте ему ключ по вашему выбору:

// Within App\Http\Kernel Class...

protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
    'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
    //...
    'checkUserPostsNumber' => 'App\Http\Middleware\checkUserPostsNumber'
];

Как только промежуточное программное обеспечение определено в ядре HTTP, вы можете использовать метод промежуточного программного обеспечения для назначения промежуточного программного обеспечения для Маршрут:

Route::get('posts/create', function () {
    //
})->middleware('auth', 'checkUserPostsNumber');

Документы

0 голосов
/ 15 января 2020
if ($user->posts->count() >= 10) {
  //
}
...