セントリー2での認証中にさらに制約を追加する方法はありますか?会社のテーブルがあり、ユーザーは会社に属しており、会社が無効になっている場合(アクティブを0に設定して、会社で無効としてマークします)表)、ユーザーはログインできないはずです。
要するに、一部のユーザーをログに記録しているときに、所属する会社をチェックし、アクティブかどうかを確認する必要があります。アクティブでない場合は、ログインしないか、例外をスローします。
…何か心当たりがあればお願いします。ありがとう :)
セントリー2での認証中にさらに制約を追加する方法はありますか?会社のテーブルがあり、ユーザーは会社に属しており、会社が無効になっている場合(アクティブを0に設定して、会社で無効としてマークします)表)、ユーザーはログインできないはずです。
要するに、一部のユーザーをログに記録しているときに、所属する会社をチェックし、アクティブかどうかを確認する必要があります。アクティブでない場合は、ログインしないか、例外をスローします。
…何か心当たりがあればお願いします。ありがとう :)
セントリー 2 コードを変更せずにシンプルに保つことができます。
try
{
$user = Sentry::authenticate($credentials, false);
if ($user->company->active == 0)
{
Sentry::logout();
// Redirect to login page with the proper flash message
}
}
catch (Cartalyst\Sentry\Users\LoginRequiredException $e)
{
}
... other catches
更新
必要に応じて、Sentry2 用の独自のサービス プロバイダーを作成できます。クラスを登録する際、\Cartalyst\Sentry\Sentry クラスを拡張したクラスを登録し、login()
メソッドをオーバーライドすることができます。
コードは次のようになります。
public function login(UserInterface $user, $remember = false)
{
if ( ! $user->isActivated())
{
$login = $user->getLogin();
throw new UserNotActivatedException("Cannot login user [$login] as they are not activated.");
}
// you can create this method in your company model
if ($user->company->isDisabled())
{
throw new CompanyDisabledException("... message ...");
}
$this->user = $user;
// Create an array of data to persist to the session and / or cookie
$toPersist = array($user->getId(), $user->getPersistCode());
// Set sessions
$this->session->put($toPersist);
if ($remember)
{
$this->cookie->forever($toPersist);
}
// The user model can attach any handlers
// to the "recordLogin" event.
$user->recordLogin();
}
会社/アクティブまたは非ステータスをUsers
テーブルに保存し、後でログインコントローラーに保存$credentials
して、プロセスで確認したい追加フィールドを配列に渡すことができます。
このような何かが仕事をしなければなりません:
// Set login credentials
$credentials = array(
'email' => Input::get('email'),
'password' => Input::get('password'),
'company' => 1,
);
// Authenticate user
Sentry::authenticate($credentials, Input::get('remember-me', 0));