%PDF- %PDF-
Direktori : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/user/authclient/ |
Current File : /home/vacivi36/intranet.vacivitta.com.br/protected/humhub/modules/user/authclient/Collection.php |
<?php /** * @link https://www.humhub.org/ * @copyright Copyright (c) 2016 HumHub GmbH & Co. KG * @license https://www.humhub.com/licences */ namespace humhub\modules\user\authclient; use humhub\libs\ParameterEvent; use Yii; use yii\authclient\ClientInterface; use yii\base\Component; use yii\base\InvalidArgumentException; /** * Extended AuthClient collection with event support * * @author luke * @since 1.1 */ class Collection extends Component { /** * @event Event an event raised before the clients are set. */ const EVENT_BEFORE_CLIENTS_SET = 'client_set_before'; /** * @event Event an event raised after the clients are set. */ const EVENT_AFTER_CLIENTS_SET = 'client_set'; /** * @var array list of Auth clients with their configuration in format: 'clientId' => [...] */ private $_clients = []; /** * @param array $clients list of auth clients */ public function setClients(array $clients) { $this->trigger(self::EVENT_BEFORE_CLIENTS_SET, new ParameterEvent(['clients' => $clients])); $this->_clients = array_merge($this->getDefaultClients(), $clients, $this->_clients); $this->trigger(self::EVENT_AFTER_CLIENTS_SET); } /** * @return ClientInterface[] list of auth clients. */ public function getClients($load = true) { $clients = []; foreach ($this->_clients as $id => $client) { $clients[$id] = $this->getClient($id, $load); } return $clients; } /** * @param string $id service id. * @param bool $load * @return ClientInterface auth client instance. * @throws \yii\base\InvalidConfigException */ public function getClient($id, $load = true) { if (!array_key_exists($id, $this->_clients)) { throw new InvalidArgumentException("Unknown auth client '{$id}'."); } if (!is_object($this->_clients[$id]) && $load) { $this->_clients[$id] = $this->createClient($id, $this->_clients[$id]); } return $this->_clients[$id]; } /** * Checks if client exists in the hub. * @param string $id client id. * @return boolean whether client exist. */ public function hasClient($id) { return array_key_exists($id, $this->_clients); } /** * Sets a client by id and config * * @param string $id auth client id. * @param array|ClientInterface $config auth client instance configuration. */ public function setClient($id, $config) { $this->_clients[$id] = $config; } /** * Removes client by id * * @param string $id client id. */ public function removeClient($id) { unset($this->_clients[$id]); } /** * Creates auth client instance from its array configuration. * @param string $id auth client id. * @param array $config auth client instance configuration. * @return ClientInterface auth client instance. * @throws \yii\base\InvalidConfigException */ protected function createClient($id, $config) { $config['id'] = $id; return Yii::createObject($config); } /** * Returns the configuration of default auth clients * * @return array the default auth clients */ protected function getDefaultClients() { $clients = []; $clients['password'] = ['class' => Password::class]; return $clients; } }