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

Commit 227e3d2a authored by Akhil's avatar Akhil 🙂
Browse files

Merge branch 'dev/store-token-expiry' into 'main'

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

See merge request !197
parents 6606271f 87daaa2b
Loading
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -18,7 +18,8 @@ class SSOService {
	private CurlService $curl;
	private ILogger $logger;
	private array $ssoConfig = [];
	private string $adminAccessToken;
	private string $adminAccessToken = '';
	private int $adminAccessTokenExpiresAt = 0;
	private string $currentUserId;
	private string $currentUserName;
	private ICrypto $crypto;
@@ -200,9 +201,15 @@ 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)
			&& $this->adminAccessTokenExpiresAt !== 0
			&& (time() < ($this->adminAccessTokenExpiresAt - 10))) {
			return;
		}
		$this->adminAccessToken = '';
		$this->adminAccessTokenExpiresAt = 0;
		$adminAccessTokenRoute = $this->ssoConfig['root_url'] . self::ADMIN_TOKEN_ENDPOINT;
		$requestBody = [
			'username' => $this->ssoConfig['admin_username'],
@@ -228,6 +235,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 {