public async Task Invoke(HttpContext context) { try { if (context.Request.Path.Value.Equals("/") || context.Request.Path.Value.Contains("/api/account/FilePath") || context.Request.Path.Value.Contains("/api/account/refreshtoken") || context.Request.Path.Value.Contains("/api/subscriber") || context.Request.Path.Value.Contains("/api/account/login") || context.Request.Path.Value.StartsWith("/wwwroot/") || context.Request.Path.Value.Contains("/api/alert/addiotalert") || context.Request.Path.Value.Contains("/api/account/adminlogin")) // Nikunj { await _next.Invoke(context); return; } SolutionConfiguration.CompanyId = Guid.Parse(context.Request.Headers["company-id"]); if (SolutionConfiguration.CompanyId == null || SolutionConfiguration.CompanyId == Guid.Empty) { context.Response.StatusCode = 401; await context.Response.WriteAsync("Header key is missing!"); } if (context.User != null && context.User.Claims != null) { SolutionConfiguration.BearerToken = context.User.Claims.Where(c => c.Type == "IOT_CONNECT").FirstOrDefault().Value; if (!string.IsNullOrWhiteSpace(SolutionConfiguration.BearerToken) && SolutionConfiguration.BearerToken.Equals("AdminUser")) { SolutionConfiguration.CurrentUserId = Guid.Parse(context.User.Claims.Where(c => c.Type == "CURRENT_USERID").FirstOrDefault().Value); } else { JwtSecurityTokenHandler hand = new JwtSecurityTokenHandler(); var tokenS = hand.ReadJwtToken(SolutionConfiguration.BearerToken); var jsonValue = tokenS.Claims?.SingleOrDefault(p => p.Type == "user")?.Value; Entity.UserDetail userDetail = Newtonsoft.Json.JsonConvert.DeserializeObject <Entity.UserDetail>(jsonValue); SolutionConfiguration.CurrentUserId = Guid.Parse(userDetail.Id); SolutionConfiguration.SolutionId = Guid.Parse(userDetail.SolutionGuid); SolutionConfiguration.EntityGuid = Guid.Parse(userDetail.EntityGuid); } } await _next.Invoke(context); return; } catch (Exception ex) { ex.ToString(); throw; } }
public Entity.ActionStatus Login(Entity.LoginRequest request) { Entity.ActionStatus result = new Entity.ActionStatus(true); try { IOT.DataResponse <IOT.LoginResult> loginResult = _iotConnectClient.Login.Login(new IOT.LoginModel() { UserName = request.Username, Password = request.Password }).Result; result.Success = loginResult.status; if (loginResult != null && loginResult.status) { JwtSecurityTokenHandler hand = new JwtSecurityTokenHandler(); var tokenS = hand.ReadJwtToken(loginResult.data.access_token); var jsonValue = tokenS.Claims?.SingleOrDefault(p => p.Type == "user")?.Value; Entity.UserDetail userDetail = Newtonsoft.Json.JsonConvert.DeserializeObject <Entity.UserDetail>(jsonValue); var user = _userRepository.GetByUniqueId(r => r.Guid == Guid.Parse(userDetail.Id)); if (user == null) { return(new Entity.ActionStatus() { Success = false, Message = "User does not exist in Solution" }); } userDetail.FullName = user.FirstName.ToString() + " " + user.LastName.ToString(); result.Data = new Entity.LoginResponse { status = loginResult.data.status, data = loginResult.data.data, message = loginResult.message, token_type = loginResult.data.token_type, access_token = loginResult.data.access_token, refresh_token = loginResult.data.refresh_token, expires_in = loginResult.data.expires_in, UserDetail = userDetail }; } else { result.Message = loginResult.message; } } catch (Exception ex) { _logger.ErrorLog(ex, $"UserManager.Login {ex.Message}"); return(new Entity.ActionStatus(false, ex.Message)); } return(result); }
public async Task Invoke(HttpContext context) { try { if (context.Request.Path.Value.Equals("/") || context.Request.Path.Value.Contains("/api/account/FilePath") || context.Request.Path.Value.Contains("/api/account/refreshtoken") || context.Request.Path.Value.Contains("/api/subscriber") || context.Request.Path.Value.Contains("/api/account/login") || context.Request.Path.Value.Contains("/api/account/identity") || context.Request.Path.Value.StartsWith("/wwwroot/") || context.Request.Path.Value.Contains("/api/alert/addiotalert") || context.Request.Path.Value.Contains("/api/account/adminlogin")) // Nikunj { await _next.Invoke(context); return; } if (!context.Request.Headers.ContainsKey("company-id") || string.IsNullOrWhiteSpace(context.Request.Headers["company-id"])) { context.Response.StatusCode = 401; await context.Response.WriteAsync("Header key is missing!"); } SolutionConfiguration.CompanyId = Guid.Parse(context.Request.Headers["company-id"]); if (SolutionConfiguration.CompanyId == null || SolutionConfiguration.CompanyId == Guid.Empty) { context.Response.StatusCode = 401; await context.Response.WriteAsync("Header key is missing!"); } if (context.User != null && context.User.Claims != null) { SolutionConfiguration.BearerToken = context.Request.Headers["Authorization"].ToString().Replace("Bearer", "").Trim(); Claim admin = context.User.Claims.Where(c => c.Type == "IOT_CONNECT").FirstOrDefault(); if (admin != null && admin.Value.Equals("AdminUser")) { SolutionConfiguration.CurrentUserId = Guid.Parse(context.User.Claims.Where(c => c.Type == "CURRENT_USERID").FirstOrDefault().Value); } else if (admin != null) { JwtSecurityTokenHandler hand = new JwtSecurityTokenHandler(); var BearerToken = admin.Value; var tokenS = hand.ReadJwtToken(BearerToken); var jsonValue = tokenS.Claims?.SingleOrDefault(p => p.Type == "user")?.Value; Entity.UserDetail userDetail = Newtonsoft.Json.JsonConvert.DeserializeObject <Entity.UserDetail>(jsonValue); SolutionConfiguration.BearerToken = BearerToken; SolutionConfiguration.CurrentUserId = Guid.Parse(userDetail.Id); SolutionConfiguration.SolutionId = Guid.Parse(userDetail.SolutionGuid); SolutionConfiguration.EntityGuid = Guid.Parse(userDetail.EntityGuid); SolutionConfiguration.CompanyId = Guid.Parse(userDetail.CompanyId); } else { Entity.ActionStatus loginResponse = _userService.Identity(SolutionConfiguration.BearerToken); if (loginResponse != null && loginResponse.Success) { IoTConnect.Model.IdentityResult responsedata = loginResponse.Data; SolutionConfiguration.CurrentUserId = Guid.Parse(responsedata.data.userGuid); SolutionConfiguration.SolutionId = Guid.Parse(responsedata.data.solutionGuid); SolutionConfiguration.EntityGuid = Guid.Parse(responsedata.data.entityGuid); SolutionConfiguration.CompanyId = Guid.Parse(responsedata.data.companyGuid); } else { context.Response.StatusCode = 401; await context.Response.WriteAsync(loginResponse.Message); } } //SolutionConfiguration.BearerToken = context.User.Claims.Where(c => c.Type == "IOT_CONNECT").FirstOrDefault().Value; //if (!string.IsNullOrWhiteSpace(SolutionConfiguration.BearerToken) && SolutionConfiguration.BearerToken.Equals("AdminUser")) //{ // SolutionConfiguration.CurrentUserId = Guid.Parse(context.User.Claims.Where(c => c.Type == "CURRENT_USERID").FirstOrDefault().Value); //} //else //{ // JwtSecurityTokenHandler hand = new JwtSecurityTokenHandler(); // var tokenS = hand.ReadJwtToken(SolutionConfiguration.BearerToken); // var jsonValue = tokenS.Claims?.SingleOrDefault(p => p.Type == "user")?.Value; // Entity.UserDetail userDetail = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.UserDetail>(jsonValue); // SolutionConfiguration.CurrentUserId = Guid.Parse(userDetail.Id); // SolutionConfiguration.SolutionId = Guid.Parse(userDetail.SolutionGuid); // SolutionConfiguration.EntityGuid = Guid.Parse(userDetail.EntityGuid); //} } await _next.Invoke(context); return; } catch (Exception ex) { ex.ToString(); throw; } }