示例#1
0
        public async Task Test_permissions_can_be_retrieved()
        {
            var newRoleRequest = new RoleCreateRequest
            {
                Name        = $"{Guid.NewGuid():N}role",
                Description = $"{Guid.NewGuid():N}description",
            };
            var role = await _apiClient.Roles.CreateAsync(newRoleRequest);

            var assignPermissionsRequest = new AssignPermissionsRequest
            {
                Permissions = new List <PermissionIdentity>
                {
                    new PermissionIdentity {
                        Name = "dotnet:testing", Identifier = "dotnet-testing",
                    }
                }
            };
            await _apiClient.Roles.AssignPermissionsAsync(role.Id, assignPermissionsRequest);

            var userPermissions = await _apiClient.Roles.GetPermissionsAsync(role.Id, new PaginationInfo(0, 50, true));

            Assert.Equal(1, userPermissions.Count);

            await _apiClient.Roles.RemovePermissionsAsync(role.Id, assignPermissionsRequest);

            await _apiClient.Roles.DeleteAsync(role.Id);
        }
示例#2
0
        public async Task <IActionResult> PutRole(string id, [FromBody] RoleCreateRequest roleVm)
        {
            if (id != roleVm.Id)
            {
                return(BadRequest(new ApiBadRequestResponse(_localizer["RoleNotMatch"])));
            }

            var role = await _roleManager.FindByIdAsync(id);

            if (role == null)
            {
                return(NotFound(new ApiNotFoundResponse(_localizer["FindRoleErr"] + id)));
            }

            role.Name           = roleVm.Name;
            role.NormalizedName = roleVm.Name.ToUpper();

            var result = await _roleManager.UpdateAsync(role);

            if (result.Succeeded)
            {
                return(NoContent());
            }
            return(BadRequest(new ApiBadRequestResponse(result)));
        }
        public async Task <IActionResult> PutRole(string id, RoleCreateRequest request)
        {
            //// IF ID(request.ID) INPUT AND id (KEY OF ROLE WHICH NEED UPDATE) ARE DIFFERENT, RETURN STATUS 400
            if (id != request.Id)
            {
                return(BadRequest(new ApiBadRequestResponse("Role id not match")));
            }

            //// GET ROLE WITH ID
            var role = await _roleManger.FindByIdAsync(id);

            //// IF ID IS NOT EXIST (ROLE IS NULL), RETURN STATUS 404
            if (role == null)
            {
                return(NotFound(new ApiNotFoundResponse($"Cannot find role with id: {id}")));
            }

            //// GIVE INPUT DATA FOR EACH FIELD OF OBJECT WHICH NEED UPDATE INFOMATIONS
            role.Name           = request.Name;
            role.NormalizedName = request.Name.ToUpper();

            //// UPDATE ROLE AND SAVE CHANGE INTO DATATABLE OF DATABASE
            var result = await _roleManger.UpdateAsync(role);

            //// IF RESULT AFTER UPDATE IS SUCCEEDED, UPDATE SUCCESS AND RETURN STATUS 204, ELSE RETURN STATUS 400
            if (result.Succeeded)
            {
                return(NoContent());
            }

            return(BadRequest(new ApiBadRequestResponse(result)));
        }
        public async Task <IActionResult> PutRole(string id, [FromBody] RoleCreateRequest request) // id lấy ở routing, còn roleVm lấy từ Body
        {
            if (!ModelState.IsValid)
            { // re-render the view when validation failed.
                return(BadRequest(ModelState));
            }
            if (id != request.Id)
            {
                return(BadRequest());
            }
            var role = await _roleManager.FindByIdAsync(id);

            if (role == null)
            {
                return(NotFound()); //400
            }

            role.Name           = request.Name;
            role.NormalizedName = request.Name.ToUpper();

            var result = await _roleManager.UpdateAsync(role);

            if (result.Succeeded)
            {
                return(NoContent()); //204 success without no content response
            }
            return(BadRequest(result.Errors));
        }
示例#5
0
        public async Task <IActionResult> PutRole(string id, [FromBody] RoleCreateRequest roleVm)
        {
            if (id != roleVm.Id)
            {
                return(BadRequest(new ApiBadRequestResponse("Role id not match")));
            }

            var role = await _roleManager.FindByIdAsync(id);

            if (role == null)
            {
                return(NotFound(new ApiNotFoundResponse($"Cannot find role with id: {id}")));
            }

            role.Name           = roleVm.Name;
            role.NormalizedName = roleVm.Name.ToUpper();

            var result = await _roleManager.UpdateAsync(role);

            if (result.Succeeded)
            {
                return(NoContent());
            }
            return(BadRequest(new ApiBadRequestResponse(result)));
        }
