예제 #1
0
        /// <summary>
        /// Reads the list of users from users.t and stores in the database.
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="oldUserFile">users.t</param>
        private static void LoadUsersIntoDatabase(IDbConnection connection, string oldUserFile)
        {
            List <OldUser> users  = new List <OldUser>();
            string         line   = File.ReadAllText(oldUserFile);
            var            tokens = line.Split(' ', StringSplitOptions.RemoveEmptyEntries);

            for (int i = 0; i < tokens.Length; i += 4)
            {
                OldUser user = new OldUser();
                user.userid   = Int32.Parse(tokens[i]);
                user.username = tokens[i + 3];
                users.Add(user);
            }
            Log.Info($"Loaded {users.Count} users from file: {oldUserFile}");

            int count = 0;

            foreach (OldUser user in users)
            {
                string password = RandomString(length: 8);
                var    command  = connection.CreateCommand();
                command.CommandText = $@"
                    INSERT OR IGNORE INTO Users (UserId, UserName, Password)
                    VALUES ({user.userid}, @username, @password)
                ";
                SqliteParameter paramUserName = new SqliteParameter("@username", SqliteType.Text);
                paramUserName.Value = user.username;
                SqliteParameter paramPassword = new SqliteParameter("@password", SqliteType.Text);
                paramPassword.Value = password;
                command.Parameters.Add(paramUserName);
                command.Parameters.Add(paramPassword);
                int rows = command.ExecuteNonQuery();
                if (rows != 1)
                {
                    Log.Warn($"Could not create user {user.username}");
                    continue;
                }
                count++;
            }
            Log.Info($"Added {count} users to the database");
        }
예제 #2
0
        public IActionResult Login(OldUser user)
        {
            User userInDb = context.Users.FirstOrDefault(u => u.email == user.EmailO);

            if (!ModelState.IsValid)
            {
                return(View("Index"));
            }
            if (userInDb == null)
            {
                ModelState.AddModelError("EmailO", "Email not found!");
            }
            else
            {
                var hasher = new PasswordHasher <OldUser>();
                var result = hasher.VerifyHashedPassword(user, userInDb.password, user.PasswordO);
                if (result == 0)
                {
                    ModelState.AddModelError("PassdwordO", "Incorrect Password!");
                }
            }
            HttpContext.Session.SetInt32("UserId", userInDb.UserId);
            return(Redirect("main"));
        }