sashagm / social
Авторизация через социальные сети с помощью пакета для Laravel +10.x
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.7
- laravel/socialite: ^5.8
Requires (Dev)
- phpunit/phpunit: ^10.2
- dev-master
- 1.44.3
- 1.44.2
- 1.44.1
- 1.44.0
- 1.43.2
- 1.43.1
- 1.43.0
- 1.42.0
- 1.41.0
- 1.40.0
- 1.39.0
- 1.38.0
- 1.37.0
- 1.36.1
- 1.36.0
- 1.35.0
- 1.34.0
- 1.33.0
- 1.32.2
- 1.32.1
- 1.32.0
- 1.31.0
- 1.30.0
- 1.29.0
- 1.28.0
- 1.27.0
- 1.26.0
- 1.25.1
- 1.25.0
- 1.24.0
- 1.23.0
- 1.22.0
- 1.21.2
- 1.21.1
- 1.21.0
- 1.20.0
- 1.19.0
- 1.18.1
- 1.18.0
- 1.17.1
- 1.17.0
- 1.16.1
- 1.16.0
- 1.15.0
- 1.14.1
- 1.14.0
- 1.13.0
- 1.12.0
- 1.11.0
- 1.10.0
- 1.9.0
- 1.8.0
- 1.7.0
- 1.6.1
- 1.6.0
- 1.5.1
- 1.5.0
- 1.4.0
- 1.3.0
- 1.2.0
- 1.1.0
- 1.0.0
This package is auto-updated.
Last update: 2024-10-11 19:08:50 UTC
README
Авторизация через социальные сети с помощью пакета для Laravel
Наш пакет предоставляет удобный способ работы с авторизацией для вашего сайта с использованием 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.