petrsladek / skautis
此包的最新版本(0.1.1)没有可用的许可信息。
NetteFramework的登录服务类
0.1.1
2015-06-20 08:40 UTC
Requires
- nette/nette: ~2.3
- skautis/skautis: 1.2.*
This package is not auto-updated.
Last update: 2024-09-18 07:00:42 UTC
README
用于在Nette Framework中与SkautIS进行工作和登录的服务类。
通过SkautIS登录提供与知名库相同的应用程序界面
此外还包含用于获取已登录用户数据的简单方法。
依赖项
安装
最好使用Composer
$ composer require petrsladek/skautis:~0.1
说明
最小配置示例
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
在presenter中使用
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; } }
然后只需在模板中添加指向该子组件handler open!的链接即可。
<a n:href="skautisLoginDialog-open!">Prihlásit se přes SkautIS!</a>
如果我们想在presenter中重定向到SkautIS登录,我们将使用以下代码(在具有访问上述组件的presenter中)
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. }