//public async Task<IActionResult> UpdateUser([FromBody] UpdateIdentity objUpdateIdentity) public IActionResult UpdateUser([FromBody] UpdateIdentity objUpdateIdentity) { try { PayoutUser payoutUser = _userManager.FindByEmailAsync(objUpdateIdentity.id).Result; PropertyInfo prop = payoutUser.GetType().GetProperty(objUpdateIdentity.colName, BindingFlags.Public | BindingFlags.Instance); if (null != prop && prop.CanWrite) { prop.SetValue(payoutUser, objUpdateIdentity.colValue, null); } dynamic resultUpd = null; if (objUpdateIdentity.colName == "IsOkta") //First updates Okta groups if Col is Okta checkbox { resultUpd = ChangeOktaUserGroups(objUpdateIdentity.id, objUpdateIdentity.colValue); } if (resultUpd == null || ((StatusCodeResult)resultUpd).StatusCode != 400) //Then updates RS Database { resultUpd = _userManager.UpdateAsync(payoutUser).Result; if (resultUpd.Succeeded) { return(Ok(resultUpd)); } } //foreach (var error in resultUpd.Errors) //{ // ModelState.AddModelError("error", error.Description); //} } catch (Exception ex) { _logger.LogError($"error while updating User: {ex}"); return(StatusCode((int)HttpStatusCode.InternalServerError, "error while updating User: " + ex.Message)); } return(BadRequest()); }
public static bool CreateUserInOkta(string OktaURL, string APiKey, PayoutUser User) { try { string URL = $"/api/v1/users?activate=true"; string JsonContent = string.Format(@"{{ ""profile"": {{ ""firstName"": ""{0}"", ""lastName"": ""{1}"", ""email"": ""{2}"", ""login"": ""{3}"" }} }}", User.FirstName, User.LastName, User.Email, User.Email); var response = PostOktaAPI(OktaURL, APiKey, URL, JsonContent); } catch (Exception ex) { return(false); } return(true); }
public IActionResult ChangeOktaUserGroups(string UserName, bool IsChecked = false) { //string IdProvider = ((ClaimsIdentity)HttpContext.User.Identity).Claims.Where(x => x.Type.Contains("nameidentifier")).Select(x => x.Value).FirstOrDefault(); Dictionary <string, string> OktaGroupsFromUser = OktaRequests.getGroupsFromUserOkta(_optionOktaKeys.URL, UserName, _optionOktaKeys.APIKey); Dictionary <string, string> OktaUser = OktaRequests.GetUserFromOkta(_optionOktaKeys.URL, _optionOktaKeys.APIKey, UserName); if (OktaUser.Count == 0) { PayoutUser User = _userManager.FindByEmailAsync(UserName).Result; OktaRequests.CreateUserInOkta(_optionOktaKeys.URL, _optionOktaKeys.APIKey, User); OktaUser = OktaRequests.GetUserFromOkta(_optionOktaKeys.URL, _optionOktaKeys.APIKey, UserName); } foreach (KeyValuePair <string, string> UserRole in OktaGroupsFromUser) { if (!OktaRequests.RemoveUserFromGroup(_optionOktaKeys.URL, _optionOktaKeys.APIKey, UserRole.Value, OktaUser.First().Value)) { return(BadRequest()); } } if (IsChecked) { string RS_Role = _userManager.GetRolesAsync(_userManager.FindByEmailAsync(UserName).Result).Result.FirstOrDefault(); string OktaGroup = OktaRequests.GetGroupIdFromOkta(_optionOktaKeys.URL, _optionOktaKeys.APIKey, RS_Role); if (!OktaRequests.AddUserToGroup(_optionOktaKeys.URL, _optionOktaKeys.APIKey, OktaGroup, OktaUser.First().Value)) { return(BadRequest()); } } return(Ok()); }