示例#6
0
        public async Task <IActionResult> PutRole(string id, [FromBody] RoleCreateRequest request)
        {
            if (id != request.Id)
            {
                return(BadRequest());
            }
            var role = await _manager.FindByIdAsync(id);

            if (role == null)
            {
                return(NotFound());
            }

            role.Name           = request.Name;
            role.NormalizedName = request.Name.ToUpper();

            var result = await _manager.UpdateAsync(role);

            if (result.Succeeded)
            {
                return(NoContent());
            }

            return(BadRequest(result.Errors));
        }
 public RoleCreateRequestValidatorTest()
 {
     request = new RoleCreateRequest()
     {
         Id   = "admin",
         Name = "admin"
     };
     validator = new RoleCreateRequestValidator();
 }
示例#8
0
        public async Task Test_roles_assign_role_to_user()
        {
            // Add a new role
            var newRoleRequest = new RoleCreateRequest
            {
                Name        = $"{Guid.NewGuid():N}role",
                Description = $"{Guid.NewGuid():N}description",
            };
            var role = await _apiClient.Roles.CreateAsync(newRoleRequest);

            role.Should().NotBeNull();
            role.Name.Should().Be(newRoleRequest.Name);
            role.Description.Should().Be(newRoleRequest.Description);

            // Create a user
            var newUserRequest = new UserCreateRequest
            {
                Connection    = _connection.Name,
                Email         = $"{Guid.NewGuid():N}@nonexistingdomain.aaa",
                EmailVerified = true,
                Password      = Password
            };
            var user = await _apiClient.Users.CreateAsync(newUserRequest);

            // Assign a user to the role
            var assignRolesRequest = new AssignRolesRequest()
            {
                Roles = new[]
                {
                    role.Id
                }
            };
            await _apiClient.Users.AssignRolesAsync(user.UserId, assignRolesRequest);

            // Ensure the Role is assigned to user
            var assignedRoles = await _apiClient.Users.GetRolesAsync(user.UserId, new PaginationInfo());

            assignedRoles.Should().NotBeNull();
            assignedRoles.Should().HaveCount(1);
            assignedRoles.First().Id.Should().Be(role.Id);

            // Remove role from user
            await _apiClient.Users.RemoveRolesAsync(user.UserId, assignRolesRequest);

            // Ensure the Role has been removed from user
            var removedRoles = await _apiClient.Users.GetRolesAsync(user.UserId, new PaginationInfo());

            removedRoles.Should().NotBeNull();
            removedRoles.Should().HaveCount(0);

            // Clean Up
            await _apiClient.Roles.DeleteAsync(role.Id);

            await _apiClient.Users.DeleteAsync(user.UserId);
        }
示例#9
0
        public async Task <IActionResult> PostRole(RoleCreateRequest request)
        {
            var role   = _mapper.Map <AppRole>(request);
            var result = await _roleManager.CreateAsync(role);

            if (result.Succeeded)
            {
                return(CreatedAtAction(nameof(GetById), new { id = role.Id }, request));
            }

            return(BadRequest(new ApiBadRequestResponse(result)));
        }
示例#10
0
 public RoleCreateReply RoleCreate(RoleCreateRequest request)
 {
     try
     {
         RoleCreateReply response = new RoleCreateReply();
         _roles.CreateRole(request.RoleName);
         response.Status = ActionStatus.OK;
         return(response);
     }
     catch (Exception ex)
     {
         throw ex.NewFault();
     }
 }
        public RoleCreateRequestValidatorTest()
        {
            _request = new RoleCreateRequest
            {
                Id   = "admin",
                Name = "admin"
            };
            var mock            = new Mock <IStringLocalizer <RoleCreateRequest> >();
            var localizedString = new LocalizedString("", "");

            mock.Setup(_ => _[""]).Returns(localizedString);
            var localizer = mock.Object;

            _validator = new RoleCreateRequestValidator(localizer);
        }
        public async Task <IActionResult> GetById(string id)
        {
            var role = await _roleManager.FindByIdAsync(id);

            if (role == null)
            {
                return(NotFound());
            }
            var roleVm = new RoleCreateRequest
            {
                Id   = role.Id,
                Name = role.Name
            };

            return(Ok(roleVm));
        }
        public async Task <IActionResult> PostRole(RoleCreateRequest roleVm)
        {
            var role = new IdentityRole
            {
                Id             = roleVm.Id,
                Name           = roleVm.Name,
                NormalizedName = roleVm.Name.ToUpper()
            };
            var result = await _roleManager.CreateAsync(role);

            if (result.Succeeded)
            {
                return(CreatedAtAction(nameof(GetById), new { id = role.Id }, roleVm));
            }
            return(BadRequest(result.Errors));
        }
        public async Task <UpdateStatusViewModel> Create(RoleCreateRequest request)
        {
            var sessions = Core.Token;

            _client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", sessions);
            var json        = JsonConvert.SerializeObject(request);
            var httpContent = new StringContent(json, Encoding.UTF8, "application/json");
            var response    = await _client.PostAsync($"/api/Roles", httpContent);

            var result = await response.Content.ReadAsStringAsync();

            if (response.IsSuccessStatusCode)
            {
                return(JsonConvert.DeserializeObject <UpdateStatusViewModel>(result));
            }
            return(null);
        }
