trialog / p4s-api-bundle
一个允许轻松集成P4S API的PHP / Symfony2包 - AMISURE项目
Requires
- php: >=5.3.3
- doctrine/doctrine-bundle: 1.2.*
- doctrine/doctrine-fixtures-bundle: dev-master
- doctrine/orm: >=2.2.3,<2.4-dev
- guzzle/guzzle: ~3.7
- hwi/oauth-bundle: dev-master
- misd/guzzle-bundle: ~1.0
- sensio/distribution-bundle: 2.3.*
- sensio/framework-extra-bundle: 2.3.*
- sensio/generator-bundle: 2.3.*
- symfony/assetic-bundle: 2.3.*
- symfony/monolog-bundle: 2.3.*
- symfony/symfony: 2.3.*
- twig/extensions: 1.0.*
- zumba/json-serializer: dev-master
Requires (Dev)
- phpunit/phpunit: 3.7.*
This package is not auto-updated.
Last update: 2024-09-24 01:23:10 UTC
README
法国AMISURE研究项目(http://www.amisure.fr)的P4S平台提供REST API。此库提供了一个允许轻松集成此API的Symfony2包。无需担心底层REST API,可以直接操作PHP对象。
功能
- 使用经典的Symfony2登录流程,通过OAuth 2.0认证到P4S
- 使用PHP方法和对象访问P4S API
- 检索受益人信息
- 列出组织和它们的用户
- 创建和列出受益人日历中的事件
- 在受益人和组织或组织用户之间创建链接
- 创建和列出受益人的评估
安装与使用
使用Composer文件将此库添加到您的Symfony2项目中。您需要添加以下依赖项
"require" : {
"php" : ">=5.3.3",
"hwi/oauth-bundle" : "dev-master",
"trialog/p4s-api-bundle" : "dev-master",
"zumba/json-serializer" : "dev-master"
}
通常,只需要"trialog/p4s-api-bundle",但一个已知的bug阻止我们单独使用它。
然后,您需要将此库作为bundle添加到app/AppKernel.php
public function registerBundles()
{
$bundles = array(
// ...
new HWI\Bundle\OAuthBundle\HWIOAuthBundle(),
new Amisure\P4SApiBundle\AmisureP4SApiBundle()
然后,您可以在代码中使用p4s.accessor服务,例如在Controller中检索组织列表
$this->get('p4s.accessor')->findOrganizations(array(
'organizationType' => UserConstants::SAAD,
'departementCode' => '94'
));
如果您不想使用此bundle来管理OAuth认证,可以跳过以下步骤。但您需要将OAuth "access_token"作为会话变量提供:$this->session->get('access_token').
要启用OAuth认证系统,您需要在config.yml文件中配置此库
# HWIOAuth
hwi_oauth:
firewall_name: oauth_secured_area
http_client:
timeout: 5 # Time in seconds, after library will shutdown request, by default: 5
verify_peer: false # Setting allowing you to turn off SSL verification, by default: true
ignore_errors: true # Setting allowing you to easier debug request errors, by default: true
max_redirects: 5 # Number of HTTP redirection request after which library will shutdown request,
# by default: 5
resource_owners:
p4s.login:
type: oauth2
client_id: 123456abcdef
client_secret: apppass1
access_token_url: %p4s_path%api/token
authorization_url: %p4s_path%api/login
infos_url: %p4s_path%api/profile
scope: "read"
user_response_class: HWI\Bundle\OAuthBundle\OAuth\Response\PathUserResponse
paths:
identifier: id
nickname: username
realname: fullname
%p4s_path%参数可以在parameters.yml中定义,并应包含P4S URL:http://p4s.trialog.com。
您还应该在security.tml中配置您的防火墙
security:
encoders:
Amisure\P4SApiBundle\Entity\User\SessionUser:
algorithm: sha1
iterations: 1
encode_as_base64: false
role_hierarchy:
ROLE_ADMIN: ROLE_USER, ROLE_BENEFICIARY, ROLE_ORG_USER, ROLE_ORG_ADMIN_USER
ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH, BENEFICIARY, ROLE_ORG_USER, ROLE_ORG_ADMIN_USER]
providers:
chain_provider:
chain:
providers: [user_db]
user_db:
entity: { class: Amisure\P4SApiBundle\Entity\User\SessionUser, property: username }
my_custom_hwi_provider:
id: ib_user.oauth_user_provider
firewalls:
oauth_secured_area:
anonymous: true
logout: ~
oauth:
resource_owners:
p4s.login: "/oauth/login/check-p4s"
login_path: /home
check_path: /oauth/login
failure_path: /oauth/login
oauth_user_provider:
service: ib_user.oauth_user_provider
access_control:
- { path: ^/home, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/aide, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/oauth/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/oauth/connect, role: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: IS_AUTHENTICATED_FULLY }
然后,您需要在您的routing.yml文件中完成您的路由
login_p4s:
pattern: /oauth/login/check-p4s
logout:
pattern: /logout
正在进行中
当前任务
- [███▒ 75%] 与P4S外部API链接 - 客户端版本
- 受益人:ok v1
- 组织:ok v1
- 组织用户:ok v1
- 事件:ok v1
- 评估:ok v1
- 联系簿
- 文档
- 发送消息
- [████ 95%] 与P4S外部API链接 - 认证(使用OAuth)
- [▒▒▒▒ 0%] 将此库链接到未来的"trialog/php-p4s-api"(不感知Symfony2)
- [▒▒▒▒ 5%] 配置单元测试引擎
- [▒▒▒▒ 0%] 添加单元测试
已知问题
如果1小时内没有与P4S进行任何活动,则服务或调用P4S的任何尝试(如果用户已经连接到服务)都将失败。解决方案是手动从P4S断开连接(在P4S的用户界面右上角点击"断开连接"按钮),然后重新连接服务到P4S(在服务用户界面中点击"通过P4S连接"按钮)
许可证
此软件属于TRIALOG(http://www.trialog.com)。
- 它使用MIT许可证下的Symfony 2框架。有关更多信息,请参阅LICENSE_Symfony2文件。