trialog/p4s-api-bundle

一个允许轻松集成P4S API的PHP / Symfony2包 - AMISURE项目

v0.9 2014-03-28 08:53 UTC

This package is not auto-updated.

Last update: 2024-09-24 01:23:10 UTC


README

Latest Stable Version

法国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文件。