public ErrorsCollection Validate(UserUserRolePostModel userUserRolePosModel, MoviesDbContext context) { ErrorsCollection errorsCollection = new ErrorsCollection { Entity = nameof(UserUserRolePostModel) }; List <string> userRoles = context .UserRoles .Select(userRole => userRole.Name) .ToList(); if (!userRoles.Contains(userUserRolePosModel.UserRoleName)) { errorsCollection.ErrorMessages.Add($"The UserRole {userUserRolePosModel.UserRoleName} does not exist!"); } if (errorsCollection.ErrorMessages.Count > 0) { return(errorsCollection); } return(null); }
[Route("~/api/users/chrole")] //suprascrie ruta prestabilita [Route("api/[controller]")] public IActionResult Post([FromBody] UserUserRolePostModel userUserRolePostModel) //pentru creare de UserUserRole cu legatura manytomany intre User si UserRole { User curentUserLogIn = userService.GetCurentUser(HttpContext); string roleNameLoged = HttpContext.User.Claims.FirstOrDefault(claim => claim.Type == ClaimTypes.Role).Value; string curentUserRoleName = userUserRolesService.GetUserRoleNameById(userUserRolePostModel.UserId); if (roleNameLoged.Equals("UserManager")) { var anulUserRegistered = curentUserLogIn.DataRegistered; //data inregistrarii var curentMonth = DateTime.Now; //data curenta var nrLuni = curentMonth.Subtract(anulUserRegistered).Days / (365.25 / 12); //diferenta in luni dintre datele transmise if (nrLuni >= 6) { string activRoleName = userUserRolesService.GetUserRoleNameById(userUserRolePostModel.UserId); if (activRoleName.Equals("Admin")) { return(Forbid("Nu ai Rolul necesar pentru aceasta operatie !")); } if ((activRoleName.Equals("UserManager") | activRoleName.Equals("Regular")) && userUserRolePostModel.UserRoleName.Equals("Admin")) { return(Forbid("Nu ai Rolul necesar pentru aceasta operatie !")); } } else { return(Forbid("Nu ai Vechimea necesara ca UserManager pentru aceasta operatie !")); } } userUserRolesService.Create(userUserRolePostModel); return(Ok()); }
public void CreateShouldAddTheUserUserRole() { var options = new DbContextOptionsBuilder <TasksDbContext>() .UseInMemoryDatabase(databaseName: nameof(CreateShouldAddTheUserUserRole)) .Options; using (var context = new TasksDbContext(options)) { var validator = new UserRoleValidator(); var userUserRolesService = new UserUserRoleService(validator, context); User userToAdd = new User { Email = "*****@*****.**", LastName = "Ion", FirstName = "POpescu", Password = "******", DateAdded = DateTime.Now, UserUserRole = new List <UserUserRole>() }; context.Users.Add(userToAdd); UserRole addUserRoleRegular = new UserRole { Name = "Regular", Description = "Creat pentru testare" }; UserRole addUserRoleAdmin = new UserRole { Name = "AdminDeTest", Description = "Creat pentru testare" }; context.UserRole.Add(addUserRoleRegular); context.UserRole.Add(addUserRoleAdmin); context.SaveChanges(); context.UserUserRole.Add(new UserUserRole { User = userToAdd, UserRole = addUserRoleRegular, StartTime = DateTime.Parse("2019-06-13T00:00:00"), EndTime = null }); context.SaveChanges(); //sectiunea de schimbare valori invalidata de catre UserRoleValidator var uurpm = new UserUserRolePostModel { UserId = userToAdd.Id, UserRoleName = "Admin" }; var result1 = userUserRolesService.Create(uurpm); Assert.IsNotNull(result1); //User role nu exista in baza de date dupa validare, ==> exista erori la validare //sectiunea de schimbare valori validata de catre UserRoleValidator var uurpm1 = new UserUserRolePostModel { UserId = userToAdd.Id, UserRoleName = "AdminDeTest" }; var result2 = userUserRolesService.Create(uurpm1); Assert.IsNull(result2); //User role exista si se face upsert } }
public void Post([FromBody] UserUserRolePostModel userUserRolePostModel) { userUserRoleService.Create(userUserRolePostModel); }
public ErrorsCollection Create(UserUserRolePostModel userUserRolePostModel) { var errors = userRoleValidator.Validate(userUserRolePostModel, context); if (errors != null) { return(errors); } User user = context.Users .FirstOrDefault(u => u.Id == userUserRolePostModel.UserId); if (user != null) { UserRole userRole = context .UserRole .Include(ur => ur.UserUserRoles) .FirstOrDefault(ur => ur.Name == userUserRolePostModel.UserRoleName); UserUserRole curentUserUserRole = context.UserUserRole .Include(uur => uur.UserRole) .FirstOrDefault(uur => uur.UserId == user.Id && uur.EndTime == null); //discutabil, nu ar trebui sa fie null niciodata, adica la Register nu a fost creat bine un defalut Regular role pentru userul respectiv if (curentUserUserRole == null) { context.UserUserRole.Add(new UserUserRole { User = user, UserRole = userRole, StartTime = DateTime.Now, EndTime = null }); context.SaveChanges(); return(null); } //inchiderea perioadel de activare pentru un anumit rol if (!curentUserUserRole.UserRole.Name.Contains(userUserRolePostModel.UserRoleName)) { curentUserUserRole.EndTime = DateTime.Now; context.UserUserRole.Add(new UserUserRole { User = user, UserRole = userRole, StartTime = DateTime.Now, EndTime = null }); context.SaveChanges(); return(null); } else { return(null); //trebuie sa trimit eroare ca modificarea nu poate avea loc, rol nou = rol vechi } } return(null); //eroare Nu exista User cu Id-ul specificat }
public ErrorsCollection Create(UserUserRolePostModel userUserRolePostModel) { var errors = userRoleValidator.Validate(userUserRolePostModel, context); if (errors != null) { return(errors); } User user = context .Users .FirstOrDefault(u => u.Id == userUserRolePostModel.UserId); if (user != null) { UserRole userRole = context .UserRoles .Include(urole => urole.UserUserRoles) .FirstOrDefault(urole => urole.Name == userUserRolePostModel.UserRoleName); UserUserRole currentUserUserRole = context .UserUserRoles .Include(uurole => uurole.UserRole) .FirstOrDefault(uurole => uurole.UserId == user.Id && uurole.EndTime == null); if (currentUserUserRole == null) { context.UserUserRoles.Add(new UserUserRole { User = user, UserRole = userRole, StartTime = DateTime.Now, EndTime = null }); context.SaveChanges(); return(null); } if (!currentUserUserRole.UserRole.Name.Contains(userUserRolePostModel.UserRoleName)) { currentUserUserRole.EndTime = DateTime.Now; context.UserUserRoles.Add(new UserUserRole { User = user, UserRole = userRole, StartTime = DateTime.Now, EndTime = null }); context.SaveChanges(); return(null); } else { return(null); } } return(null); }