Laravel проверить, принадлежит ли пользователь определенной компании перед входом в систему - PullRequest
1 голос
/ 07 мая 2020

Я разрабатываю приложение, чтобы помочь компаниям управлять своими продуктами. Во-первых, компания должна зарегистрироваться в приложении с активным администратором. Новая зарегистрированная компания по умолчанию неактивна. Я хочу проверить, активна ли компания пользователя перед входом в систему.

Например: я хочу зарегистрировать Nike в приложении. зарегистрированный пользователь - admin@nike.com. Если я хочу войти в систему с помощью «admin@nike.com», это будет невозможно, пока компания Nike не станет активной.

Структура базы данных выглядит так:

Компания:

com_id
com_name
com_isActive

Пользователь:

user_id
имя_пользователя
электронная почта
пароль
user_isAdmin
user_com_id

Есть предложения, как это исправить?

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

1. Сначала добавьте столбец к company table с именем isActive и adminEmail 2. Создайте новую проверку Rule с именем CheckCompanyStatus с помощью этой команды

php artisan make:rule CheckCompanyStatus

3. Внутри этого Правило поместите следующие logi c внутрь passes()

$data = \Company::where('adminEmail',$value)->first();
if($data->isActive == true) {
   return true;
} else {
   return false;
}
  1. Go в LoginController и переопределите функцию validateLogin() и поместите это logi c

    protected function validateLogin(Request $request) { $this->validate(['email'=>new \CheckCompany, 'password'=> 'required]); }

Не забудьте добавить adminEmail и isActive в регистрационную форму вашей компании и использовать все классы вверху. Сообщите мне, есть ли у вас какие-либо ошибки

0 голосов
/ 07 мая 2020

Вероятно, у вас есть отношение в вашей модели User. Что-то вроде

public function company()
{
   return $this->belongsTo(Company::class);
}

В вашем LoginController (если вы хотите, чтобы это было только там) или в каком-то промежуточном программном обеспечении вы можете проверить request()->user()->company()->is_active и сделать все, что вам нужно. RedirectIfAuthenticated промежуточное ПО - вариант, если вы не хотите создавать новое промежуточное ПО

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...