makaveli / laravel-accept-code
Advanced Accept Code for Laravel
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/makaveli/laravel-accept-code
Requires
- php: ^8.2
- laravel/framework: ^10.10|^11.0|^12.0
- makaveli/laravel-core: ^1.0
- makaveli/laravel-crudler: ^1.1
- makaveli/laravel-jwt-auth: ^1.1
- makaveli/laravel-logger: ^1.1
- makaveli/laravel-login-history: ^1.1
README
Laravel Accept Code — это пакет для Laravel, который предоставляет расширенные возможности управления кодами подтверждения (accept codes) для таких действий, как вход, регистрация и сброс пароля. Пакет поддерживает отправку кодов по email и SMS, интегрируется с системой аутентификации и логированием.
Возможности
- Управление кодами подтверждения для входа, регистрации и сброса пароля.
- Отправка кодов подтверждения через email и SMS.
- Проверка валидности кодов с учетом времени жизни и интервалов повторной отправки.
- Интеграция с системой аутентификации и ролями пользователей.
- Настраиваемые slug'ы и типы кодов (email/phone).
- Консольные команды для миграций.
Требования
- PHP 8.2 или выше
- Laravel 10.10, 11.0 или 12.0
- Пакет
makaveli/laravel-login-history(версия ^1.1) - Пакет
makaveli/laravel-logger(версия ^1.1) - Пакет
makaveli/laravel-jwt-auth(версия ^1.1) - Пакет
makaveli/laravel-crudler(версия ^1.1) - Пакет
makaveli/laravel-core(версия ^1.0)
Установка
-
Установите пакет через Composer:
composer require makaveli/laravel-accept-code
-
Выполните миграции для создания таблицы
accept_codes:php artisan migrate:accept-code
-
(Опционально) Опубликуйте файл конфигурации:
php artisan vendor:publish --tag=accept-code-config
Это создаст файл
config/accept-code.php, который можно настроить под ваши нужды.
Конфигурация
Файл config/accept-code.php позволяет настроить поведение пакета. Основные параметры:
accept_code_slugs: Список slug'ов для кодов подтверждения (login,registration,reset-password).get_user_by_phone: Функция поиска пользователя по номеру телефона.get_user_by_email: Функция поиска пользователя по email.get_user_role_id: Функция получения ID роли пользователя.check_permission_to_auth: Функция проверки прав на авторизацию.verified_user: Функция обновления статуса верификации пользователя.change_password: Функция изменения пароля пользователя.logger_slugs: Slug'ы для логирования действий.email: Функции отправки email-уведомлений.phone: Функции отправки SMS-уведомлений.accept_code_delay_repeat_ttl: Время задержки перед повторной отправкой кода (по умолчанию 90 секунд).accept_code_ttl: Время жизни кода (по умолчанию 43200 секунд, или 12 часов).phone_validation_rule: Правило валидации номера телефона.password_validation_rule: Правило валидации пароля.
Пример конфигурации
return [ 'accept_code_slugs' => [ \AcceptCode\Constants\AcceptCodeSlugs::LOGIN_SLUG, \AcceptCode\Constants\AcceptCodeSlugs::REGISTRATION_SLUG, \AcceptCode\Constants\AcceptCodeSlugs::RESET_PASSWORD_SLUG, ], 'get_user_by_phone' => [\App\Modules\User\Repositories\UserRepository::class, 'getByPhone'], 'get_user_by_email' => [\App\Modules\User\Repositories\UserRepository::class, 'getByEmail'], 'email' => [ 'send_verification_notification' => [\App\Modules\Email\Actions\EmailSenderActions::class, 'sendVerificationNotification'], 'send_reset_password_notification' => [\App\Modules\Email\Actions\EmailSenderActions::class, 'sendResetPasswordNotification'], ], 'phone' => [ 'send_registration_code' => [\App\Modules\Phone\Actions\MTCActions::class, 'sendRegistrationCode'], 'send_reset_password_code' => [\App\Modules\Phone\Actions\MTCActions::class, 'sendResetPasswordCode'], 'send_login_code' => [\App\Modules\Phone\Actions\MTCActions::class, 'sendLoginCode'], ], ];
Использование
Вход с кодом подтверждения
Отправка кода для входа
use AcceptCode\Actions\LoginAcceptCodeActions; use AcceptCode\DTO\AcceptCodeDTO; $actions = new LoginAcceptCodeActions(); $dto = AcceptCodeDTO::fromLoginSendRequest($request); $actions->sendLoginCode($dto);
Подтверждение кода и авторизация
[ $accessToken, $refreshToken, $user ] = $actions->acceptLoginCodeAndAuth( AcceptCodeDTO::fromLoginAcceptRequest($request) );
Регистрация с кодом подтверждения
Отправка кода для регистрации
use AcceptCode\Actions\RegistrationAcceptCodeActions; $actions = new RegistrationAcceptCodeActions(); $dto = AcceptCodeDTO::fromRegistrationSendRequest($request); $actions->sendRegistrationCode($dto);
Подтверждение кода для регистрации
[ $accessToken, $refreshToken, $user ] = $actions->acceptRegistrationCode( AcceptCodeDTO::fromRegistrationAcceptAccountRequest($request) );
Сброс пароля с кодом подтверждения
Отправка кода для сброса пароля
use AcceptCode\Actions\ResetPasswordAcceptCodeActions; $actions = new ResetPasswordAcceptCodeActions(); $dto = AcceptCodeDTO::fromPasswordResetSendRequest($request); $actions->sendResetPasswordCode($dto);
Проверка кода
$actions->verifyResetPasswordCode( AcceptCodeDTO::fromPasswordResetVerifyRequest($request) );
Установка нового пароля
$user = $actions->acceptResetPasswordCode( AcceptCodeDTO::fromPasswordResetSetNewRequest($request) );
Консольные команды
Для выполнения миграций пакета:
php artisan migrate:accept-code
Структура базы данных
Таблица accept_codes содержит следующие поля:
id: Уникальный идентификатор.user_id: Внешний ключ на таблицу пользователей.credetinal: Учетные данные (телефон или email).code: Код подтверждения.type: Тип кода (emailилиphone).slug: Slug действия (login,registration,reset-password).created_at,updated_at: Временные метки.
Расширение
Вы можете настроить поведение пакета, переопределив:
- Модель
AcceptCodeдля добавления собственных методов или связей. - Репозиторий
AcceptCodeRepositoryдля изменения логики работы с кодами. - Сервис
AcceptCodeServiceдля кастомизации создания и обновления кодов. - Классы действий (
LoginAcceptCodeActions,RegistrationAcceptCodeActions,ResetPasswordAcceptCodeActions) для изменения бизнес-логики.