Loading lib/AppInfo/Application.php +3 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ declare(strict_types=1); namespace OCA\EcloudAccounts\AppInfo; use OCA\EcloudAccounts\Listeners\BeforeTemplateRenderedListener; use OCA\EcloudAccounts\Listeners\AccessTokenUpdatedListener; use OCA\EcloudAccounts\Listeners\BeforeUserDeletedListener; use OCA\EcloudAccounts\Listeners\TwoFactorStateChangedListener; Loading @@ -38,6 +39,7 @@ use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent; use OCP\ISession; use OCP\IUserManager; use OCP\IUserSession; Loading @@ -52,7 +54,7 @@ class Application extends App implements IBootstrap { } public function register(IRegistrationContext $context): void { //$context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class); $context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class); $context->registerEventListener(AccessTokenUpdatedEvent::class, AccessTokenUpdatedListener::class); $context->registerEventListener(BeforeUserDeletedEvent::class, BeforeUserDeletedListener::class); $context->registerEventListener(UserChangedEvent::class, UserChangedListener::class); Loading lib/Listeners/BeforeTemplateRenderedListener.php 0 → 100644 +36 −0 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace OCA\EcloudAccounts\Listeners; use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; use OCP\IRequest; use OCP\Util; class BeforeTemplateRenderedListener implements IEventListener { private $request; private $appName; private Util $util; public function __construct($appName, IRequest $request, Util $util) { $this->appName = $appName; $this->request = $request; $this->util = $util; } public function handle(Event $event): void { if (!($event instanceof BeforeTemplateRenderedEvent)) { return; } $pathInfo = $this->request->getPathInfo(); if (strpos($pathInfo, '/apps/ecloud-accounts/accounts') !== false) { $this->util->addStyle($this->appName, $this->appName . '-userregistration'); } } } lib/Listeners/BeforeTemplateRenderedListener.php-bkdeleted 100644 → 0 +0 −86 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace OCA\EcloudAccounts\Listeners; use OCP\App\IAppManager; use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; use OCP\IConfig; use OCP\IRequest; use OCP\ISession; use OCP\IUserSession; use OCP\Util; class BeforeTemplateRenderedListener implements IEventListener { private $userSession; private $request; private $appName; private $session; private $config; private $appManager; private Util $util; private const SNAPPYMAIL_APP_ID = 'snappymail'; private const SNAPPYMAIL_URL = '/apps/snappymail/'; private const SNAPPYMAIL_AUTOLOGIN_PWD = '1'; public function __construct($appName, IUserSession $userSession, IRequest $request, ISession $session, IConfig $config, IAppManager $appManager, Util $util) { $this->appName = $appName; $this->userSession = $userSession; $this->request = $request; $this->session = $session; $this->config = $config; $this->appManager = $appManager; $this->util = $util; } public function handle(Event $event): void { if (!($event instanceof BeforeTemplateRenderedEvent)) { return; } if ($this->userSession->isLoggedIn() && $this->appManager->isEnabledForUser(self::SNAPPYMAIL_APP_ID) && strpos($this->request->getPathInfo(), self::SNAPPYMAIL_URL) !== false) { $this->autoLoginWebmail(); } $pathInfo = $this->request->getPathInfo(); if (strpos($pathInfo, '/apps/ecloud-accounts/accounts') !== false) { $this->util->addStyle($this->appName, $this->appName . '-userregistration'); } } private function autoLoginWebmail() { $isOidcLogin = $this->session->get('is_oidc'); if (!$isOidcLogin) { return; } $accountId = $this->getAccountId(); $actions = \RainLoop\Api::Actions(); if (empty($accountId) || $actions->getMainAccountFromToken(false)) { return; } // Just send over '1' as password to trigger login as the plugin will set the correct access token $password = self::SNAPPYMAIL_AUTOLOGIN_PWD; // As we cannot pass by reference to LoginProcess $account = $actions->LoginProcess($accountId, $password, false); if ($account) { $actions->Plugins()->RunHook('login.success', array($account)); $actions->SetAuthToken($account); } } private function getAccountId(): string { $username = $this->userSession->getUser()->getUID(); if ($this->config->getAppValue('snappymail', 'snappymail-autologin', false)) { return $username; } if ($this->config->getAppValue('snappymail', 'snappymail-autologin-with-email', false)) { return $this->config->getUserValue($username, 'settings', 'email', ''); } } } Loading
lib/AppInfo/Application.php +3 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ declare(strict_types=1); namespace OCA\EcloudAccounts\AppInfo; use OCA\EcloudAccounts\Listeners\BeforeTemplateRenderedListener; use OCA\EcloudAccounts\Listeners\AccessTokenUpdatedListener; use OCA\EcloudAccounts\Listeners\BeforeUserDeletedListener; use OCA\EcloudAccounts\Listeners\TwoFactorStateChangedListener; Loading @@ -38,6 +39,7 @@ use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent; use OCP\ISession; use OCP\IUserManager; use OCP\IUserSession; Loading @@ -52,7 +54,7 @@ class Application extends App implements IBootstrap { } public function register(IRegistrationContext $context): void { //$context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class); $context->registerEventListener(BeforeTemplateRenderedEvent::class, BeforeTemplateRenderedListener::class); $context->registerEventListener(AccessTokenUpdatedEvent::class, AccessTokenUpdatedListener::class); $context->registerEventListener(BeforeUserDeletedEvent::class, BeforeUserDeletedListener::class); $context->registerEventListener(UserChangedEvent::class, UserChangedListener::class); Loading
lib/Listeners/BeforeTemplateRenderedListener.php 0 → 100644 +36 −0 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace OCA\EcloudAccounts\Listeners; use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; use OCP\IRequest; use OCP\Util; class BeforeTemplateRenderedListener implements IEventListener { private $request; private $appName; private Util $util; public function __construct($appName, IRequest $request, Util $util) { $this->appName = $appName; $this->request = $request; $this->util = $util; } public function handle(Event $event): void { if (!($event instanceof BeforeTemplateRenderedEvent)) { return; } $pathInfo = $this->request->getPathInfo(); if (strpos($pathInfo, '/apps/ecloud-accounts/accounts') !== false) { $this->util->addStyle($this->appName, $this->appName . '-userregistration'); } } }
lib/Listeners/BeforeTemplateRenderedListener.php-bkdeleted 100644 → 0 +0 −86 Original line number Diff line number Diff line <?php declare(strict_types=1); namespace OCA\EcloudAccounts\Listeners; use OCP\App\IAppManager; use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent; use OCP\EventDispatcher\Event; use OCP\EventDispatcher\IEventListener; use OCP\IConfig; use OCP\IRequest; use OCP\ISession; use OCP\IUserSession; use OCP\Util; class BeforeTemplateRenderedListener implements IEventListener { private $userSession; private $request; private $appName; private $session; private $config; private $appManager; private Util $util; private const SNAPPYMAIL_APP_ID = 'snappymail'; private const SNAPPYMAIL_URL = '/apps/snappymail/'; private const SNAPPYMAIL_AUTOLOGIN_PWD = '1'; public function __construct($appName, IUserSession $userSession, IRequest $request, ISession $session, IConfig $config, IAppManager $appManager, Util $util) { $this->appName = $appName; $this->userSession = $userSession; $this->request = $request; $this->session = $session; $this->config = $config; $this->appManager = $appManager; $this->util = $util; } public function handle(Event $event): void { if (!($event instanceof BeforeTemplateRenderedEvent)) { return; } if ($this->userSession->isLoggedIn() && $this->appManager->isEnabledForUser(self::SNAPPYMAIL_APP_ID) && strpos($this->request->getPathInfo(), self::SNAPPYMAIL_URL) !== false) { $this->autoLoginWebmail(); } $pathInfo = $this->request->getPathInfo(); if (strpos($pathInfo, '/apps/ecloud-accounts/accounts') !== false) { $this->util->addStyle($this->appName, $this->appName . '-userregistration'); } } private function autoLoginWebmail() { $isOidcLogin = $this->session->get('is_oidc'); if (!$isOidcLogin) { return; } $accountId = $this->getAccountId(); $actions = \RainLoop\Api::Actions(); if (empty($accountId) || $actions->getMainAccountFromToken(false)) { return; } // Just send over '1' as password to trigger login as the plugin will set the correct access token $password = self::SNAPPYMAIL_AUTOLOGIN_PWD; // As we cannot pass by reference to LoginProcess $account = $actions->LoginProcess($accountId, $password, false); if ($account) { $actions->Plugins()->RunHook('login.success', array($account)); $actions->SetAuthToken($account); } } private function getAccountId(): string { $username = $this->userSession->getUser()->getUID(); if ($this->config->getAppValue('snappymail', 'snappymail-autologin', false)) { return $username; } if ($this->config->getAppValue('snappymail', 'snappymail-autologin-with-email', false)) { return $this->config->getUserValue($username, 'settings', 'email', ''); } } }