Аутентификации

# Основы

В админ-панели MoonShine реализована система аутентификации. По умолчанию она включена, но если нужно разрешить доступ для всех пользователей, то ее можно отключить в файле конфигурации config/moonshine.php.

return [
// ...
'auth' => [
'enable' => true,
// ...
],
// ...
];

# Расширение возможностей

Если используете собственный guard, provider, то их можно переопределить в конфигурации, а также модель MoonshineUser.

return [
// ...
'auth' => [
// ...
'middleware' => Authenticate::class,
'guard' => 'moonshine',
'guards' => [
'moonshine' => [
'driver' => 'session',
'provider' => 'moonshine',
],
],
'providers' => [
'moonshine' => [
'driver' => 'eloquent',
'model' => MoonshineUser::class,
],
],
// ...
],
// ...
];

# Форма входа

Вы можете полностью заменить форму входа на собственную, просто замените класс в конфиге на свой, а внутри реализуйте FormBuilder

return [
// ...
'forms' => [
'login' => LoginForm::class
],
// ...
];

# Профиль

Вы можете полностью заменить страницу профиля на собственную, просто замените класс страницы в конфиге на свой

return [
// ...
'pages' => [
// ...
'profile' => ProfilePage::class
],
// ...
];

Переопределить поля для профиля можно в файле конфигурации config/moonshine.php.

return [
// ...
'auth' => [
'enable' => true,
'fields' => [
'username' => 'email',
'password' => 'password',
'name' => 'name',
'avatar' => 'avatar'
],
'guard' => 'moonshine',
// ...
],
// ...
];

Если вы не хотите использовать аватар, то укажите 'avatar'=>'' или 'avatar'=>false.

Возможно изменить Guard в Profile компоненте.

Profile::make(guard: 'custom')
MoonShineAuth::guard('custom')->user()

# Pipelines

В админ-панели MoonShine существует возможность добавлять логику в процесс аутентификации, что в процессе позволит изменить объект запроса или ответа.

Для этого необходимо указать ваши Pipelines в файле конфигурации config/moonshine.php.

return [
'auth' => [
'pipelines' => [
PipelineClass::class
],
]
];

или

return [
'auth' => [
'pipelines' => [
new class {
public function handle($request, $next) {
return $next($request);
}
}
],
]
];