Exemple #1
0
        //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);
        }
Exemple #3
0
        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());
        }