@maks78945

Как добавить дополнительное условие при авторизации laravel?

Добрый вечер подскажите как можно изменить метод авторизации пользователя.
У меня есть 2 таблицы User с полем company_id и другими страндартными полями, а так же талица Company, в которой есть id, name, active.
Мне нужно авторизировать пользователя только если у его компании active=1.
У меня получилось нагуглить решения как изменить метод Login если active в таблице User.
Но какие изменения мне необходимо внести что бы получилось реализовать мой вариант, где связь по company_id и active находится в другой таблице?
  • Вопрос задан
  • 190 просмотров
Решения вопроса 1
@masterfreelance
программист со стажем
Миграция - создания дополнительного, связывающего поля в существующую таблицу с внешним ключом.

public function up()
{
Schema::table('user', function (Blueprint $table) {
$table->integer('company_id')->unsigned()->default(1);
$table->foreign('company_id')->references('id')->on('company');
});
}
public function down()
{
Schema::table('user', function ($table) {
$table->dropForeign('user_company_id_foreign');
$table->dropColumn('company_id');
});
}

В модели User
public function company()
{
return $this->belongsTo('App\Company');
}

Проверка в login
$user->company->active
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@jazzus
company_id в users это неправильно. Нужно удалить и добавить user_id в companies. И создать связь user hasMany companies и company belongsTo user. Если компании также могут иметь много юзеров, то использовать manyToMany связь между User и Company. Запрашивать так
User::whereHas('companies', function ($query) {
    $query->where('active', true);
})->get();
Ответ написан
Ваш ответ на вопрос

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

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