Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit da1cb957 authored by Akhil's avatar Akhil 🙂
Browse files

Merge branch 'dev/remove-autologin-sso' into 'main'

Dev/remove autologin sso from ecloud accounts

See merge request !140
parents c248e08e 00295288
Loading
Loading
Loading
Loading
Loading
+1 −38
Original line number Diff line number Diff line
@@ -23,9 +23,6 @@ class BeforeTemplateRenderedListener implements IEventListener {
	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;
@@ -41,9 +38,7 @@ class BeforeTemplateRenderedListener implements IEventListener {
		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) {
@@ -51,36 +46,4 @@ class BeforeTemplateRenderedListener implements IEventListener {
		}

	}


	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', '');
		}
	}
}