// Setting the flag FailedToAcquireToken to true public async Task HandleIntegratedTokenAcquisitionFailure(MsalAccountActivity failedAccountActivity) { //failedAccountActivity.FailedToAcquireToken = true; //_dbContext.MsalAccountActivities.Update(failedAccountActivity); _dbContext.MsalAccountActivities.Remove(failedAccountActivity); await _dbContext.SaveChangesAsync(); }
// Overriding OnBeforeWriteAsync to upsert the entity MsalAccountActivity // before MSAL writes an entry in the token cache protected override async Task OnBeforeWriteAsync(TokenCacheNotificationArgs args) { var accountActivity = new MsalAccountActivity(args.SuggestedCacheKey, args.Account); await UpsertActivity(accountActivity); await Task.FromResult(base.OnBeforeWriteAsync(args)); }
// Call the upsert method of the class that implements IMsalAccountActivityStore private async Task <MsalAccountActivity> UpsertActivity(MsalAccountActivity accountActivity) { using (var scope = _scopeFactory.CreateScope()) { var _integratedTokenCacheStore = scope.ServiceProvider.GetRequiredService <IMsalAccountActivityStore>(); await _integratedTokenCacheStore.UpsertMsalAccountActivity(accountActivity); return(accountActivity); } }
// Insert a new MsalAccountActivity case it doesnt exist, otherwise update the existing entry public async Task UpsertMsalAccountActivity(MsalAccountActivity msalAccountActivity) { if (_dbContext.MsalAccountActivities.Count(x => x.AccountCacheKey == msalAccountActivity.AccountCacheKey) != 0) { _dbContext.Update(msalAccountActivity); } else { _dbContext.MsalAccountActivities.Add(msalAccountActivity); } await _dbContext.SaveChangesAsync().ConfigureAwait(false); }