Guards and providers are named in config/auth.php, which is short without its comments:
'defaults' => [
'guard' => env('AUTH_GUARD', 'web'),
'passwords' => env('AUTH_PASSWORD_BROKER', 'users'),
],
'guards' => ['web' => ['driver' => 'session', 'provider' => 'users']],
'providers' => [
'users' => ['driver' => 'eloquent', 'model' => env('AUTH_MODEL', User::class)],
],
'passwords' => ['users' => ['provider' => 'users', 'expire' => 60, 'throttle' => 60,
'table' => env('AUTH_PASSWORD_RESET_TOKEN_TABLE', 'password_reset_tokens')]],
'password_timeout' => env('AUTH_PASSWORD_TIMEOUT', 10800),A second audience with its own table gets a staff provider and guard, used as Auth::guard('staff')->attempt(...) and auth:staff; for mere permissions, an is_admin flag and a gate (Authorization) are simpler. The skeleton's migration already has a password string (bcrypt needs 60 characters), a nullable remember_token, email_verified_at, password_reset_tokens, and sessions with a user_id column. The kit adds three two_factor_* columns and passkeys.