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-09-11 18:58:47 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。在这里,您可以找到可用提供者的列表以及它们的安装和配置说明。
-
以下是与连接的 VK 提供者示例。一旦您连接了提供者,请将路由添加到您的 blade 模板中。
@guest
<a href="{{route('social-auth', 'vkontakte')}}"> Вход через ВК</a>
@endguest
身份验证和注册
您不仅可以使用我们的包通过社交媒体提供者进行身份验证,还可以通过常规表单进行身份验证。在配置文件 /config/socials.php 中,isLoginForm 参数将允许通过常规身份验证表单进行身份验证。在 genPass 部分,method 参数也负责我们的密码加密方法。
加密方法
我们不限于标准加密方法。如果您使用其他加密方法,您可以使用标准方法和不同的方法。这允许您针对不同的项目使用它们。
以下密码加密方法可用
bcryptmd2md4md5password_hashsha1sha224sha256sha384sha512sha512/224sha512/256sha3-224sha3-256sha3-384sha3-512ripemd128ripemd160ripemd256ripemd320whirlpooltiger128,3tiger160,3tiger192,3tiger128,4tiger160,4tiger192,4snefrusnefru256gostgost-cryptoadler32crc32crc32bcrc32cfnv132fnv1a32fnv164fnv1a64joaatmurmur3amurmur3cmurmur3fxxh32xxh64xxh3xxh128pbkdf2base64
服务模式
如果需要限制通过社交网络进行授权的访问,您可以在配置文件 /config/socials.php 中轻松实现,这由参数 isActive 负责。但您也可以授予您的管理员或特定人员始终可以授权访问,即使限制是激活的。为此,在 access_admin 部分中,通过逗号分隔,指定 User 模型的用户 id。对于他们,始终会提供访问权限。
'access_admin' => [ /* 1, 2, */ ],
指令
我们增加了使用 Blade 指令 的功能,为了方便,您可以使用链接列表来通过提供者进行授权。只需在 html 中添加指令 @socials 即可。
<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_stringcustom-hard设置您自己的唯一字母、符号、字符组合。参数custom_hardcustom-unique设置您自己的唯一字母、符号、字符组合。参数custom_unique
为了测试,您可以设置自己的默认密码。可以在 genPass 部分进行设置,这由参数 default_gen 负责:如果 true,则使用 default_pass 字符串作为您的密码;如果 false,则每次随机生成新密码。
密码长度
为了更安全的密码,其长度也很重要。您也可以在配置文件 /config/socials.php 中的 genPass 部分控制其长度。
长度选项
stable_lengthtrue 基于值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= : 用户搜索字段 (ID)} {--a= : 访问标志 (0,1)}- 此命令可以封禁/解封用户。
测试
为了检查功能是否正常,可以执行一个特殊的命令
- ./vendor/bin/phpunit --configuration phpunit.xml
许可证
Social 是一个开源软件,根据 MIT 许可证 许可。