public Activity GetAuthResponse() { ProviderTokenResponse providerTokenResponse = new ProviderTokenResponse(); providerTokenResponse.TokenResponse = new TokenResponse(token: "test"); return(new Activity(ActivityTypes.Event, name: "tokens/response", value: providerTokenResponse)); }
/// <summary> /// Login with email model to provider /// </summary> /// <param name="context">Context</param> /// <param name="model">UserProviderEmailLogin model</param> /// <returns></returns> public async Task <ProviderTokenResponse> ProviderLoginEmail(HttpContext context, UserProviderEmailLogin model) { var user = await _appUserManager.FindByEmailAsync(model.Email); if (user == null || !(await _appUserManager.CheckPasswordAsync(user, model.Password))) { throw new LoginFailedException(model.Email); } var provider = await _providerRepository.GetFirst(x => x.Id == model.ProviderId && x.State == MREntityState.Active); if (provider == null) { throw new EntityNotFoundException(model.ProviderId, typeof(Provider)); } if (!provider.IsLoginEnabled) { throw new ProviderUnavaliableException(provider.Name); } var response = new ProviderTokenResponse { Token = _createShortLiveToken(user, provider) }; response.RedirectUrl = _createRedirectUrl(provider, response.Token); return(response); }
/// <summary> /// Instant login to provider /// </summary> /// <param name="context">Context</param> /// <param name="providerId">Provider id</param> /// <returns></returns> public async Task <ProviderTokenResponse> ProviderLoginInstant(HttpContext context, string providerId) { var user = await GetCurrentUser(); if (user == null) { throw new AccessDeniedException(string.Empty, typeof(AppUser), "Authorization required"); } var provider = await _providerRepository.GetFirst(x => x.Id == providerId && x.State == MREntityState.Active); if (provider == null) { throw new MRSystemException("Provider not found"); } if (!provider.IsLoginEnabled) { throw new ProviderUnavaliableException(provider.Name); } var response = new ProviderTokenResponse { Token = _createShortLiveToken(user, provider) }; response.RedirectUrl = _createRedirectUrl(provider, response.Token); return(response); }
/// <summary> /// Process token /// </summary> /// <param name="response">Provider token response</param> /// <param name="securityToken">Provider token deta</param> /// <returns></returns> private string ProcessToken(ProviderTokenResponse response, JwtSecurityToken securityToken) { var email = securityToken.Claims.FirstOrDefault(c => c.Type == "email").Value ?? ""; var refreshTokenResponse = this.refreshTokenRespository.GetRefreshTokenByEmailAndProvider(email, securityToken.Issuer); if (string.IsNullOrWhiteSpace(response.RefreshToken)) { return(refreshTokenResponse?.RefreshToken ?? ""); } else { var entity = new TokenRefreshEntity { RefreshToken = response.RefreshToken, Provider = securityToken.Issuer, Email = email, DateUpdated = DateTime.Now }; if (refreshTokenResponse == null) { refreshTokenResponse = this.refreshTokenRespository.InsertRefreshToken(entity); return(entity.RefreshToken); } else { entity.Id = refreshTokenResponse.Id; refreshTokenResponse = this.refreshTokenRespository.UpdateRefreshToken(entity); return(entity.RefreshToken); } } }
public Activity GetAuthResponse() { ProviderTokenResponse providerTokenResponse = new ProviderTokenResponse { TokenResponse = new TokenResponse(token: "test"), AuthenticationProvider = OAuthProvider.AzureAD }; return new Activity(ActivityTypes.Event, name: "tokens/response", value: providerTokenResponse); }