synolia / sylius-admin-oauth-plugin
Sylius 管理员 OAuth 插件。
v1.0.3
2024-03-01 10:50 UTC
Requires
- php: ^8.1
- knpuniversity/oauth2-client-bundle: ^2.15
- league/oauth2-google: ^4.0
- sylius/sylius: ^1.10
- thenetworg/oauth2-azure: ^2.2
Requires (Dev)
- friendsofphp/php-cs-fixer: 3.46.0
- friendsoftwig/twigcs: 6.4.0
- j13k/yaml-lint: 1.1.5
- php-parallel-lint/php-parallel-lint: 1.3.2
- phpmd/phpmd: 2.15.0
- phpro/grumphp: 2.4.0
- phpstan/extension-installer: 1.3.1
- phpstan/phpstan: 1.10.52
- phpstan/phpstan-doctrine: 1.3.53
- phpstan/phpstan-phpunit: 1.3.15
- phpstan/phpstan-strict-rules: 1.5.2
- phpstan/phpstan-webmozart-assert: 1.2.4
- phpunit/phpunit: 10.5.5
- povils/phpmnd: 3.3.0
- rector/rector: 0.18.13
- seld/jsonlint: 1.10.1
- squizlabs/php_codesniffer: 3.8.0
- sylius-labs/coding-standard: 4.3.1
- symfony/browser-kit: 6.4.0
- symfony/debug-bundle: 6.4.0
- symfony/dotenv: 6.4.2
- webmozart/assert: 1.11.0
This package is auto-updated.
Last update: 2024-09-12 08:52:24 UTC
README
Synolia SyliusAdminOauthPlugin
为 Sylius 管理面板添加 OAuth 身份验证。
功能
- 允许您的管理员用户通过 OAuth 提供商进行订阅和登录
- Microsoft
- 允许域名连接管理。
要求
安装
-
在您的 composer.json 中添加此包及其依赖项
$ composer require synolia/sylius-admin-oauth-plugin
-
在 .env 文件中,使用这些键写入您的 Google 和/或 Microsoft 客户端 ID 和客户端密钥
SYNOLIA_ADMIN_OAUTH_GOOGLE_CLIENT_ID= SYNOLIA_ADMIN_OAUTH_GOOGLE_CLIENT_SECRET= SYNOLIA_ADMIN_OAUTH_MICROSOFT_CLIENT_ID= SYNOLIA_ADMIN_OAUTH_MICROSOFT_CLIENT_SECRET=
-
在您的 security.yaml 中,将 OAuth 验证器添加到您的管理员防火墙,并根据您使用的提供程序设置 access_control 路径。 它们必须位于其他路径之上
security: enable_authenticator_manager: true firewalls: admin: custom_authenticators: - Synolia\SyliusAdminOauthPlugin\Security\Authenticator\OauthAuthenticator access_control: - { path: "%sylius.security.admin_regex%/connect/google", role: PUBLIC_ACCESS, requires_channel: https } - { path: "%sylius.security.admin_regex%/connect/google/check", role: PUBLIC_ACCESS, requires_channel: https } - { path: "%sylius.security.admin_regex%/connect/microsoft", role: PUBLIC_ACCESS, requires_channel: https } - { path: "%sylius.security.admin_regex%/connect/microsoft/check", role: PUBLIC_ACCESS, requires_channel: https }
-
创建一个 config/routes/synolia_oauth.yaml 来配置插件的路由,并将它们以 'admin' 为前缀
synolia_oauth: resource: '@SynoliaSyliusAdminOauthPlugin/config/routes.yaml' prefix: '/%sylius_admin.path_name%'
-
创建一个 config/packages/synolia_oauth_config.yaml 来导入所有必需的配置
imports: - { resource: "@SynoliaSyliusAdminOauthPlugin/config/app.yaml" }
-
将此 trait 添加到您的 App\Entity\User\AdminUser.php 中
use Doctrine\ORM\Mapping as ORM; use Sylius\Component\Core\Model\AdminUser as BaseAdminUser; use Synolia\SyliusAdminOauthPlugin\Entity\User\CustomAdminUserTrait; class AdminUser extends BaseAdminUser { use CustomAdminUserTrait; }
-
将迁移应用到您的数据库
php bin/console doctrine:migrations:migrate
-
第一次安装后,没有配置任何域,因此您必须添加一个域才能使用 OAuth 进行连接。如果您已有管理员用户,请通过管理面板添加一个并授权它。您可以通过菜单中的 OAuth 域管理部分访问它。
不要忘记在 Google Cloud Console 或 Azure Active Directory 中添加您的允许重定向 URI!完整文档在此
- Google : https://cloud.google.com/looker/docs/admin-panel-authentication-google
- Microsoft : https://learn.microsoft.com/en-en/azure/active-directory/architecture/auth-oauth2
现在您可以在管理员登录面板中使用 OAuth 连接到您的帐户!
故障排除
- 错误 'TOO_MANY_REDIRECT':添加以下两行
- services.yaml
parameters: router.request_context.scheme: 'https'
- framework.yaml
framework: trusted_proxies: '127.0.0.1,REMOTE_ADDR'
- services.yaml
- 如果您看不到您的 OAuth 连接按钮,请验证您的 .env 变量,其中指定了您的 client_id 和 client_secret
- 如果您看到“无法连接,请重试”的消息,请不要忘记在后台办公室中配置您的授权域。
开发
见如何贡献。
许可
本库受EUPL-1.2 许可的约束。
致谢
由Synolia开发。