domotron/cloud-user

用于认证Domotron Cloud的库

1.5.0 2021-10-22 08:11 UTC

This package is not auto-updated.

Last update: 2024-09-26 21:16:40 UTC


README

Domotron Cloud用户,适用于Domotron的SSO前服务。

设置

库的基本设置。某些部分依赖于cloudClient库。

use DomotronCloudUser\IdentityProvider\Cache\SessionCache as IdentitySessionCache;
use DomotronCloudUser\IdentityProvider\ApiIdentityProvider;
use DomotronCloudUser\Authenticator\ApiAuthenticator;
use DomotronCloudUser\Permissions\PermissionsListFactory;
use DomotronCloudUser\Permissions\Cache\SessionCache;
use DomotronCloudUser\CloudUser;
use DomotronCloudUser\Permissions\Driver\ApiDriver;

$authenticator = new ApiAuthenticator($cloudClient);
$identityProvider = new ApiIdentityProvider($cloudClient, new IdentitySessionCache('5 minutes'));
$permissionsListFactory = new PermissionsListFactory(new ApiDriver($cloudClient), new SessionCache('5 minutes'));
$cloudUser = new CloudUser($identityProvider, $authenticator, $permissionsListFactory, 'http://cloud.mydomotron.com');

使用

// Overenie či je používateľ prihlásený
$cloudUser->isLoggedIn();

// Ak treba používateľa prihlásiť je potrebné ho poslať na login screen cloudu
// Po úspešnom prihlásení bude použivateľ presmerovaný naspäť na $redirectUri
// $portal a $secret sú identifikátory ktoré sú registrované na Cloude
$cloudUser->getLoginUrl($portal, $secret, $redirectUri);

// Odhlásenie
// Zneplatný token + odstráni cookie. Metóda logout() nerobí žiadne presmerovanie. Ak po odhlásení chceme používateľa presmerovať treba tak urobiť manuálne.
$cloudUser->logout();

// Url pre odhlásenie z cloudu
$cloudUser->getLogoutUrl();

// Data
$identity = $cloudUser->getIdentity(); // Vrácia identitu s dátami používateľa, identitu vráti aj v prípade že používateľ je neautentifikovaný. Táto identita bude ale prázdna.
$identity->getData(); // Vracia pole so všetkými dátami použivateľa

// Data shortcuts
$identity->getName();
$identity->getUsername();
$identity->getId();
$identity->getLanguage();
$identity->isDemo();

// Permissions
// Oprávnenia sú rozdelené na rôzne časti keďže sa jedná o "row level" oprávnenia
// Treba si od cloudu najprv vypítať oprávnenia na to na čo potrebujeme
$permissions = $cloudUser->permissions('control-sk1234');

// Následne sa môžeme pýtať na práva používateľa
$permissions->isAllowed('global', 'access');

// Shortcut pre $cloudUser->permissions($key)->isAllowed($resource, $privilege);
$cloudUser->permissionsIsAllowed($key, $resource, $privilege);

// Zǐskanie tokenu aktuálne prihláseného používateľa
$cloudUser->getCookieTokenValue();

密钥别名(权限)

// Pre zjednodušenie je možné si do permissionsListFactory zaregistrovať key alias
$permissionsListFactory->registerKeyAlias('control', 'control-sk1234');

// Neskôr je možné použiť tento alias pomocou prefixu '%'
$clientUser->permissionsIsAllowed('%control', $resource, $privilege);

扩展

Tracy Bar

在neon文件中注册到Tracy Bar

tracy:
	bar:
		- DomotronCloudUser\Bridge\Tracy\CloudUserPanel