petrsladek/skautis

There is no license information available for the latest version (0.1.1) of this package.

Servisni trida pro NetteFramework pro prihlasovani pres skautis

0.1.1 2015-06-20 08:40 UTC

This package is not auto-updated.

Last update: 2024-04-17 05:06:25 UTC


README

Servisní třída do Nette Frameworku pro práci a přihlašování ze SkautISem.

Pro přihlášení přes SkautIS nabízí stejné rozhraní jako známé knihovny

Dále obsahuje metody pro jednoduší vytahování dat o přihlášeném uživateli.

Závislosti

Instalace

Nejlépe pomocí Composer:

$ composer require petrsladek/skautis:~0.1

Návod

Ukázka minimální konfigurace:

extensions:
    skautis: Skautis\Nette\SkautisExtension # pro original skautis extension
    skautislogin: PetrSladek\SkautIS\DI\SkautISExtension # pro toto skautis extension

skautis:
    applicationId : abcd-...-abcd # AppId přidělené administrátorem skautISu
    testMode: false # or true

Pouziti v presenteru

class LoginPresenter extends BasePresenter
{

    /**
     * @var \PetrSladek\SkautIS\SkautIS @inject
     */
    public $skautis;

	/** @var UsersModel @inject*/
	public $usersModel;


	/**
	 * Vytvoří komponentu pro otevření login dialogu SkautISu
	 * @return \PetrSladek\SkautIS\Dialog\LoginDialog
	 */
	protected function createComponentSkautisLoginDialog()
	{
		$dialog = new \PetrSladek\SkautIS\Dialog\LoginDialog($this->skautis);
		// nebo $dialog = $this->skautis->createLoginDialog();

		$dialog->onResponse[] = function(\PetrSladek\SkautIS\Dialog\LoginDialog $dialog) {
			$skautis = $dialog->getSkautIS();

			/** @var $api \SkautIS\SkautIS */
			$api = $dialog->getSkautIS()->getClient();

			if (!$skautis->isLoggedIn()) {
                $this->flashMessage("Přihlášení se nezdařilo.");
                return;
            }

			/**
			 * Pokud jsme se tady, bude fungovat normálně přístupné SkautIS API
			 */

			try {
			    // $skautisUserId = $skautis->getUserId(); // vrati ID skautis uctu kterym jste se prihlasil
				$skautisPersonId = $skautis->getPersonId(); // vrati ID sparovan osoby se skautis uctem kterym jste se prihlasil

                // $me = $skautis->getUserData(); // vrati data o prihlasenem skautis uzivateli
				$me = $skautis->getPersonData(); // vrati data o osobe ktera je sparovana s prihlasenym skautis uzivatelem

				if (!$existing = $this->usersModel->findBySkautisPersonId($skautisPersonId)) {
					/**
					 * Pokud uzivatel neni u nas v DB, tak ho zaregistrujeme
					 */
					$existing = $this->usersModel->registerFromSkautis($me);
				}

				/**
				 * Prihlasime uzivatele pomoci objektu Identity
				 */
				$this->user->login(new \Nette\Security\Identity($existing->id, $existing->roles, $existing));

				/**
				 * Nyni jste prihlaseni pres skautis
				 */

			} catch (\Exception $e) {
				\Tracy\Debugger::log($e, 'skautis');
				$this->flashMessage("Prihlaseni se nazdarilo.");
			}

			$this->redirect('this'); // jsme v obsluze handleru, takze presmerujeme na sebe abychom nemeli v adrese ?do=xxx
		};

		return $dialog;
	}

}

Do šablony pak stačí přigat odkaz na handler open! této pod-komponenty.

<a n:href="skautisLoginDialog-open!">Prihlásit se přes SkautIS!</a>

V případě že chceme na Skautis přihlášení přesměrovat z prezentru, použijeme následující zápis (v presenteru který má přístup k výše definované komponentě)

if(!$this->user->isLoggedIn()) { // nebo if(!$skautis->isLoggedIn()) pro skautis uzivatele
    $this['skautisLoginDialog']->open(); // presmeruje na skautis prihlaseni a po navraceni standartne provede onResponse event.
}