artemyurov/moonshine-mailru-auth
Composer 安装命令:
composer require artemyurov/moonshine-mailru-auth
包简介
OAuth-авторизация через Mail.ru для MoonShine 4.x с кнопкой на странице логина и раскрывающейся стандартной формой админа
README 文档
README
OAuth-авторизация через Mail.ru для MoonShine 4.x.
На странице логина добавляется большая синяя кнопка «Почта Mail.ru», а стандартная админ-форма прячется под раскрывающийся блок «Вход для администраторов» (автоматически раскрывается при ошибках валидации).
Где регистрировать OAuth-приложение:
- Кабинет: https://o2.mail.ru/app/
- Документация: https://id.vk.com/about/business/go/docs/ru/vkid/latest/oauth/oauth-mail/index
После 1 июля 2025 новые регистрации OAuth Mail доступны только через VK ID (см. документацию выше). Пакет работает с уже выданными client_id/client_secret, а также с новыми, выпущенными через VK ID — endpoint o2.mail.ru остаётся прежним.
Возможности
- Кнопка
MailRuAuthна странице логина — OAuth Authorization Code grant через Saloon CollapsibleAdminLogin— Alpine.js аккордеон для стандартной формы MoonShine- Готовый
MailRuLoginPage(можно extends'ить) - Конфигурируемая модель пользователя и поле для поиска по email
- Нормальная обработка ошибок:
Log::error()+ flash-алерт через<x-moonshine::alert>+toast() - Поддержка
prompt_force(выбор другого аккаунта Mail.ru)
Требования
- PHP 8.3+
- Laravel 11 / 12
- MoonShine 4.x
- Eloquent-модель пользователя с полем
email
Установка
1. Composer
composer require artemyurov/moonshine-mailru-auth
ServiceProvider регистрируется через Laravel package auto-discovery.
2. Опубликовать конфиг
php artisan vendor:publish --tag=mailru-auth-config
Это создаст config/mailru-auth.php. Если кастомизировать настройки не нужно — пропустить шаг, дефолты возьмутся из пакета.
3. .env
MAILRU_CLIENT_ID / MAILRU_CLIENT_SECRET берутся в кабинете https://o2.mail.ru/app/.
MAILRU_CLIENT_ID= MAILRU_CLIENT_SECRET= # Опционально — по умолчанию APP_URL/mailru/callback # MAILRU_REDIRECT_URI=
4. config/moonshine.php
Указать кастомную страницу логина:
'pages' => [ // ... 'login' => \ArtemYurov\MailRuAuth\MoonShine\Pages\MailRuLoginPage::class, ],
5. OAuth-приложение
В настройках OAuth-приложения (https://o2.mail.ru/app/) указать redirect URI:
<APP_URL>/mailru/callback
Готово. Заходи на /admin/login — увидишь кнопку Mail.ru.
Конфигурация
config/mailru-auth.php:
return [ 'client_id' => env('MAILRU_CLIENT_ID'), 'client_secret' => env('MAILRU_CLIENT_SECRET'), 'redirect_uri' => env('MAILRU_REDIRECT_URI', '<APP_URL>/mailru/callback'), // Модель Eloquent для поиска пользователя 'user_model' => \App\Models\User::class, // Поле, по которому ищется пользователь 'email_field' => 'email', // Регистрировать роуты mailru.auth / mailru.callback автоматически 'register_routes' => true, ];
Использование
Готовая страница логина
Прописать в config/moonshine.php:
'pages' => [ 'login' => \ArtemYurov\MailRuAuth\MoonShine\Pages\MailRuLoginPage::class, ],
Своя страница логина
Унаследовать и добавить любые компоненты:
namespace App\MoonShine\Pages; use ArtemYurov\MailRuAuth\MoonShine\Pages\MailRuLoginPage; final class LoginPage extends MailRuLoginPage { protected function components(): iterable { return [ // Можно добавить свои компоненты перед/после стандартных ...parent::components(), ]; } }
Только кнопка Mail.ru, без аккордеона
В своём LoginPage:
use ArtemYurov\MailRuAuth\MoonShine\Components\MailRuAuth; use MoonShine\Laravel\Pages\LoginPage as BaseLoginPage; final class LoginPage extends BaseLoginPage { protected function components(): iterable { return [ MailRuAuth::make(), ...parent::components(), ]; } }
Кастомизация views
php artisan vendor:publish --tag=mailru-auth-views
Views скопируются в resources/views/vendor/mailru-auth/. Можно править стили кнопки, аккордеона.
Как работает OAuth flow
- На LoginPage отрисовывается кнопка «Почта Mail.ru» (
MailRuAuth) - Submit →
POST /mailru/auth→ редирект наhttps://o2.mail.ru/loginс client_id и scopeuserinfo - Callback
GET /mailru/callback?code=...&state=...→ обмен на access_token - Запрос
GET /userinfo→ email пользователя - Поиск по
config('mailru-auth.user_model')черезconfig('mailru-auth.email_field') - Логин через
MoonShineAuth::getGuard()->loginUsingId() - Редирект на
moonshineConfig()->getHomeRoute()
При ошибках на любом шаге — Log::error() + session()->flash('alert', ...) + toast(), редирект обратно на login. Алёрт отображается в блоке mail-ru-auth.blade.php. Аккордеон админ-формы автоматически раскрывается при $errors->any().
Лицензия
MIT
统计信息
- 总下载量: 0
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2026-06-15