Как узнать, кто создал запись в базе данных?

Как можно определить, который пользователь выполнил запись в базу данных после входа по логину и паролю в проекте на Laravel с использованием vue.js для отправки данных в базу данных, чтобы фиксировать информацию о пользователе в столбце "user_recorded_reg"?
  • 11 января 2024 г. 18:38
Ответы на вопрос 2
Чтобы отследить пользователя, который создал запись в базе данных в проекте на Laravel с использованием Vue.js, можно использовать следующие инструменты и методы:

1. **Аутентификация пользователей**: Убедитесь, что в вашем проекте Laravel настроена аутентификация пользователей. Laravel предлагает встроенные решения для аутентификации, такие как Laravel Breeze, Laravel Jetstream, Laravel Fortify и другие, которые могут помочь в управлении аутентификацией пользователей. 

2. **Получение текущего пользователя**: В Laravel, после успешной аутентификации пользователя, вы можете получить информацию о текущем аутентифицированном пользователе с помощью фасада `Auth` или хелпера `auth()`. Например:

    ```php
    $user = Auth::user(); // Использование фасада
    // или
    $user = auth()->user(); // Использование хелпера
    ```

   Этот `$user` объект будет содержать модель аутентифицированного пользователя.

3. **Запись информации о пользователе при создании записи**: Когда выполняется добавление новой записи в базу данных через Vue.js, передайте идентификатор пользователя вместе с остальными данными. В контроллере Laravel, который обрабатывает запрос, получите текущего пользователя и сохраните его идентификатор (или другие необходимые данные) в столбце `user_recorded_reg` вашей таблицы.

    Пример в контроллере Laravel:

    ```php
    public function store(Request $request) {
        // Создаем новую запись в базе данных
        $record = new YourModel(); // Замените на имя вашей модели
        // Заполнение остальных полей...
        $record->user_recorded_reg = auth()->user()->id; // ID авторизованного пользователя
        $record->save();

        // Вернуть ответ или выполнить другие действия
    }
    ```

4. **Добавление информации о пользователе в каждый запрос**: Если вы хотите автоматизировать процесс добавления идентификатора пользователя в каждый запрос к базе данных, рассмотрите возможность использования промежуточного программного обеспечения (middleware), наблюдателей моделей (Eloquent observers) или глобальных областей запроса (global query scopes).

5. **Обработка запроса во Vue.js**: В вашем Vue компоненте, когда данных подготовлены к отправке на сервер, убедитесь, что запрос аутентифицирован и что JWT токен, сессия или другой механизм аутентификации настроен и работает корректно. Вам не нужно включать идентификатор пользователя в запрос, так как это потенциально может быть уязвимостью безопасности. Вместо этого используйте токен или аутентификацию пользователя на стороне сервера для определения, кто отправил запрос.

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

Тебе это надо знать на беке или на фронте?

В ларавеле информация о пользователе действительно можно получить Auth::user() . Ты сам ответил на свой вопрос. Что не так?
Похожие вопросы