用户注册后的 Laravel 操作

yas*_*e j 0 laravel

在我的 Laravel 应用程序中,新注册后,它会自动连接到这个新帐户。

我只需要注册并与实际的身份验证帐户保持连接。我们怎样才能改变这个默认设置呢?

因为我正在使用管理员用户在应用程序中创建新帐户。谢谢

这是我的注册控制器代码:

 use RegistersUsers;
protected function redirectTo()
{
if(Auth::user()->is_admin == 1){
  return 'persons';
}
return '/persons';
}
public function __construct()
{
    $this->middleware('auth');
}
protected function validator(array $data)
{

    return Validator::make($data, [
        'name' => 'required|string|max:255',
        'email' => 'required|string|email|max:255|unique:users',
        'password' => 'required|string|min:6|confirmed',

    ]);
}
protected function create(array $data)
{
    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'password' => Hash::make($data['password']),
    ]);
}
Run Code Online (Sandbox Code Playgroud)

在 Registeruser.php 中,我将函数 register 更改为

public function register(Request $request)
{
    $this->validator($request->all())->validate();

    event(new Registered($user = $this->create($request->all())));


    return $this->registered($request, $user)
                    ?: redirect($this->redirectPath());
}
Run Code Online (Sandbox Code Playgroud)

请注意,我使用person.blade.php, 而不是创建新用户/register

Aar*_*rez 6

在你的中,你需要重写特征中的App/Http/Controllers/Auth/RegisterController方法:registerRegistersUsers

public function register(Request $request)
{
    $this->validator($request->all())->validate();

    event(new Registered($user = $this->create($request->all())));

    $this->guard()->login($user);

    return $this->registered($request, $user)
                    ?: redirect($this->redirectPath());
}
Run Code Online (Sandbox Code Playgroud)

此行:$this->guard()->login($user);是用户登录的位置。您可以删除它或修改它以满足您的需要。

现在,如果您想在注册后重定向到某个位置,具体取决于用户类型,您需要替换protected $redirectTo为:

protected function redirectTo()
{
    //You would need to modify this according to your needs, this is just an example.
    if(Auth::user()->hasRole('admin')){
      return 'path';
    }

    if(Auth::user()->hasRole('regular_user')){
      return 'path';
    }

    return 'default_path';
}
Run Code Online (Sandbox Code Playgroud)

在文件顶部添加以下内容:

use Illuminate\Http\Request; use Illuminate\Auth\Events\Registered;