Esempio n. 1
0
        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;
        }
Esempio n. 2
0
 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;
 }
Esempio n. 3
0
 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));
     }
 }
Esempio n. 4
0
        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));
            }
        }
Esempio n. 5
0
        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));
            }
        }
Esempio n. 6
0
        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));
            }
        }
Esempio n. 7
0
 public void BtnEditRole_ClickAsync(AdminEditRoleVM roleToEdit)
 {
     SetButtonStates(ButtonState.Disabled);
     _btnEditRoleStates[roleToEdit.Id] = ButtonState.Loading;
     NavigationManager.NavigateTo($"admin/editrole/{roleToEdit.Id}");
 }