public async Task <Result <string> > AddRole(NewRoleRequest newRoleRequest, string adminId) { ValidationResult validationResult = _newRoleValidator.Validate(newRoleRequest); if (!validationResult.IsValid) { _logger.LogError($"Invalid NewRoleRequest. Admin {adminId}"); return(Result.Fail <string>(ResultUtils.ToResultError(validationResult.Errors))); } RoleEntity role = new RoleEntity( name: newRoleRequest.Name, description: newRoleRequest.Description, type: newRoleRequest.Type.Value); IdentityResult result = await _roleManager.CreateAsync(role); if (!result.Succeeded) { _logger.LogError($"Failed to add new role. Admin with id {adminId}"); return(Result.Fail <string>(ResultUtils.ToResultError(result.Errors))); } role = await _roleManager.FindByNameAsync(newRoleRequest.Name); if (role == null) { _logger.LogError($"Failed to find new role with name {newRoleRequest.Name}. Admin with id {adminId}"); return(Result.Fail <string>("no_role", "No role")); } return(Result.Ok(role.Id)); }
public async Task <IActionResult> ChangeRole(int id, NewRoleRequest request) { var userId = User.Claims.GetUserId(); if (userId == null) { return(BadRequest()); } if (await _userService.ChangeRole(id, request.Role, userId.Value)) { return(Ok()); } return(BadRequest()); }
public async Task <IActionResult> New(NewRoleRequest newRoleRequest) { if (!ModelState.IsValid) { return(View()); } Result <string> result = await _roleService.AddRole(newRoleRequest, GetUserId()); if (result.Failure) { ModelState.AddErrors(result.Errors); return(View(new NewRoleViewModel(StatusAlertViewExtension.Get(result)))); } return(RedirectToAction(nameof(Details), new { id = result.Value })); }
public ActionResult New(NewRoleRequest req) { var command = new RoleCommand { Name = req.Name, Description = "", SourceRoleCode = "", Status = req.Status? Lidia.Identity.Common.Models.EntityStatus.Active: Lidia.Identity.Common.Models.EntityStatus.Passive }; var response = _identityClient.CreateRole(command); if (response.Type != Lidia.Identity.Common.Models.ServiceResponseTypes.Completed) { return(RedirectToAction("New")); } else { return(View()); } }