Задать вопрос
deadloop
@deadloop
Активно осваиваю PHP

Как создать Посредника (middleware) для записи действий Пользователя?

Добрый всем. Мне нужно создать лог действий пользователя. У меня есть CRUD контроллер, есть роут для каждого метода, у каждлго роута свое имя.
Я хочу реализовать способ записи действий пользователя через middleware. Если пользователь обратился к роуту post.index, то в базу User_logs записывалось id пользователя, время и действие 'Просмотр списка постов'.

Что-бы в middleware был массив роутов с именами:

[
post.index => 'Просмотр списка постов',
post.create => 'Вызвал форму для создания поста',
post.store => 'Создал пост',
и т.д.
]

И в зависимости от роута происходила запись в базу.
Т.к. у меня много контроллеров, не охота в каждый метод добавлять запись действий пользователя.
  • Вопрос задан
  • 131 просмотр
Подписаться 1 Простой 6 комментариев
Решения вопроса 1
deadloop
@deadloop Автор вопроса
Активно осваиваю PHP
Вот моя реализация:

public function handle(Request $request, Closure $next)
    {
        $routeName = $request->route()->getAction()['as'];
        $routeDescription = [
            post.index => 'Просмотр списка постов',
            post.create => 'Вызвал форму для создания поста',
            post.store => 'Создал пост',
        ];
        if (array_key_exists($routeName, $routeDescription)) {
            $a =  $routs[$routeName];
            UserLog::create([
                'date' => '2021-08-25',
                'user_id' => 2,
                'action' => $a,
            ]);
        }
        return $next($request);
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы