public async Task <LoginResponseViewModel> LoginAsync(AuthenticateViewModel model) { logger.Info($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } input : {model.ToJsonString()} UserIPAddress: { _userIPAddress.GetUserIP().Result }"); var responseModel = new LoginResponseViewModel() { Success = false, IsAuthorized = false, Message = ClientMessageConstant.InvalidUserNameAndPassword, }; try { var client = new HttpClient(); //HttpClientHandler clientHandler = new HttpClientHandler(); //clientHandler.ServerCertificateCustomValidationCallback = (sender, cert, chain, sslPolicyErrors) => { return true; }; //// Pass the handler to httpclient(from you are calling api) //HttpClient client = new HttpClient(clientHandler); var disco = await client.GetDiscoveryDocumentAsync(_settings.AuthorizeUrl); if (disco.IsError) { logger.Error($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } error : {disco.Error}"); return(responseModel); } var pwdToken = await client.RequestPasswordTokenAsync(new PasswordTokenRequest() { Address = _settings.AuthorizeUrl + "/connect/token", UserName = model.Username, Password = model.Password, ClientId = _settings.ClientId, ClientSecret = _settings.ClientSecret, Scope = _settings.Scope }); if (pwdToken.IsError) { logger.Error($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } error : {pwdToken.Error}"); return(responseModel); } // request token var tokenResponse = await client.RequestClientCredentialsTokenAsync(new ClientCredentialsTokenRequest { Address = disco.TokenEndpoint, ClientId = _settings.ClientId, ClientSecret = _settings.ClientSecret, Scope = _settings.ApiScope }); if (tokenResponse.IsError) { logger.Error($"{ GetType().Name} { ExtensionUtility.GetCurrentMethod() } error : {tokenResponse.Error}"); return(responseModel); } var userInfo = await _appDbContext.UserInfos.FirstOrDefaultAsync(k => k.Email == model.Username); if (model.DeviceId != null) { var deviceInfo = new UserDeviceInfoViewModel() { DeviceType = model.DeviceType, DeviceId = model.DeviceId, UserId = userInfo.UserId, IsActive = true }; await AddOrUpdateDeviceInfoAsync(deviceInfo); } responseModel.UserDetails = (await GetUserDetailsAsync(userInfo?.UserId ?? 0))?.Resource; responseModel.ExpireMinutes = tokenResponse.ExpiresIn; responseModel.Token = tokenResponse.AccessToken; responseModel.Success = true; responseModel.IsAuthorized = true; responseModel.Message = ClientMessageConstant.Success; return(responseModel); } catch (Exception e) { new AccountResponse(e); responseModel.Message = ClientMessageConstant.WeAreUnableToProcessYourRequest; return(responseModel); } }
private async Task <IActionResult> AddOrUpdateDeviceInfoAsync([FromBody] UserDeviceInfoViewModel model) { var result = await _service.AddOrUpdateDeviceInfoAsync(model); return(Ok(result.DiviceInfoViewModel)); }
private AccountResponse(bool success, string message, UserDeviceInfoViewModel diviceInfoViewModel, Exception e) : base(success, message, e) { DiviceInfoViewModel = diviceInfoViewModel; }