示例#15
0
        public async Task Test_roles_assign_user_to_role()
        {
            // Add a new role
            var newRoleRequest = new RoleCreateRequest
            {
                Name        = $"{Guid.NewGuid():N}role",
                Description = $"{Guid.NewGuid():N}description",
            };
            var role = await _apiClient.Roles.CreateAsync(newRoleRequest);

            role.Should().NotBeNull();
            role.Name.Should().Be(newRoleRequest.Name);
            role.Description.Should().Be(newRoleRequest.Description);

            // Create a user
            var newUserRequest = new UserCreateRequest
            {
                Connection    = _connection.Name,
                Email         = $"{Guid.NewGuid():N}@nonexistingdomain.aaa",
                EmailVerified = true,
                Password      = Password
            };
            var user = await _apiClient.Users.CreateAsync(newUserRequest);

            // Assign a user to the role
            var assignUsersRequest = new AssignUsersRequest
            {
                Users = new[]
                {
                    user.UserId
                }
            };
            await _apiClient.Roles.AssignUsersAsync(role.Id, assignUsersRequest);

            // Ensure the user is assigned to the role
            var assignedUsers = await _apiClient.Roles.GetUsersAsync(role.Id);

            assignedUsers.Should().NotBeNull();
            assignedUsers.First().UserId.Should().Be(user.UserId);

            // Clean Up
            await _apiClient.Roles.DeleteAsync(role.Id);

            await _apiClient.Users.DeleteAsync(user.UserId);
        }
示例#16
0
        public async Task <ApiResultLite> CreateAsync(RoleCreateRequest model)
        {
            var role = new AppRole()
            {
                Name        = model.Name,
                Description = model.Description
            };
            IdentityResult result = await _roleManager.CreateAsync(role);

            if (result.Succeeded)
            {
                return(new ApiSuccessResultLite("Tạo mới thành công"));
            }
            else
            {
                return(new ApiErrorResultLite("Tạo mới thất bại"));
            }
        }
示例#17
0
 public override void CreateRole(string roleName)
 {
     WcfClientUtils.VerifyParameter("roleName", roleName);
     //using (_log.NewTrace())
     {
         try
         {
             RoleCreateRequest request = new RoleCreateRequest();
             request.RoleName = roleName;
             request.ServiceSessionToken = _authenticationKey;
             var response = _appService.RoleCreate(request);
         }
         catch (Exception ex)
         {
             throw WcfUtils.Extract(ex);
         }
     }
 }
示例#18
0
        public async Task <IActionResult> PostRole(RoleCreateRequest request)
        {
            var role = new IdentityRole()
            {
                Id             = request.Id,
                Name           = request.Name,
                NormalizedName = request.Name.ToUpper()
            };
            var result = await _roleManager.CreateAsync(role);

            if (result.Succeeded)
            {
                return(CreatedAtAction(nameof(GetById), new { id = role.Id }, request));
            }
            else
            {
                return(BadRequest(new ApiBadRequestResponse(result)));
            }
        }
示例#19
0
        public async Task <IActionResult> CreateRole(RoleCreateRequest request)
        {
            //Creazione modello richiesto da admin
            var model = new Role
            {
                Name        = request.Name,
                Description = request.Description
            };

            //Invocazione del service layer
            var validations = await AuthorizationLayer.CreateRole(model, PlatformUtils.GetIdentityUserId(User));

            if (validations.Count > 0)
            {
                return(BadRequest(validations));
            }

            //Return contract
            return(Ok(ContractUtils.GenerateContract(model)));
        }
