はい、その権利をお読みください。私に説明させてください。私は、laravel 5.4に付属しているデフォルトの認証プロセスを使用しており、管理ユーザーが新しいユーザーを登録できるようにしています。私がログインしているユーザは、(彼らは「1」のタイプを持っていることを意味し、私の場合)管理者であれば/register
へのアクセスを可能にするためのミドルウェアRedirectIfNotAuthenicated
を変更した:ユーザーが既にログインしている場合は、登録後にログインしないでください
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
if(!Auth::user()->type == '1'){
return redirect('/');
}
}
return $next($request);
}
私の質問は、今になると、どのように内既存のRegisterController
は、アカウントが管理者によって作成されている場合、登録に成功した場合にユーザーをログインさせません。明らかに、これは、ユーザーが現在ログインしているかどうかを確認するためのチェックが必要になりますが、私はブロックされていますが、他の場所で行われているようなものです。
protected function create(array $data)
{
if(isset($data["director"])){
$this->redirectTo = '/organizations/create';
}
if(Auth::user()->type == '1'){
//create the user and not log them in
} else {
return User::create([
'first_name' => $data['first_name'],
'last_name' => $data['last_name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
}
これは状況を処理する最善の方法と思われます。私はユーザーがguestかadminかをチェックするデフォルトのレジスタビューにロジックを追加し、別の管理コントローラ(別のルートへの管理者投稿の場合)で再利用できるようにしました。私の主な関心事は、2つの別々の場所で同じフォームを維持することでした。 – commanderZiltoid