public async Task <IActionResult> LoginProvider([FromBody] UserProviderEmailLogin model) { if (!ModelState.IsValid) { return(BadModelResponse(ModelState)); } return(Ok(await _loginManager.ProviderLoginEmail(HttpContext, model))); }
/// <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); }