public async Task <ActionResult <AplosAuthenticationStatusModel> > GetAplosAuthenticationStatus(string sessionId, CancellationToken cancellationToken) { if (!Guid.TryParse(sessionId, out var sessionGuid)) { return(BadRequest()); } var session = await _pexOAuthSessionStorage.GetBySessionGuidAsync(sessionGuid, cancellationToken); if (session == null) { return(Unauthorized()); } var mapping = await _aplosIntegrationService.EnsureMappingInstalled(session, cancellationToken); var result = new AplosAuthenticationStatusModel { AplosAuthenticationMode = mapping.AplosAuthenticationMode, HasAplosAccountId = !string.IsNullOrWhiteSpace(mapping.AplosAccountId), }; if (result.AplosAuthenticationMode == AplosAuthenticationMode.PartnerAuthentication && result.HasAplosAccountId && !mapping.AplosPartnerVerified) { result.PartnerVerificationUrl = _appSettings.AplosPartnerVerificationUrl.ToString(); } var isAuthenticated = await _aplosIntegrationService.ValidateAplosApiCredentials(mapping, cancellationToken); result.IsAuthenticated = isAuthenticated; return(Ok(result)); }
public async Task <TokenModel> CreateSessionFromJwt([FromBody] TokenModel model, CancellationToken cancellationToken) { var externalToken = await _pexApiClient.ExchangeJwtForApiToken(model.Token, new ExchangeTokenRequestModel { AppId = _appSettings.PexApiClientId, AppSecret = _appSettings.PexApiClientSecret }); var business = await _pexApiClient.GetBusinessDetails(externalToken, cancellationToken); var sessionGuid = Guid.NewGuid(); var session = new PexOAuthSessionModel { SessionGuid = sessionGuid, ExternalToken = externalToken, CreatedUtc = DateTime.UtcNow, LastRenewedUtc = DateTime.UtcNow, PEXBusinessAcctId = business.BusinessAccountId, }; await _pexOAuthSessionStorage.CreateAsync(session, cancellationToken); await _aplosIntegrationService.EnsureMappingInstalled(session, cancellationToken); return(new TokenModel { Token = sessionGuid.ToString() }); }