2017 © Pedro PelΓ‘ez
 

symfony-bundle api-client-bundle

RUNET-ID API Client Bundle

image

runet-id/api-client-bundle

RUNET-ID API Client Bundle

  • Wednesday, February 22, 2017
  • by RUVENTS
  • Repository
  • 1 Watchers
  • 0 Stars
  • 340 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 9 Versions
  • 5 % Grown

The README.md

RUNET-ID API Client Bundle

Установка:

$ composer require runet-id/api-client-bundle:^1.0.0@alpha, (*1)

Минимальная конфигурация

runet_id_api_client:
    container:
        default_credentials: default
        credentials:
            default:
                key:    demokey
                secret: demosecret

ОписаниС

Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ для Π±Π°Π½Π΄Π»Π° класс - RunetId\ApiClientBundle\ApiClientContainer. Он позволяСт Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с нСсколькими ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ΅ ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚Π½ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ симфони %kernel.cache_dir%/runet_id_api_client)., (*2)

Π§Π΅Ρ€Π΅Π· ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ container:credentials ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ нСсколько ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ. Π’ default_credentials указываСтся имя профиля ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€)., (*3)

Π’Π°ΠΊΠΆΠ΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ Ρ‡Π΅Ρ€Π΅Π· RunetId\ApiClientBundle\ApiClientContainer::setCurrentName($name) ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ "Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ" ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ RequestListener, Ссли Π²Ρ‹Π±ΠΎΡ€ профиля зависит ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запроса ΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ). Если Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π½Π΅ Π±Ρ‹Π» Π·Π°Π΄Π°Π½, ΠΌΠ΅Ρ‚ΠΎΠ΄ RunetId\ApiClientBundle\ApiClientContainer::getCurrent() Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ., (*4)

РСкомСндуСтся всСгда ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ RunetId\ApiClientBundle\ApiClientContainer::getCurrent(), Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ это обСспСчиваСт ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ., (*5)

Алиасы для быстрого доступа ΠΊ сСрвисам (рСкомСндуСтся)

services:
    api_container:  "@runet_id.api_client.container"

    api:
        class: RunetId\ApiClientBundle\ApiCacheableClient
        factory: [ "@api_container", getCurrent ]

# создаСм Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π² twig
# для быстрого доступа ΠΊ Π°ΠΏΠΈ ΠΈΠ· шаблонов
twig:
    globals:
        api: "@api"

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ настройки Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ js:







Код ΠΊΠ½ΠΎΠΏΠΊΠΈ для Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ

<button onclick="runetIdApiClient.login(); return false;">
    Π’ΠΎΠΉΡ‚ΠΈ Ρ‡Π΅Ρ€Π΅Π· &ndash;RUNET&mdash;&mdash;ID&ndash;
</button>

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°

<?php

namespace AppBundle\Controller;

use RunetId\ApiClient\Exception\ApiException;
use RunetId\ApiClient\Model\User;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpException;

/**
 * @Route("/auth")
 */
class AuthController extends Controller
{
    /**
     * @Route("/token", name="auth.token")
     * @param Request $request
     * @return Response
     * @throws HttpException
     */
    public function tokenAction(Request $request)
    {
        $token = $request->query->get('token');

        try {
            // содСрТит всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ с RunetId
            $apiUser = $this->get('api')->user()->auth($token);
        } catch (ApiException $e) {
            throw new HttpException(403, $e->getMessage());
        }

        // рСгистрируСм ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π° мСроприятиС со статусом "Участник"
        $this->get('api')->event()->register($apiUser->RunetId, User\Status::ROLE_PARTICIPANT);

        // здСсь Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ срСдствами Symfony

        return new Response('
            <script>
                window.onunload = function () {
                    window.opener.location.reload();
                };
                setTimeout(window.close, 400);
            </script>
        ');
    }
}

The Versions

22/02 2017

dev-master

9999999-dev

RUNET-ID API Client Bundle

  Sources   Download

MIT

The Requires

 

by Valentin Udaltsov

22/02 2017

1.0.0

1.0.0.0

RUNET-ID API Client Bundle

  Sources   Download

MIT

The Requires

 

by Valentin Udaltsov

23/09 2016

1.0.0-alpha7

1.0.0.0-alpha7

RUNET-ID API Client Bundle

  Sources   Download

MIT

The Requires

 

by Valentin Udaltsov

23/09 2016

1.0.0-alpha6

1.0.0.0-alpha6

RUNET-ID API Client Bundle

  Sources   Download

MIT

The Requires

 

by Valentin Udaltsov

25/08 2016

1.0.0-alpha5

1.0.0.0-alpha5

RUNET-ID API Client Bundle

  Sources   Download

MIT

The Requires

 

by Valentin Udaltsov

13/07 2016

1.0.0-alpha4

1.0.0.0-alpha4

RUNET-ID API Client Bundle

  Sources   Download

MIT

The Requires

 

by Valentin Udaltsov

12/07 2016

1.0.0-alpha3

1.0.0.0-alpha3

RUNET-ID API Client Bundle

  Sources   Download

MIT

The Requires

 

by Valentin Udaltsov

11/07 2016

1.0.0-alpha2

1.0.0.0-alpha2

RUNET-ID API Client Bundle

  Sources   Download

MIT

The Requires

 

by Valentin Udaltsov

19/05 2016

1.0.0-alpha1

1.0.0.0-alpha1

RUNET-ID API Client Bundle

  Sources   Download

MIT

The Requires

 

by Valentin Udaltsov