示例#20
0
        /// <summary>
        /// Post the specified request.
        /// </summary>
        /// <param name="request">Request.</param>
        public object Post(RoleCreateRequest request)
        {
            var     context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly);
            WebRole result;

            try{
                context.Open();
                Role role = (request.Id == 0 ? null : Role.FromId(context, request.Id));
                role = request.ToEntity(context, role);
                role.Store();
                result = new WebRole(role);
                context.LogInfo(this, string.Format("/role POST Id='{0}'", request.Id));
                context.LogDebug(this, string.Format("Role {0} created by user {1}", role.Identifier, User.FromId(context, context.UserId).Username));
                context.Close();
            }catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
            return(result);
        }
        public async Task <IActionResult> DeleteRole(string id)
        {
            var role = await _roleManager.FindByIdAsync(id);

            if (role == null)
            {
                return(NotFound());
            }
            var result = await _roleManager.DeleteAsync(role);

            if (result.Succeeded)
            {
                var rolevm = new RoleCreateRequest()
                {
                    Id   = role.Id,
                    Name = role.Name
                };
                return(Ok(rolevm));
            }
            return(BadRequest(result.Errors));
        }
        public async Task <IActionResult> PostRole(RoleCreateRequest request)
        {
            if (!ModelState.IsValid)
            { // re-render the view when validation failed.
                return(BadRequest(ModelState));
            }
            var role = new IdentityRole()
            {
                Id             = request.Id,
                Name           = request.Name,
                NormalizedName = request.Name.ToUpper()
            };
            var result = await _roleManager.CreateAsync(role);

            if (result.Succeeded)
            {
                return(CreatedAtAction(nameof(GetById), new { id = role.Id }, request));
            }
            else
            {
                return(BadRequest(result.Errors));
            }
        }
        public async Task <IActionResult> PostRole(RoleCreateRequest request)
        {
            //// CREATE A INSTANCE OF ROLE WITH INFO IS INPUT DATA
            var role = new IdentityRole()
            {
                Id             = request.Id,
                Name           = request.Name,
                NormalizedName = request.Name.ToUpper()
            };

            //// INSERT NEW ROLE INTO DATATABLE IN DATABASE AND SAVE CHANGE
            var result = await _roleManger.CreateAsync(role);

            //// IF RESULT AFTER INSERT IS SUCCEEDED, INSERT SUCCESS AND RETURN STATUS 201, ELSE RETURN STATUS IS 400.
            if (result.Succeeded)
            {
                return(CreatedAtAction(nameof(GetById), new { id = role.Id }, request));
            }
            else
            {
                return(BadRequest(new ApiBadRequestResponse(result)));
            }
        }
示例#24
0
        public async Task Test_roles_crud_sequence()
        {
            // Add a new role
            var newRoleRequest = new RoleCreateRequest
            {
                Name        = $"{Guid.NewGuid():N}role",
                Description = $"{Guid.NewGuid():N}description",
            };
            var newRoleResponse = await _apiClient.Roles.CreateAsync(newRoleRequest);

            newRoleResponse.Should().NotBeNull();
            newRoleResponse.Name.Should().Be(newRoleRequest.Name);
            newRoleResponse.Description.Should().Be(newRoleRequest.Description);

            // Update the role
            var updateRoleRequest = new RoleUpdateRequest
            {
                Name = $"{Guid.NewGuid():N}role",
            };
            var updateRoleResponse = await _apiClient.Roles.UpdateAsync(newRoleResponse.Id, updateRoleRequest);

            updateRoleResponse.Should().NotBeNull();
            updateRoleResponse.Name.Should().Be(updateRoleRequest.Name);

            // Get a single role
            var role = await _apiClient.Roles.GetAsync(newRoleResponse.Id);

            role.Should().NotBeNull();
            role.Name.Should().Be(updateRoleResponse.Name);

            // Create a user
            var newUserRequest = new UserCreateRequest
            {
                Connection    = _connection.Name,
                Email         = $"{Guid.NewGuid():N}@nonexistingdomain.aaa",
                EmailVerified = true,
                Password      = Password
            };
            var user = await _apiClient.Users.CreateAsync(newUserRequest);

            // Assign a user to the role
            var assignUsersRequest = new AssignUsersRequest
            {
                Users = new[]
                {
                    user.UserId
                }
            };
            await _apiClient.Roles.AssignUsersAsync(role.Id, assignUsersRequest);

            // Ensure the user is assigned to the role
            var assignedUsers = await _apiClient.Roles.GetUsersAsync(role.Id);

            assignedUsers.Should().NotBeNull();
            assignedUsers.First().UserId.Should().Be(user.UserId);

            // Ensure the Role is assigned to user
            var assignedRoles = await _apiClient.Users.GetRolesAsync(user.UserId, new PaginationInfo());

            assignedRoles.Should().NotBeNull();
            assignedRoles.First().Id.Should().Be(role.Id);

            // Delete the role and ensure we get an exception when trying to fetch them again
            await _apiClient.Roles.DeleteAsync(role.Id);

            Func <Task> getFunc = async() => await _apiClient.Roles.GetAsync(role.Id);

            getFunc.Should().Throw <ErrorApiException>().And.ApiError.Error.Should().Be("Not Found");

            // Delete the user
            await _apiClient.Users.DeleteAsync(user.UserId);
        }
