public async Task <JsonResult> EditAgent(int agentId, AgentCredentialsViewModel model) { return(await Run(async() => { ValidateAgentCredentials(model); var agent = await _agentRepository.GetByIdAync(agentId); if (agent.Code == model.Code && agent.Password == model.Password) { return; } var userManager = HttpContext.GetOwinContext().GetUserManager <BkUserManager>(); var user = await userManager.FindByNameAsync(agent.Code); if (user != null) { var errors = new List <string>(); if (agent.Code != model.Code) { user.UserName = model.Code; var updateResult = await userManager.UpdateAsync(user); if (!updateResult.Succeeded) { errors.AddRange(updateResult.Errors); } } if (agent.Password != model.Password) { var changePasswordResult = await userManager.ChangePasswordAsync(user.Id, agent.Password, model.Password); if (!changePasswordResult.Succeeded) { errors.AddRange(changePasswordResult.Errors); } var updateSeurityStampResult = await userManager.UpdateSecurityStampAsync(user.Id); if (!updateSeurityStampResult.Succeeded) { errors.AddRange(updateSeurityStampResult.Errors); } } await _agentRepository.UpdateCodeAndPasswordAsync(agentId, model.Code, model.Password); if (errors.Count > 0) { throw new PublicException("Во время редактирования агента произошли ошибки: " + Environment.NewLine + string.Join("; ", errors)); } } else { throw new PublicException("Пользователь не найден"); } }, "При редактировании данных агента произошла ошибка")); }
private void ValidateAgentCredentials(AgentCredentialsViewModel credentials) { if (string.IsNullOrEmpty(credentials.Code)) { throw new PublicException("Не указан логин агента"); } if (string.IsNullOrEmpty(credentials.Password)) { throw new PublicException("Не указан пароль агента"); } if (credentials.Password.Length < Common.Constants.MinPasswordLength) { throw new PublicException($"Минимальная длина пароля - {Common.Constants.MinPasswordLength} символов"); } }
public async Task <JsonResult> CreateAgent(AgentCredentialsViewModel model) { return(await RunWithResult(async() => { ValidateAgentCredentials(model); var userManager = HttpContext.GetOwinContext().GetUserManager <BkUserManager>(); var roleManager = HttpContext.GetOwinContext().GetUserManager <BkRoleManager>(); var existingUser = await userManager.FindByNameAsync(model.Code); if (existingUser != null) { throw new PublicException($"Пользователь с именем {model.Code} уже существует"); } if (!roleManager.RoleExists(UserRoleNames.Agent)) { var roleCreationResult = await roleManager.CreateAsync(new BkRole(UserRoleNames.Agent)); if (!roleCreationResult.Succeeded) { throw new PublicException(string.Join(". ", roleCreationResult.Errors)); } } var user = new BkUser { UserName = model.Code }; var userCreationResult = await userManager.CreateAsync(user, model.Password); if (!userCreationResult.Succeeded) { throw new PublicException(string.Join(". ", userCreationResult.Errors)); } var addToRoleResult = await userManager.AddToRoleAsync(user.Id, UserRoleNames.Agent); if (!addToRoleResult.Succeeded) { throw new PublicException(string.Join(". ", addToRoleResult.Errors)); } var agentId = await _agentRepository.CreateAgentAync(model.Code, model.Password); return new Agent { Id = agentId, Code = model.Code, Password = model.Password }; }, "При создании агента произошла ошибка")); }