예제 #1
0
        public async Task <IActionResult> Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                User user = await _context.Users.FirstOrDefaultAsync(u => u.Email == model.Email);

                if (user == null)
                {
                    // добавляем пользователя в бд
                    user = new User {
                        Email = model.Email, Password = HashingPassword.GetHashPassword(model.Password)
                    };
                    Role userRole = await _context.Roles.FirstOrDefaultAsync(r => r.Name == "user");

                    if (userRole != null)
                    {
                        user.Role = userRole;
                    }

                    _context.Users.Add(user);
                    await _context.SaveChangesAsync();

                    await Authenticate(user); // аутентификация

                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    ModelState.AddModelError("", "Некорректные логин и(или) пароль");
                }
            }
            return(View(model));
        }
예제 #2
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity <Player>()
            .HasOne(p => p.Tournament)
            .WithMany(t => t.Players)
            .OnDelete(DeleteBehavior.SetNull);
            modelBuilder.Entity <Location>()
            .HasOne(p => p.Tournament)
            .WithMany(t => t.Locations)
            .OnDelete(DeleteBehavior.SetNull);

            string adminRoleName = "admin";
            string userRoleName  = "user";

            string adminEmail    = "*****@*****.**";
            string adminPassword = HashingPassword.GetHashPassword("123456");

            Role adminRole = new Role {
                Id = 1, Name = adminRoleName
            };
            Role userRole = new Role {
                Id = 2, Name = userRoleName
            };
            User adminUser = new User {
                Id = 1, Email = adminEmail, Password = adminPassword, RoleId = adminRole.Id
            };

            modelBuilder.Entity <Role>().HasData(new Role[] { adminRole, userRole });
            modelBuilder.Entity <User>().HasData(new User[] { adminUser });
            base.OnModelCreating(modelBuilder);
        }
예제 #3
0
        private User[] fillUsers(User admin, int userRoleId)
        {
            var users = new User[31];

            users[0] = admin;
            Random random = new Random();

            for (int i = 0; i < 30; i++)
            {
                int  randomDay   = random.Next(1, 28);
                int  randomMonth = random.Next(1, 12);
                int  randomYear  = random.Next(1990, 2000);
                User user        = new User
                {
                    Id       = 2 + i,
                    Name     = "MockName" + i,
                    Surname  = "MockSurname" + i,
                    Birthday = new DateTime(randomYear, randomMonth, randomDay),
                    Email    = "MockEmail" + i + "@mail.ru",
                    Password = HashingPassword.GetHashPassword("123456"),
                    RoleId   = userRoleId
                };
                users[i + 1] = user;
            }
            return(users);
        }
        public void TestGetHashPasswordWhenMixSimbolResultCorrectHash()
        {
            var password    = "******";
            var hash        = GetHash(password);
            var newPassword = HashingPassword.GetHashPassword(password);

            Assert.AreEqual(hash, newPassword);
        }
        public void TestGetHashPasswordWhenOnlyLettersResultCorrectHash()
        {
            var password    = "******";
            var hash        = GetHash(password);
            var newPassword = HashingPassword.GetHashPassword(password);

            Assert.AreEqual(hash, newPassword);
        }
        public void TestIsValidPasswordWhenPasswordNotEqulasResultFalse()
        {
            var password = "******";
            var hash     = HashingPassword.GetHashPassword(password);

            bool isEqulas = HashingPassword.IsValidPassword(hash, password);

            Assert.True(isEqulas);
        }
        public void TestGetHashPasswordWhenOnlyNumberResultCorrectHash()
        {
            HashingPassword.Init();
            var password    = "******";
            var hash        = GetHash(password);
            var newPassword = HashingPassword.GetHashPassword(password);

            Assert.AreEqual(hash, newPassword);
        }
        public async Task <ActionResult> Login(LoginModel model)
        {
            await HttpContext.SignOutAsync();

            var kek1 = User;

            if (ModelState.IsValid)
            {
                User user         = null;
                var  hashPassword = HashingPassword.GetHashPassword(model.password);

                user = _users.GetAllUsers.FirstOrDefault(item => item.email == model.email && item.password == hashPassword);


                if (user != null)
                {
                    await HttpContext.SignOutAsync();

                    string userRoleString;
                    if (user.role == 0)
                    {
                        userRoleString = "User";
                    }
                    else
                    {
                        userRoleString = "Admin";
                    }

                    var listClaims = new List <Claim>()
                    {
                        new Claim(ClaimTypes.Name, user.name),
                        new Claim(ClaimTypes.Email, user.email),
                        new Claim(ClaimTypes.Role, userRoleString),
                    };

                    var claimIndentity = new ClaimsIdentity(listClaims, "Claims");
                    var userPrincipal  = new ClaimsPrincipal(new[] { claimIndentity });

                    await HttpContext.SignInAsync(userPrincipal);

                    _logger.LogInformation($"LOG Succecc auth for {user.name}");

                    ViewBag.message = "Успешная авторизация.";
                    return(Redirect("/Home/Index"));
                }
                else
                {
                    ModelState.AddModelError("error", "Неверный логин или пароль!");
                }
            }
            return(View(model));
        }