示例#25
0
        public async Task Test_roles_assign_unassign_permission_to_role()
        {
            // Add a new role
            var newRoleRequest = new RoleCreateRequest
            {
                Name        = $"{Guid.NewGuid():N}role",
                Description = $"{Guid.NewGuid():N}description",
            };
            var role = await _apiClient.Roles.CreateAsync(newRoleRequest);

            role.Should().NotBeNull();
            role.Name.Should().Be(newRoleRequest.Name);
            role.Description.Should().Be(newRoleRequest.Description);

            // Get a resource server
            var resourceServer = await _apiClient.ResourceServers.GetAsync("5cccc711773967081270a036");

            var originalScopes = resourceServer.Scopes.ToList();

            // Create a permission/scope
            var newScope = new ResourceServerScope {
                Value = $"{Guid.NewGuid():N}scope", Description = "Integration test"
            };

            // Update resource server with new scope
            resourceServer = await _apiClient.ResourceServers.UpdateAsync(resourceServer.Id, new ResourceServerUpdateRequest
            {
                Scopes = originalScopes.Concat(new[] { newScope }).ToList(),
            });

            // Associate a permission with the role
            var assignPermissionsRequest = new AssignPermissionsRequest()
            {
                Permissions = new[] { new PermissionIdentity {
                                          Identifier = resourceServer.Identifier, Name = newScope.Value
                                      } }
            };
            await _apiClient.Roles.AssignPermissionsAsync(role.Id, assignPermissionsRequest);

            // Ensure the permission is associated with the role
            var associatedPermissions = await _apiClient.Roles.GetPermissionsAsync(role.Id, new PaginationInfo());

            associatedPermissions.Should().NotBeNull();
            associatedPermissions.Should().HaveCount(1);
            associatedPermissions.First().Identifier.Should().Be(resourceServer.Identifier);
            associatedPermissions.First().Name.Should().Be(newScope.Value);

            // Unassociate a permission with the role
            await _apiClient.Roles.RemovePermissionsAsync(role.Id, assignPermissionsRequest);

            // Ensure the permission is unassociated with the role
            associatedPermissions = await _apiClient.Roles.GetPermissionsAsync(role.Id, new PaginationInfo());

            associatedPermissions.Should().NotBeNull();
            associatedPermissions.Should().HaveCount(0);

            // Clean Up - Remove the permission from the resource server
            resourceServer = await _apiClient.ResourceServers.UpdateAsync(resourceServer.Id, new ResourceServerUpdateRequest
            {
                Scopes = originalScopes
            });

            // Clean Up - Remove the role
            await _apiClient.Roles.DeleteAsync(role.Id);
        }
        public async Task <UpdateStatusViewModel> Create(RoleCreateRequest request)
        {
            var result = await _apiClient.Create(request);

            return(result);
        }
示例#27
0
 /// <summary>
 /// Creates a new role according to the request.
 /// </summary>
 /// <param name="request">The <see cref="RoleCreateRequest"/> containing the details of the role to create.</param>
 /// <returns>The newly created <see cref="Role" />.</returns>
 public Task <Role> CreateAsync(RoleCreateRequest request)
 {
     return(Connection.SendAsync <Role>(HttpMethod.Post, BuildUri("roles"), request, DefaultHeaders));
 }
示例#28
0
 /// <summary>
 /// Creates a new role according to the request.
 /// </summary>
 /// <param name="request">The <see cref="RoleCreateRequest"/> containing the details of the role to create.</param>
 /// <returns>The newly created <see cref="Role" />.</returns>
 public Task <Role> CreateAsync(RoleCreateRequest request)
 {
     return(Connection.PostAsync <Role>("roles", request, null, null, null, null, null));
 }
        public async Task <ApiResultLite> CreateAsync(RoleCreateRequest model)
        {
            var result = await _roleService.CreateAsync(model);

            return(result);
        }
示例#30
0
        public async Task <ActionResult <bool> > CreateRole(RoleCreateRequest request)
        {
            var response = await _roleService.CreateRole(request.RoleName);

            return(response.ToActionResult(this));
        }