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

Commit 4ec22439 authored by Akhil's avatar Akhil 🙂
Browse files

fix for totp migration: get new admin access token upon expiry

parent 6606271f
Loading
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ class SSOService {
	private ILogger $logger;
	private array $ssoConfig = [];
	private string $adminAccessToken;
	private int $adminAccessTokenExpiresAt;
	private string $currentUserId;
	private string $currentUserName;
	private ICrypto $crypto;
@@ -200,7 +201,11 @@ class SSOService {
	}

	private function getAdminAccessToken() : void {
		if (!empty($this->adminAccessToken)) {
		// Check if admin access token exists and has not expired
		// Use a grace period of 10 seconds to account for network latencies
		if (!empty($this->adminAccessToken)
			&& !empty($this->adminAccessTokenExpiresAt)
			&& (time() < ($this->adminAccessTokenExpiresAt - 10))) {
			return;
		}
		$adminAccessTokenRoute = $this->ssoConfig['root_url'] . self::ADMIN_TOKEN_ENDPOINT;
@@ -228,6 +233,7 @@ class SSOService {
			throw new SSOAdminAccessTokenException('Error: admin access token not set in response!');
		}
		$this->adminAccessToken = $response['access_token'];
		$this->adminAccessTokenExpiresAt = time() + (int) $response['expires_in'];
	}

	private function callSSOAPI(string $url, string $method, array $data = [], int $expectedStatusCode = 200) :?array {