Наш пакет предоставляет удобный способ работы с авторизацией для вашего сайта с использованием Laravel Socialite. Так же есть и интегривованная альтернативная регистрация и авторизация через обычную форму. Простая интеграция позволяет быстро подключить необходимые провайдеры и использовать их. Расширенная кастомизация позволяет гибко настроить функционал под ваш проект без особых изменений.
Основные требования для установки и корректной работы:
PHP
>= 8.0Laravel
>= 10.x || 11.xComposer
>= 2.4.x
Для установки пакета необходимо выполнить команды:
- composer require sashagm/social
- php artisan socials:install
- Для начала давайте определим нашу вспомогательную конфигурацию в
/config/socials.php
:
'admin_prefix' => '', // Префикс для маршрутов
'isActive' => true, // Доступ авторизации
'isProvider' => true, // Проверка провайдера( запрет на использование одинаковых email)
'isLoginForm' => true, // Разрешать авторизовываться через обычную форму
'user' => [
'table' => 'users', // Таблица пользователей
'avatar' => "img", // Поле для аватарок
'pass_colum' => "password", // Поле пароля
'table_after' => "password", // После какого поля будут добавлены новые поля
'access_colum' => 'isBanned', // Поле для учета блокировки/группа или роль
'access_value' => 1, // Какое значение необходимо получить чтобы заблокировать доступ
'name_colum' => 'name', // Поле для логина
'email_colum' => 'email', // Поле для почты
'auto_update' => true, // Разрешить пользователям обновлять данные от провайдеров
'update_colum' => 'isUpdate', // Поле для обновлений данных
'getAvatar' => true, // Использовать аватарку пользователя из провайдера социальной сети
'defaultAvatar' => '/path/to/default/avatar.png', // Путь к дефолтной аватарке
'check_field' => 'id', // Поле для проверки активности социальных сетей.
],
'genPass' => [
'method' => 'bcrypt', // Метод шифрования пароля
'filter' => 'number', // Фильтр генерации пароля
'length' => 8, // Количество знаков для генерации пароля
'min' => 6, // Минимальное количество знаков
'max' => 10, // Максимальное количество знаков
'stable_length' => true, // Стабильная генерация
'secret' => 'erb26vwu2', // Секретная фраза для метода md5
'viewReg' => true, // Верхний регистр для метода md5
'default_gen' => true, // Использовать default_pass как дефолтный пароль
'default_pass' => "123456", // Строка для дефолтного пароля
'custom_string' => "", // Свой набор символов и знаков
'custom_hard' => "", // Свой набор символов и знаков
'custom_unique' => "", // Свой набор символов и знаков
'generation_stages' => 10, // Сколько стадий генерации будет
],
'redirect' => [
'auth' => 'home', // редирект после авторизации укажите именной роут
'logout' => 'home', // редирект после выхода укажите именной роут
],
'routes' => [
'auth_login' => [
'/login/{provider}', // url на вызов провайдера
'social-auth' // route name
],
'auth_login_callback' => [
'/login/{provider}/callback', // url на вызов коллбэк
'social-callback' // route name
],
'social_logout' => [
'/logout/social', // url на вызов выход с аккаунта
'social-logout' // route name
],
'auth_login_form' => [
'/login', // url на вызов формы входа
'auth-login-form' // route name
],
'auth_login_form_callback'=> [
'/login/auth', // url на вызов коллбэк form
'auth-login-form-callback' // route name
],
],
'custom_fields' => [
/*
'phone' => '+1234567890',
'address' => '123 Main Street',
*/
],
'access_admin' => [
/*
1,
*/
],
'feedback_before' => [
/* [
'class' => 'App\Services\Testing',
'method' => 'one',
'params' => []
],
*/
],
'feedback_after' => [
/* [
'class' => 'App\Services\Testing',
'method' => 'one',
'params' => []
],
*/
],
'feedback_register' => [
/* [
'class' => 'App\Services\Testing',
'method' => 'one',
'params' => []
],
*/
],
'providers' => [
/* 'vkontakte', 'github',
*/
],
'logger' => [
'method' => true, // Использовать дефолтный вариант логирования(false - Кастомный логер)
'path' => "logs/custom.log", // Путь для кастомного логера
'log_login' => true, // Логировать успешую авторизацию
'log_register' => true, // Логировать успешую регистрацию
],
- Для модели
User
необходимо еще добавить наши новые поля которые будут дополнительно использоваться:
protected $fillable = [
'img',
'provider',
'provider_id',
'isUpdate',
];
-
Выполните команду:
php artisan migrate
чтобы добавить вспомогательные поля в таблицу пользователей. -
Для использования дополнительных провайдеров авторизации в Laravel Socialite, вы можете посетить сайт socialiteproviders.com. Здесь вы найдете список доступных провайдеров, а также инструкции по их установке и настройке.
-
Пример с подключённым провайдером ВК. Как только вы подключите провайдер добавьте маршрут в ваш blade шаблон.
@guest
<a href="{{route('social-auth', 'vkontakte')}}"> Вход через ВК</a>
@endguest
Вы можете использовать наш пакет не только для работы авторизации с провайдерами социальных сетей но и альтернативным способом через обычную форму они работают параллельно друг другу.
В конфигрурационном файле /config/socials.php
параметр isLoginForm
будет разрешать авторизовываться через обычную форму авторизации.
В разделе genPass
параметр method
так же отвечает за метод шифрования нашего пароля.
Мы не ограничеваемся в стандарном методе шифрования. Если используете другие методы шифрования, вы можете использовать как стандартный так и разные методы. Что позволяет использовать под разные проекты.
Доступные следующие методы шифрования пароля:
bcrypt
md2
md4
md5
password_hash
sha1
sha224
sha256
sha384
sha512
sha512/224
sha512/256
sha3-224
sha3-256
sha3-384
sha3-512
ripemd128
ripemd160
ripemd256
ripemd320
whirlpool
tiger128,3
tiger160,3
tiger192,3
tiger128,4
tiger160,4
tiger192,4
snefru
snefru256
gost
gost-crypto
adler32
crc32
crc32b
crc32c
fnv132
fnv1a32
fnv164
fnv1a64
joaat
murmur3a
murmur3c
murmur3f
xxh32
xxh64
xxh3
xxh128
pbkdf2
base64
Если необходимо ограничить доступ к авторизации через социальные сети. Вы можете это легко сделать в конфигрурационном файле /config/socials.php
за это отвечает параметр isActive
. Но так же вы можете вашим Администраторам или Определенным лицам дать доступ всегда авторизоваться даже если активно огранеичение. Для этого в разделе access_admin
укажите через запятую id пользователей из модели User
.
Для них всегда будет доступ.
'access_admin' => [
/*
1,
2,
*/
],
Мы добавили возможность использовать Blade директивы
для удобства вы можете использовать список сссылок для авторизации через провайдеры.
Просто добавьте директиву @socials
где нибудь в html.
<body>
@socials
</body>
Так же можно передавать свои классы и стили для ссылок @socials(class="btn btn-primary", style="font-size: 16px; color: #ff2d20")
<body>
@socials(class="btn btn-primary", style="font-size: 16px; color: #ff2d20")
</body>
Если у вас в модели User
используются много полей которые так же необходимо добавлять, вы можете так же добавить их в конфигрурационном файле /config/socials.php
в разделе custom_fields
. Они будут добавлены вместе с входными данными от провайдеров при создание нового пользователя.
'custom_fields' => [
/*
'phone' => '+1234567890',
'address' => '123 Main Street',
*/
],
Вы можете полность настроить абсалютно все названия полей которые используются. В разделе user
так же можно настроить стоковые поля если у вас отличаются.
Вы можете использовать разные фильтры для генерации пароля чтобы создавать разные комбинации в конфигрурационном файле /config/socials.php
в разделе genPass
параметр filter
.
Доступные фильтры для генерации:
string
Только английские буквы верхнего и нижнего регистра.number
Только цифры.hard
Только английские буквы верхнего и нижнего регистра а так же цифры.hard-unique
Только английские буквы верхнего и нижнего регистра а так же цифры и спец символы.rus-string
Только русские буквы верхнего и нижнего регистра.rus-hard
Только русские буквы верхнего и нижнего регистра а так же цифры.rus-unique
Только русские буквы верхнего и нижнего регистра а так же цифры и спец символы.custom-string
Задайте свой уникальный вариант букв, знаков, символов. Параметрcustom_string
custom-hard
Задайте свой уникальный вариант букв, знаков, символов. Параметрcustom_hard
custom-unique
Задайте свой уникальный вариант букв, знаков, символов. Параметрcustom_unique
Для тестирования можно задать свой собственный дефолтный пароль. Настроить можно в разделе genPass
за это отвечает параметры:
default_gen
если true
то будет использоваться строка default_pass
в качестве вашего пароля, если false
то будет рандомиться каждый раз новый пароль.
Для более защищённого пароля так же важно и его длина. Вы можете так же контрлировать его длину в конфигрурационном файле /config/socials.php
в разделе genPass
.
Варианты длины:
stable_length
true Стабильная генерация на основе значенияlength
, false Рандомная генерация на основе рандомаmin
иmax
.
Для более эффективной защиты и уникальности пароля вы можете запустить процесс генерации пароля. Перед шифрованием и созданием пользователя будет создаваться массив с большим количесвом паролей, результатом будет рандомно выбран один из массива.
Чтобы изменить перейдите конфигрурационном файле /config/socials.php
в разделе genPass
.
generation_stages
отвечает за количество стадий генерации строк.
Вы можете задавать свои переводы для переводных фраз. Чтобы редактировать их опубликуйте ресурсы пакета.
Вы можете запускать свои кастомные функции до и после авторизации пользователя. Например если хотите использовать дополнительно spatie permission
можно запустить фунцию которая выдасть роль пользователю после регистрации. Чтобы назначить функции в конфигрурационном файле /config/socials.php
в разделе feedback_before
(до начала) и feedback_after
(после), feedback_register
(после регистрации)
Далее будет выполнена авторизации и редирект.
'feedback_before' => [
/* [
'class' => 'App\Services\Testing',
'method' => 'one',
'params' => []
],
*/
],
'feedback_after' => [
/* [
'class' => 'App\Services\Testing',
'method' => 'one',
'params' => []
],
*/
],
'feedback_register' => [
/* [
'class' => 'App\Services\Testing',
'method' => 'one',
'params' => []
],
*/
],
Чтобы избежать любые конфликты с маршрутами и их именами можно задавать свои собственные. Для управления перейдите в конфигрурационном файле /config/socials.php
в раздел routes
. На данный момент можно управлять тремя роутами: Вызов провайдера
, Вызов коллбэка провайдера
, выход с аккаунта
. Задайте для каждого роута свой url и имя роута.
'routes' => [
'auth_login' => [
'/login/{provider}', // url на вызов провайдера
'social-auth' // route name
],
'auth_login_callback' => [
'/login/{provider}/callback', // url на вызов коллбэк
'social-callback' // route name
],
'social_logout' => [
'/logout/social', // url на вызов выход с аккаунта
'social-logout' // route name
]
],
Если вы не хотите использовать стандартный файл для логирования, вы можете использовать отдельный файл и записывать данные логов туда.
Для управления перейдите в конфигрурационном файле /config/socials.php
в раздел logger
.
'logger' => [
'method' => true, // Использовать дефолтный вариант логирования(false - Кастомный логер)
'path' => "logs/custom.log", // Путь для кастомного логера
'log_login' => true, // Логировать успешую авторизацию
'log_register' => true, // Логировать успешую регистрацию
],
Наш пакет предоставляет ряд дополнительных возможностей, которые могут быть полезны при работе с уведомлениями:
php artisan socials:install
- Данная команда установит все необходимые файлы.php artisan socials:access {--u= : User search field (ID)} {--a= : Access flag (0,1)}
- Данная команда может банить/разбанить пользователя.
Для проверки работоспособности можно выполнить специальную команду:
- ./vendor/bin/phpunit --configuration phpunit.xml
Social - это программное обеспечение с открытым исходным кодом, лицензированное по MIT license.