public async Task <IActionResult> SetUserProjectRole([FromBody] PutUserRoleRequest request) { var keyAuthResult = await _authService.AuthByApiKey(); if (keyAuthResult.User == null) { return(BadRequest(ErrorResponse.GetErrorList(keyAuthResult.ErrorText))); } var project = _ticketService.GetProject(request.Project); if (project == null) { return(BadRequest(ErrorResponse.GetErrorList($"Project: {request.Project} does not exist!"))); } if (!await _authService.AuthorizeProjectRole(eProjectRoles.Manager, project.Id, user: keyAuthResult.User)) { return(Unauthorized(ErrorResponse.GetUnauthorizedErrorList(keyAuthResult.User.Identity.Name, project.Name, eProjectRoles.Manager))); } await _projectRoleService.SetProjectRole(request.Project, request.User, request.Role); var baseUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}"; var locationUrl = baseUrl + "/" + ApiRoutes.UserRoles.GetAllByUser.Replace("{userName}", request.User); var response = _mapper.Map <UserRoleResponse>(request); return(Created(locationUrl, response)); }
public async Task UserRoles_Put_UserRoles_AddRole_ExpectsUserRole() { var client = getClient(); PutUserRoleRequest request = new PutUserRoleRequest() { Project = TestDbContextData.Project1.Name, User = TestDbContextData.DummyGuest.UserName, Role = eProjectRoles.Reporter }; Assert.False(await userHasRole(client, request.User, request.Role)); var response = await client.PutAsJsonAsync(ApiRoutes.UserRoles.Update, request); var responseUserRole = await response.Content.ReadAsAsync <UserRoleResponse>(); Assert.Equal(request.Project, responseUserRole.Project); Assert.Equal(request.User, responseUserRole.User); Assert.Equal(request.Role, responseUserRole.Role); Assert.Equal(response.Headers.Location.LocalPath, "/" + ApiRoutes.UserRoles.GetAllByUser.Replace("{userName}", request.User)); Assert.True(await userHasRole(client, request.User, request.Role)); }