Exemple #1
0
        public async Task <bool> UpdatePermissions(RoleUpdatePermissionsDto roleUpdatePermissionsDto)
        {
            if (roleUpdatePermissionsDto == null)
            {
                throw new ArgumentException("Parâmetro 'roleUpdatePermissionsDto' incorreto");
            }

            var roleDto = roleUpdatePermissionsDto.Role;
            var role    = await roleManager.FindByIdAsync(roleDto.Id.Value.ToString());

            var permissionsIds = roleUpdatePermissionsDto.PermissionIds;

            foreach (var permissionId in permissionsIds)
            {
                IdentityResult result = null;

                if (roleUpdatePermissionsDto.UpdateType == UpdateTypes.Create)
                {
                    result = await roleManager.AddClaimAsync(role, new Claim(CustomClaimTypes.Permission, permissionId.ToString()));
                }

                if (roleUpdatePermissionsDto.UpdateType == UpdateTypes.Delete)
                {
                    result = await roleManager.RemoveClaimAsync(role, new Claim(CustomClaimTypes.Permission, permissionId.ToString()));
                }

                if (result != null && result.Succeeded == false)
                {
                    throw new Exception(result.Errors.ToString());
                }
            }

            return(true);
        }
        public async Task <IActionResult> UpdatePermissions(RoleUpdatePermissionsDto roleUpdatePermissionsDto)
        {
            var response = await roleService.UpdatePermissions(roleUpdatePermissionsDto);

            return(Ok(response));
        }