public ActionResult Register(AccountViewModel avm)
 {
     if (!ModelState.IsValid)
     {
         ModelState.AddModelError("", "Invalid data");
         return View(avm);
     }
     UserEntity user = new UserEntity()
     {
         Login = avm.Login,
         Email = avm.Email,
         PasswordHash = userService.GetHash(avm.Password),
         FirstName = avm.FirstName,
         SecondName = avm.SecondName,
         ThirdName = avm.ThirdName
     };
     if (userService.GetByPredicate(entity => entity.Login == user.Login || entity.Email == user.Email).Any())
     {
         ModelState.AddModelError("", "This login already used");
         return View(avm);
     }
     RoleEntity role = roleService.GetByPredicate(entity => entity.Name == "user").First();
     userService.CreateUser(user);
     user = userService.GetByLogin(user.Login);
     userService.SetRole(user, role);
     LogIn(user.Login);
     SessionPersister.Username = user.Login;
     return Redirect("/Home/Index");
 }
 public IEnumerable<RoleEntity> GetUsersRoles(UserEntity e)
 {
     return roleRepository.GetUsersRoles(e.ToDalUser()).Select(role => role.ToBllRole());
 }
 public UsersTestsEntity GetLastResult(UserEntity user)
 {
     return usersTestsRepository.GetLastResult(user.ToDalUser()).ToBllUsersTest();
 }
 public void FinishTest(UserEntity user)
 {
     usersTestsRepository.FinishTest(user.ToDalUser());
     uow.Commit();
 }
 public void StartTest(UserEntity user, TestEntity test)
 {
     usersTestsRepository.StartTest(user.ToDalUser(), test.ToDalTest());
     uow.Commit();
 }
 public bool IsUserTested(UserEntity user)
 {
     return usersTestsRepository.IsUserTested(user.ToDalUser());
 }
 public void UpdateUser(UserEntity user)
 {
     userRepository.Update(user.ToDalUser());
     uow.Commit();
 }
 public void SetRole(UserEntity user, RoleEntity role)
 {
     userRepository.SetRole(user.ToDalUser(), role.ToDalRole());
     uow.Commit();
 }
 public ActionResult Login(AuthenticationViewModel avm)
 {
     if (!ModelState.IsValid)
     {
         ModelState.AddModelError("", "Invalid data");
         return View(avm);
     }
     UserEntity user = new UserEntity()
     {
         Login = avm.Login,
         PasswordHash = userService.GetHash(avm.Password)
     };
     if (userService.ValidAuthentication(user.Login, user.PasswordHash))
     {
         SessionPersister.Username = user.Login;
         LogIn(user.Login);
         return Redirect("/Home/Index");
     }
     else
     {
         ModelState.AddModelError("", "Wrong login or password");
         return View(avm);
     }
 }
 public void SetCoauthor(UserEntity user, TestEntity test)
 {
     testRepository.SetCoauthor(user.ToDalUser(), test.ToDalTest());
     uow.Commit();
 }
 public bool AllowedUser(TestEntity test, UserEntity user)
 {
     return testRepository.AllowedUser(test.ToDalTest(), user.ToDalUser());
 }
 public IEnumerable<TestEntity> GetByAuthor(UserEntity user)
 {
     return testRepository.GetByAuthor(user.ToDalUser()).Select(test => test.ToBllTest());
 }
 public CustomPrincipal(string login)
 {
     user = userService.GetByLogin(login);
     this.Identity = new GenericIdentity(login);
 }
 public CustomPrincipal(UserEntity user)
 {
     this.user = user;
     this.Identity = new GenericIdentity(user.Login);
 }