private async getMsalInstance()

in src/services/msalAuthService.ts [20:51]


    private async getMsalInstance(): Promise<msal.PublicClientApplication> {
        if (this.msalInstance) {
            return this.msalInstance;
        }

        const settings = await this.configService.getSettings();
        const authorityUrl = (settings.authentication.authority || settings.authentication.azureAdInstance) + settings.authentication.tenantId;

        const msalConfig: msal.Configuration = {
            auth: {
                clientId: settings.authentication.clientId,
                authority: authorityUrl,
            },
        };

        const msalInstance = new msal.PublicClientApplication(msalConfig);
        await msalInstance.initialize();

        this.msalInstance = msalInstance;

        this.scopes = typeof settings.authentication.scopes === "string"
            ? [settings.authentication.scopes]
            : settings.authentication.scopes;

        const accounts = msalInstance.getAllAccounts();

        if (accounts.length > 0) {
            msalInstance.setActiveAccount(accounts[0]);
        }

        return msalInstance;
    }