예제 #9
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity <User>()
            .HasMany(c => c.Chats)
            .WithOne(e => e.User);

            modelBuilder.Entity <Chat>()
            .HasMany(c => c.Messages)
            .WithOne(e => e.Chat);

            modelBuilder.Entity <Chat>()
            .HasMany(c => c.ChatMembers)
            .WithOne(e => e.Chat);

            modelBuilder.Entity <User>()
            .HasMany(c => c.ChatMembers)
            .WithOne(e => e.User);

            string adminRoleName = "admin";
            string userRoleName  = "user";

            string   name     = "Mike";
            string   surname  = "Chernikov";
            DateTime birthDay = new DateTime(1997, 09, 18);

            string adminEmail    = "*****@*****.**";
            string adminPassword = HashingPassword.GetHashPassword("123456");

            Role adminRole = new Role {
                Id = 1, Name = adminRoleName
            };
            Role userRole = new Role {
                Id = 2, Name = userRoleName
            };
            User adminUser = new User {
                Id       = 1,
                Name     = name,
                Surname  = surname,
                Birthday = birthDay,
                Email    = adminEmail,
                Password = adminPassword,
                RoleId   = adminRole.Id
            };

            modelBuilder.Entity <Role>().HasData(new Role[] { adminRole, userRole });

            var users = fillUsers(adminUser, userRole.Id);

            modelBuilder.Entity <User>().HasData(users);

            base.OnModelCreating(modelBuilder);
        }
예제 #10
0
        public void CreateUser(RegisterModel model)
        {
            var hashPassowrd = HashingPassword.GetHashPassword(model.password);

            _appDBContent.User.Add(new User
            {
                email    = model.email,
                password = hashPassowrd,
                role     = 0,
                name     = model.name
            });
            _appDBContent.SaveChanges();
        }
예제 #11
0
        public async Task <IActionResult> Create([Bind("Id,Email,Password,RoleId")] User user)
        {
            initDataView();
            if (ModelState.IsValid)
            {
                user.Password = HashingPassword.GetHashPassword(user.Password);
                _context.Add(user);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            ViewData["RoleId"] = new SelectList(_context.Roles, "Id", "Id", user.RoleId);
            return(View(user));
        }
예제 #12
0
        public async Task <IActionResult> Login(LoginModel model)
        {
            if (ModelState.IsValid)
            {
                User user = await _context.Users
                            .Include(u => u.Role)
                            .FirstOrDefaultAsync(u => u.Email == model.Email && u.Password == HashingPassword.GetHashPassword(model.Password));

                if (user != null)
                {
                    await Authenticate(user);

                    return(RedirectToAction("Index", "Home"));
                }
                ModelState.AddModelError("", "Некорректные логин и(или) пароль");
            }
            return(View(model));
        }
예제 #13
0
 public void TestMethod1()
 {
     HashingPassword.Init();
     HashingPassword.GetHashPassword("21673781264");
 }