ybelenko/oauth2_email_grant
Composer 安装命令:
composer require ybelenko/oauth2_email_grant
包简介
Custom OAuth2 Email Grant compliant with league/oauth2-server package.
README 文档
README
Requirements
- PHP 8.x
Important Notice
If you decide to extend some of the classes make sure you DON'T expose access token somewhere. Check that you DON'T
echo/print/var_dumpaccess token or instance of it.
Installation via Composer
Run in command line:
composer require ybelenko/oauth2_email_grant
Basic Usage
Assuming you already have PHP League OAuth 2.0 Server installed and configured.
use League\OAuth2\Server\Entities\AccessTokenEntityInterface; use League\OAuth2\Server\Entities\ClientEntityInterface; use League\OAuth2\Server\Entities\UserEntityInterface; use Ybelenko\OAuth2\Server\Grant\CustomEmailGrant; // if you want to use class method instead of anonymous functions // do $onAccessToken = \Closure::fromCallable([$this, 'onAccessToken']) // or when method is static $onAccessToken = \Closure::fromCallable([UserClass::class, 'onAccessToken']) $grant = new CustomEmailGrant( $userRepository, // repository used in your oauth2 server implementation static function ( string $email, AccessTokenEntityInterface $accessToken, ClientEntityInterface $client, UserEntityInterface $user, array $scopes ) { // send access token to user via email // or do something else }, static function (string $email) { // validate email the way you want // throw an exception or return true|false // everything beside true return will stop token creation } ); // all other repos should be added from auth server automatically // right after you call $server->enableGrantType($grant, new \DateInterval('PT1H'));
then in your UserRepositoryInterface implementation handle new custom grant:
/** * {@inheritdoc} */ public function getUserEntityByUserCredentials( $username, $password, $grantType, ClientEntityInterface $clientEntity ) { if ($grantType === 'custom_email') { // password is empty string now // just for readability $email = $username; // if user with provided email exists return new entity // otherwise return null // don't need to check password since we send token // to provided email, works like common account recover flow $user = new FakeUserEntity(); $user->setIdentifier($email); return $user; } // handle other grants also check password from now return null; }
To use new grant user can send POST with a small change(grant_type changed to custom_email, new field email):
{
"grant_type": "custom_email",
"client_id": "client",
"client_secret": "secret",
"email": "johndoe@example.dev",
"scope": "foo baz bar"
}
it's also possible to send client_id and client_secret as "Authorization: Basic {base64_encode($clientId . ':' . $clientSecret)}" HTTP header.
Instead of usual access token response user receives payload like:
{
"message": "Mail with recover link has been sent to provided address",
"expires_in": 3600
}
Author
ybelenko/oauth2_email_grant 适用场景与选型建议
ybelenko/oauth2_email_grant 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2 次下载、GitHub Stars 达 0, 最近一次更新时间为 2022 年 11 月 22 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「oauth2」 「email」 「grant」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ybelenko/oauth2_email_grant 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ybelenko/oauth2_email_grant 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ybelenko/oauth2_email_grant 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A lightweight and powerful OAuth 2.0 authorization and resource server library with support for all the core specification grants. This library will allow you to secure your API with OAuth and allow your applications users to approve apps that want to access their data from your API.
Multiauth and custom grants for laravel passport
Email Toolkit Plugin for CakePHP
Extensible library for building notifications and sending them via different delivery channels.
Email+ extends Kirby's email capabilities by adding support for multiple email services using the same Kirby email API.
A Laravel server implementation for Altcha.
统计信息
- 总下载量: 2
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 18
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-11-22