refact-be/ odoo-bundle
此包最新版本(0.1.0)没有提供许可信息。
Symfony Bundle,用于将Odoo用作认证提供者
0.1.0
2019-07-13 20:18 UTC
Requires
- php: ^7.0
- refact-be/odoo: ^0.1.0
- symfony/console: ^4.3
- symfony/security-bundle: ^4.3
- symfony/yaml: ^4.3
This package is auto-updated.
Last update: 2024-09-14 08:05:22 UTC
README
此Symfony bundle附带了两种认证机制,您可以使用它们从Odoo实例中认证用户
安装
composer require refact-be/odoo-bundle
将bundle添加到bundles.php
Refact\OdooBundle\OdooBundle::class => ['all' => true]
为Odoo bundle创建一个配置文件(config/packages/odoo.yaml)
odoo:
url: https://:8069
database: database_name
admin_id: 2
admin_pass: admin
# required only for the sso mechanism
sso_secret: supersecret
#role_mapping:
# 1: ROLE_USER_TYPES_INTERNAL_USER
# 9: ROLE_USER_TYPES_PORTAL
role_mapping配置是可选的,但允许Odoo组和Symfony角色进行深度集成
使用odoo:get-roles命令自动导出role_mapping
bin/console odoo:get-roles
从Odoo读取数据
/**
* @Route("/me", name="me_details")
* @IsGranted("ROLE_USER_TYPES_PORTAL")
*/
public function users(Odoo $odoo, TokenStorageInterface $tokenStorage)
{
$token = $tokenStorage->getToken();
dump($token);
dd($odoo->rpc('object', 'execute_kw', ['res.users', 'search_read', [[['login', '=', $token->getUser()]]]])[0]);
}
Odoo表单登录
此表单扩展了传统的Symfony表单登录,允许重用其大多数选项
config/packages/security.yaml
security:
firewalls:
main:
anonymous: true
form_login_odoo:
#login_path: login
logout:
path: logout
role_hierarchy:
# allow internal users to access pages restricted to portal users
ROLE_USER_TYPES_INTERNAL_USER: ROLE_USER_TYPES_PORTAL
控制器
/**
* @Route("/login", name="login")
* @Route("/login_check", name="login_check")
* @Route("/logout", name="logout")
*/
public function login(AuthenticationUtils $authenticationUtils)
{
return $this->render('app/login.html.twig', [
'username' => $authenticationUtils->getLastUsername(),
'error' => $authenticationUtils->getLastAuthenticationError(),
]);
}
模板/app/login.html.twig
{% if error %}
<p><strong>{{ error.messageKey }}</strong></p>
{% endif %}
<form method="post" action="{{ path('login_check') }}">
<input type="text" name="_username" value="{{ username }}">
<input type="password" name="_password">
<button>Log in</button>
</form>
Odoo单点登录(SSO)
如果用户已经在Odoo中登录,那么在Symfony应用程序中重复凭据可能会给用户带来不良体验。SSO允许连接两个应用程序以共享认证信息。
此机制需要安装和配置Odoo实例中的SSO插件。有关详细信息,请参阅https://github.com/refact-be/odoo-sso-addon
config/packages/security.yaml
security:
firewalls:
main:
anonymous: true
sso_odoo:
logout:
path: logout
config/routes.yaml
login:
path: /login
login_check:
path: /login_check
logout:
path: /logout