Как создать Посредника (middleware) для записи действий Пользователя?
Добрый всем. Мне нужно создать лог действий пользователя. У меня есть CRUD контроллер, есть роут для каждого метода, у каждлго роута свое имя.
Я хочу реализовать способ записи действий пользователя через middleware. Если пользователь обратился к роуту post.index, то в базу User_logs записывалось id пользователя, время и действие 'Просмотр списка постов'.
Что-бы в middleware был массив роутов с именами:
[
post.index => 'Просмотр списка постов',
post.create => 'Вызвал форму для создания поста',
post.store => 'Создал пост',
и т.д.
]
И в зависимости от роута происходила запись в базу.
Т.к. у меня много контроллеров, не охота в каждый метод добавлять запись действий пользователя.
Ну право слово. Как создать middleware вы, думаю, и сами знаете. И весь ваш вопрос сводится к "как получить имя роута в middleware". И вы не первый, кто этим вопросом озаботился, поверьте.
Вы же абсолютно ничему не научитесь, если не будете самостоятельно голову включать.
Ilya Loopashko, что конкретно непонятно? Как написать мидлварь? Как добавить ее к группе раутов? Как получить имя раута в мидлвари? Как записать в базу?
Интересный способ.
Добавлять мидлварь к роутам, чтобы внутри мидлвари проверять роут.
Если 2000 раз юзер щелкнет обновить страницу постов, в логе будет 2000 одинаковых записей.
Если 20 раз получит ошибку валидации на создание поста, в логе будет 20 записей "создал пост".
логирование роутинга - это логирование роутинга других экшенов там нет. И смысла в этом не много, гораздо лучше справится яндекс метрика. А лог можно писать для важных евентов. например создание поста, после его фактического создания.