public async void BtnConfirmRoleDelete_ClickAsync(bool isDeleteConfirmed) { if (!isDeleteConfirmed) { SetButtonStates(ButtonState.Enabled); _roleWaitingForDeleteConfirmation = null; return; } var editRoleResponse = await AdminService.DeleteRoleAsync(_roleWaitingForDeleteConfirmation); var rolesToEditbyAdminResponse = await AdminService.GetRolesAsync(); RolesToEditByAdmin = Mapper.ProjectTo <AdminEditRoleVM>(rolesToEditbyAdminResponse.Result.AsQueryable()).ToList(); if (editRoleResponse.IsError || rolesToEditbyAdminResponse.IsError) { SetButtonStates(ButtonState.Enabled); await Main.PromptMessageAsync(PromptType.Error, editRoleResponse.Message ?? rolesToEditbyAdminResponse.Message); _roleWaitingForDeleteConfirmation = null; return; } SetButtonStates(ButtonState.Enabled); await Main.PromptMessageAsync(PromptType.Success, editRoleResponse.Message); _roleWaitingForDeleteConfirmation = null; }
public void BtnDeleteRole_ClickAsync(AdminEditRoleVM roleToDelete) { SetButtonStates(ButtonState.Disabled); _btnDeleteRoleStates[roleToDelete.Id] = ButtonState.Loading; ConfirmationDialog_DeleteRole.Show($"Are you sure you want to delete Role \"{roleToDelete.Name}\"?"); _roleWaitingForDeleteConfirmation = roleToDelete; }
public async Task <ApiResponse <AdminEditRoleVM> > EditRoleAsync(AdminEditRoleVM roleToEdit) { try { var authUser = (await _accountService.GetAuthenticatedUserAsync())?.Result; return(await _httpClient.PostJTokenAsync <ApiResponse <AdminEditRoleVM> >("api/admin/editrole", new { AuthenticatedUser = authUser, RoleToEdit = roleToEdit })); } catch (Exception ex) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status500InternalServerError, "API threw an exception while editing Role", null, null, ex)); } }
public async Task <ApiResponse <AdminEditRoleVM> > EditRoleAsync(AuthenticateUserVM authUser, AdminEditRoleVM roleToEdit) { try { if (authUser == null || !authUser.IsAuthenticated || !authUser.HasRole("Admin")) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status401Unauthorized, "You are not Authorized to Edit Roles", null)); } if (roleToEdit.Id == default) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, "Role Id is Empty, it should never happen", null)); } var role = await _roleManager.FindByIdAsync(roleToEdit.Id.ToString()); if (role.Name.EqualsIgnoreCase("Admin") && !role.Name.EqualsIgnoreCase(roleToEdit.Name)) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, $"You can't change \"{role.Name}\" Role Name", null)); } if (role.Name.EqualsIgnoreCase("Admin") && !authUser.UserName.EqAnyIgnoreCase(roleToEdit.UserNames)) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, $"You can't remove \"{role.Name}\" Role from yourself", null)); } _mapper.Map(roleToEdit, role); var updateRoleResp = await _roleManager.UpdateAsync(role); if (!updateRoleResp.Succeeded) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, $"Editing Role \"{roleToEdit.Name}\" Failed. ({updateRoleResp.FirstError()})", null)); } var users = await _userManager.Users.ToListAsync(); foreach (var user in users) { if (user.UserName.In(roleToEdit.UserNames) && !await _userManager.IsInRoleAsync(user, roleToEdit.Name)) { var addUserToRoleResp = await _userManager.AddToRoleAsync(user, roleToEdit.Name); if (!addUserToRoleResp.Succeeded) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, $"Adding Role \"{roleToEdit.Name}\" to User \"{user.UserName}\" Failed. ({updateRoleResp.FirstError()})", null)); } } if (!user.UserName.In(roleToEdit.UserNames) && await _userManager.IsInRoleAsync(user, roleToEdit.Name)) { var removeUserfromRoleResp = await _userManager.RemoveFromRoleAsync(user, roleToEdit.Name); if (!removeUserfromRoleResp.Succeeded) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, $"Removing Role \"{roleToEdit.Name}\" from User \"{user.UserName}\" Failed. ({updateRoleResp.FirstError()})", null)); } } } return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status201Created, $"Successfully Updated Role: \"{roleToEdit.Name}\"", null, roleToEdit)); } catch (Exception ex) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status500InternalServerError, "Adding Role Failed", null, null, ex)); } }
public async Task <ApiResponse <AdminEditRoleVM> > AddRoleAsync(AuthenticateUserVM authUser, AdminEditRoleVM roleToAdd) { try { if (authUser == null || !authUser.IsAuthenticated || !authUser.HasRole("Admin")) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status401Unauthorized, "You are not Authorized to Add Roles", null)); } var role = new IdentityRole <Guid> { Name = roleToAdd.Name }; var addRoleResp = await _roleManager.CreateAsync(role); if (!addRoleResp.Succeeded) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, $"Adding Role \"{roleToAdd.Name}\" Failed. ({addRoleResp.FirstError()})", null)); } foreach (var userName in roleToAdd.UserNames) { var user = await _userManager.FindByNameAsync(userName); if (user == null) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, $"Adding Role \"{roleToAdd.Name}\" to User \"{userName}\" Failed, there is no such User", null)); } var addRoleToUserResp = await _userManager.AddToRoleAsync(user, role.Name); if (!addRoleToUserResp.Succeeded) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, $"Adding Role \"{roleToAdd.Name}\" to User \"{userName}\" Failed. ({addRoleResp.FirstError()})", null)); } } return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status201Created, $"Successfully Added Role: \"{roleToAdd.Name}\"", null, roleToAdd)); } catch (Exception ex) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status500InternalServerError, "Adding Role Failed", null, null, ex)); } }
public async Task <ApiResponse <AdminEditRoleVM> > DeleteRoleAsync(AuthenticateUserVM authUser, AdminEditRoleVM roleToDelete) { try { if (authUser == null || !authUser.IsAuthenticated || !authUser.HasRole("Admin")) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status401Unauthorized, "You are not Authorized to Delete Roles", null)); } if (roleToDelete.Name.IsNullOrWhiteSpace()) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, "Name for the Role was not supplied, as it is done automatically it should never happen", null)); } if (roleToDelete.Name.EqualsIgnoreCase("Admin")) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, "You can't remove \"Admin\" role, it would be just dumb", null)); } var role = await _roleManager.FindByNameAsync(roleToDelete.Name); if (role == null) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, $"Role \"{roleToDelete.Name}\" was not found, it should never happen", null)); } var deleteRoleResponse = await _roleManager.DeleteAsync(role); if (!deleteRoleResponse.Succeeded) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status400BadRequest, $"Deleting Role \"{roleToDelete.Name}\" Failed. ({deleteRoleResponse.FirstError()})", null)); } return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status201Created, $"Successfully Deleted Role \"{roleToDelete.Name}\"", null, roleToDelete)); } catch (Exception ex) { return(new ApiResponse <AdminEditRoleVM>(StatusCodeType.Status500InternalServerError, "Deleting Role Failed", null, null, ex)); } }
public void BtnEditRole_ClickAsync(AdminEditRoleVM roleToEdit) { SetButtonStates(ButtonState.Disabled); _btnEditRoleStates[roleToEdit.Id] = ButtonState.Loading; NavigationManager.NavigateTo($"admin/editrole/{roleToEdit.Id}"); }