79 lines
1.7 KiB
PHP
79 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace Laravel\Dusk\Http\Controllers;
|
|
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Illuminate\Support\Facades\Session;
|
|
use Illuminate\Support\Str;
|
|
|
|
class UserController
|
|
{
|
|
/**
|
|
* Retrieve the authenticated user identifier and class name.
|
|
*
|
|
* @param string|null $guard
|
|
* @return array
|
|
*/
|
|
public function user($guard = null)
|
|
{
|
|
$user = Auth::guard($guard)->user();
|
|
|
|
if (! $user) {
|
|
return [];
|
|
}
|
|
|
|
return [
|
|
'id' => $user->getAuthIdentifier(),
|
|
'className' => get_class($user),
|
|
];
|
|
}
|
|
|
|
/**
|
|
* Login using the given user ID / email.
|
|
*
|
|
* @param string $userId
|
|
* @param string|null $guard
|
|
* @return void
|
|
*/
|
|
public function login($userId, $guard = null)
|
|
{
|
|
$guard = $guard ?: config('auth.defaults.guard');
|
|
|
|
$provider = Auth::guard($guard)->getProvider();
|
|
|
|
$user = Str::contains($userId, '@')
|
|
? $provider->retrieveByCredentials(['email' => $userId])
|
|
: $provider->retrieveById($userId);
|
|
|
|
Auth::guard($guard)->login($user);
|
|
}
|
|
|
|
/**
|
|
* Log the user out of the application.
|
|
*
|
|
* @param string|null $guard
|
|
* @return void
|
|
*/
|
|
public function logout($guard = null)
|
|
{
|
|
$guard = $guard ?: config('auth.defaults.guard');
|
|
|
|
Auth::guard($guard)->logout();
|
|
|
|
Session::forget('password_hash_'.$guard);
|
|
}
|
|
|
|
/**
|
|
* Get the model for the given guard.
|
|
*
|
|
* @param string $guard
|
|
* @return string
|
|
*/
|
|
protected function modelForGuard($guard)
|
|
{
|
|
$provider = config("auth.guards.{$guard}.provider");
|
|
|
|
return config("auth.providers.{$provider}.model");
|
|
}
|
|
}
|