. */ namespace SP\Core\Context; use SP\DataModel\ProfileData; use SP\Services\User\UserLoginResponse; /** * Class ApiContext * * @package SP\Core\Context */ final class StatelessContext extends ContextBase { /** * Establece los datos del usuario en la sesión. * * @param UserLoginResponse|null $userLoginResponse */ public function setUserData(UserLoginResponse $userLoginResponse = null) { $this->setContextKey('userData', $userLoginResponse); } /** * Establecer una variable de sesión * * @param string $key El nombre de la variable * @param mixed $value El valor de la variable * * @return mixed */ protected function setContextKey(string $key, $value) { try { parent::setContextKey($key, $value); return $value; } catch (ContextException $e) { processException($e); } return null; } /** * Obtiene el objeto de perfil de usuario de la sesión. * * @return ProfileData */ public function getUserProfile(): ?ProfileData { return $this->getContextKey('userProfile'); } /** * Devolver una variable de sesión * * @param string $key * @param mixed $default * * @return mixed */ protected function getContextKey(string $key, $default = null) { try { return parent::getContextKey($key, $default); } catch (ContextException $e) { processException($e); } return $default; } /** * Establece el objeto de perfil de usuario en la sesión. * * @param ProfileData $ProfileData */ public function setUserProfile(ProfileData $ProfileData) { $this->setContextKey('userProfile', $ProfileData); } /** * Returns if user is logged in * * @return bool */ public function isLoggedIn(): bool { return !empty($this->getUserData()->getLogin()); } /** * Devuelve los datos del usuario en la sesión. * * @return UserLoginResponse */ public function getUserData(): UserLoginResponse { return $this->getContextKey('userData', new UserLoginResponse()); } /** * Establecer el lenguaje de la sesión * * @param $locale */ public function setLocale($locale) { $this->setContextKey('locale', $locale); } /** * Devuelve el lenguaje de la sesión * * @return string */ public function getLocale(): ?string { return $this->getContextKey('locale'); } /** * Devuelve el estado de la aplicación * * @return bool */ public function getAppStatus(): ?bool { return $this->getContextKey('status'); } /** * Establecer el estado de la aplicación * * @param string $status */ public function setAppStatus(string $status) { $this->setContextKey('status', $status); } /** * Reset del estado de la aplicación * * @return bool */ public function resetAppStatus(): ?bool { return $this->setContextKey('status', null); } /** * @return void * @throws ContextException */ public function initialize() { $this->setContext(new ContextCollection()); } /** * Establecer la hora de carga de la configuración * * @param int $time */ public function setConfigTime(int $time) { $this->setContextKey('configTime', (int)$time); } /** * Devolver la hora de carga de la configuración * * @return int */ public function getConfigTime(): int { return $this->getContextKey('configTime'); } /** * @return null */ public function getAccountsCache(): ?array { return null; } /** * Sets a temporary master password * * @param string $password * * @throws ContextException */ public function setTemporaryMasterPass(string $password) { $this->setTrasientKey('_tempmasterpass', $password); } /** * @param string $pluginName * @param string $key * @param mixed $value * * @return mixed */ public function setPluginKey(string $pluginName, string $key, $value) { $ctxKey = $this->getContextKey('plugins'); $ctxKey[$pluginName][$key] = $value; return $value; } /** * @param string $pluginName * @param string $key * * @return mixed */ public function getPluginKey(string $pluginName, string $key) { $ctxKey = $this->getContextKey('plugins'); if (isset($ctxKey[$pluginName][$key])) { return $ctxKey[$pluginName][$key]; } return null; } }