public async Task <IActionResult> PostCategory([FromBody] Category category) { var currentUser = await GetCurrentUser(); if (!(await _accessService.CanAdd(category, currentUser))) { return(Forbid()); } if (category.Contest && category.ParentId != null) { return(BadRequest(nameof(category.Contest))); } var publicCheckResult = await CheckIfCategoryCanBePublic(category); if (publicCheckResult != null) { return(publicCheckResult); } _context.Categories.Add(category); category.Users = new List <CategoryUser>(); var categoryUser = new CategoryUser { UserId = currentUser.Id, CategoryId = category.Id }; categoryUser.SetFullRights(); category.Users.Add(categoryUser); await _context.SaveChangesAsync(); return(CreatedAtAction("GetCategory", new { id = category.Id }, category)); }
private static async Task AddUserToCategoryAsync(ApplicationUser user, string categoryName, ICategoriesService categoriesService, IRepository <CategoryUser> categoryUsersRepository) { var categoryId = categoriesService.GetCategoryIdByName(categoryName); var categoryUser = new CategoryUser { User = user, CategoryId = categoryId, }; await categoryUsersRepository.AddAsync(categoryUser); user.UserCategories.Add(categoryUser); }
private static async Task AddUserToCategoriesAsync(int[] categoriesId, string userId, ApplicationDbContext dbContext) { foreach (var categoryId in categoriesId) { var categoryUser = new CategoryUser { UserId = userId, CategoryId = categoryId, }; dbContext.CategoriesUsers.Add(categoryUser); await dbContext.SaveChangesAsync(); } }
public async Task CreateAsync(string userId, ICollection <int> categoriesId) { foreach (var categoryId in categoriesId) { var categoryUser = new CategoryUser { CategoryId = categoryId, UserId = userId, }; await this.categoryUsersRepository.AddAsync(categoryUser); await this.categoryUsersRepository.SaveChangesAsync(); } }
public static CategoryUser MapCategoryToCategoryUser(Category category, User user) { if (user != null) { CategoryUser cuser = new CategoryUser() { Category = category, User = user, UserId = user.UserId, CategoryId = category.CategoryId }; return(cuser); } return(null); }
public async Task <IActionResult> AddUsers([FromRoute] Guid id, [FromBody] IEnumerable <AccessRights> users) { var category = await _context.Categories .Include(c => c.Users) .FirstOrDefaultAsync(c => c.Id == id); if (category == null) { return(NotFound()); } var currentUser = await GetCurrentUser(); if (!await _accessService.CanEdit(category.Id, currentUser)) { return(Forbid()); } foreach (var user in users) { if (!_context.Users.Any(u => u.Id == user.UserId)) { return(BadRequest()); } var categoryUser = category.Users.SingleOrDefault(u => u.UserId == user.UserId); //todo: check if user has access to parent category (if parent category is set) // if user cannot read parent, he should not have access to child if (categoryUser == null) { categoryUser = new CategoryUser { CategoryId = category.Id, UserId = user.UserId }; user.CopyTo(categoryUser); category.Users.Add(categoryUser); } else { user.CopyTo(categoryUser); } } await _context.SaveChangesAsync(); return(Ok()); }
public async Task HasAssignedCategory() { _parent.Public = false; var parentUser = new CategoryUser { UserId = _user.Id, CategoryId = _parent.Id, User = _user, Category = _parent, CanRead = false, CanWrite = true, CanChangeAccess = true }; _parent.Users = new List <CategoryUser> { parentUser }; AddDataToDb(); await _context.SaveChangesAsync(); var result = await _controller.GetAvailableCategories(new Sieve.Models.SieveModel()); var okResult = result as OkObjectResult; Assert.NotNull(okResult); var categoriesResult = okResult.Value as IEnumerable <ListCategoryView>; Assert.NotNull(categoriesResult); var group = categoriesResult.Single(); Assert.Equal(_parent.Name, group.Name); Assert.Equal(_parent.Id, group.Id); Assert.Equal(parentUser.CanRead, group.CanRead); Assert.Equal(parentUser.CanWrite, group.CanWrite); Assert.Equal(parentUser.CanChangeAccess, group.CanChangeAccess); }
public static CategoryUserUpdateRequestBuilder Update(int categoryId, string userId, CategoryUser categoryUser, bool override_ = false) { return(new CategoryUserUpdateRequestBuilder(categoryId, userId, categoryUser, override_)); }
public static CategoryUserAddRequestBuilder Add(CategoryUser categoryUser) { return(new CategoryUserAddRequestBuilder(categoryUser)); }
public BaseTest() { _sieveProcessor = GenerateSieveProcessor <Category>(); _accessServiceMock = GenerateAccessService <Category>(); _claimsPrincipalMock = GenerateClaimsMock(); _roleHelper = GenerateRoleHelper(); _checker = new Checker { Id = Guid.NewGuid(), Name = "test", Code = "code" }; _task = new TaskDefinition { Id = Guid.NewGuid(), Public = true, Points = 100, Checker = _checker, CheckerId = _checker.Id, Name = "name", Tests = new List <Test>(), Languages = new List <TaskLanguage>(), Users = new List <Assignment>() }; _task.Users.Add(new Assignment { UserId = _user.Id, TaskId = _task.Id }); _parent = new Category { Id = Guid.NewGuid(), Name = "parent", Public = true }; _child1 = new Category { Id = Guid.NewGuid(), Name = "child1", Public = true, ParentId = _parent.Id, Parent = _parent }; _child2 = new Category { Id = Guid.NewGuid(), Name = "child2", Public = false, ParentId = _parent.Id, Parent = _parent }; _parent.Tasks = new List <TaskDefinition> { _task }; _parent.SubCategories = new List <Category> { _child1, _child2 }; _categoryUser = new CategoryUser { UserId = _user.Id, CategoryId = _child2.Id, User = _user, Category = _child2 }; _child2.Users = new List <CategoryUser> { _categoryUser }; }