Пример #1
0
        public bool Authenticate(string username, string password)
        {
            //find user in database
            TimePunchDatabase.TimePunchEntities dbcontext = new TimePunchDatabase.TimePunchEntities();

            var findUser = (from u in dbcontext.Users
                            where u.Username == username
                            select u).ToArray();

            dbcontext.Dispose();

            if (findUser.Length > 0)
            {
                TimePunchDatabase.User foundUser = findUser[0];
                PasswordHash           ph        = new PasswordHash(Convert.FromBase64String(foundUser.Password));
                if (ph.verify(password))
                {
                    this.User       = foundUser;
                    this.isLoggedIn = true;
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
Пример #2
0
        public UserHoursLabel(MainForm mainForm, TimePunchDatabase.User user, double hours)
        {
            InitializeComponent();
            this.mainForm = mainForm;
            this.user     = user;
            this.hours    = hours;

            nameLabel.Text      = user.LastName + ", " + user.FirstName;
            usernameLabel.Text  = user.Username;
            hoursLinkLabel.Text = String.Format("{0:N2}", hours);
        }
Пример #3
0
 public UserLabel(MainForm mainForm, TimePunchDatabase.User user)
 {
     InitializeComponent();
     this.mainForm = mainForm;
     this.user     = user;
 }
Пример #4
0
        public static void InsertTestData(TimePunchDatabase.TimePunchEntities dbcontext)
        {
            TimePunchDatabase.User newUser = new TimePunchDatabase.User();
            PasswordHash           ph      = new PasswordHash("admin");

            //admin
            newUser.Username  = "******";
            newUser.Password  = Convert.ToBase64String(ph.ToArray());
            newUser.Role      = 0;
            newUser.FirstName = "Admin";
            newUser.LastName  = "smith";

            dbcontext.Users.Add(newUser);

            try
            {
                dbcontext.SaveChanges();
            }
            catch (System.Data.Entity.Infrastructure.DbUpdateException ex)
            {
                Console.WriteLine(ex.Message);
            }
            catch
            {
                Console.WriteLine("Unable to save new user to database");
            }

            //Bypassing ADO because adding multiple rows results in unique constraint errors from db
            SQLiteConnection conn = new SQLiteConnection("DataSource=./TimePunchV2.db");

            conn.Open();
            string sql = "BEGIN TRANSACTION; ";

            //test users
            string[] firstNames = { "Dakota", "Anna", "Jordan", "John", "Dillon", "Tony", "Shinji", "Asuka" };
            string[] lastNames  = { "Clark", "Mazer", "Packard", "Smith", "Burns", "Stark", "Ikari", "Soryu" };
            TimePunchDatabase.User[] newUsers = new TimePunchDatabase.User[firstNames.Length];

            for (int i = 0; i < firstNames.Length; i++)
            {
                string username = firstNames[i] + lastNames[i];
                string password = Convert.ToBase64String(new PasswordHash(username).ToArray());

                sql += String.Format("INSERT INTO Users (Username, Password, FirstName, LastName, Role) VALUES" +
                                     "(\"{0}\", \"{1}\", \"{2}\", \"{3}\", {4});", username, password, firstNames[i], lastNames[i], 1);
            }

            sql += "COMMIT;";
            SQLiteCommand command = new SQLiteCommand(sql, conn);

            command.ExecuteNonQuery();


            //get all the created users
            var users = from user in dbcontext.Users
                        where user.Username != "admin"
                        select user;

            sql = "BEGIN TRANSACTION;";

            //test TimePunches for test users
            foreach (var user in users)
            {
                for (int i = 8; i > 1; i--)
                {
                    TimePunchDatabase.TimePunch newPunch = new TimePunchDatabase.TimePunch();
                    //get random punch times
                    double[] times = new double[4];
                    times = getRandomTimes();

                    newPunch.UserID     = user.ID;
                    newPunch.Date       = DateTime.Today.Date.Subtract(new TimeSpan(i, 0, 0, 0)).ToString("O");
                    newPunch.PunchIn    = Convert.ToDateTime(newPunch.Date).AddHours(times[0]).ToString("o");
                    newPunch.LunchStart = Convert.ToDateTime(newPunch.Date).AddHours(times[1]).ToString("o");
                    newPunch.LunchEnd   = Convert.ToDateTime(newPunch.Date).AddHours(times[2]).ToString("o");
                    newPunch.PunchOut   = Convert.ToDateTime(newPunch.Date).AddHours(times[3]).ToString("o");
                    newPunch.isOpen     = 0;

                    sql += string.Format("INSERT INTO TimePunches (UserID, Date, PunchIn, LunchStart, LunchEnd, PunchOut, isOpen) VALUES " +
                                         "({0}, \"{1}\", \"{2}\", \"{3}\", \"{4}\", \"{5}\", 0);", newPunch.UserID, newPunch.Date, newPunch.PunchIn, newPunch.LunchStart, newPunch.LunchEnd, newPunch.PunchOut);
                }
            }

            sql += "COMMIT;";
            command.CommandText = sql;
            command.ExecuteNonQuery();


            //change start date in settings for 7 days before today
            string payPeriodStartDate = DateTime.Today.Subtract(new TimeSpan(6, 0, 0, 0)).ToString("o");

            command.CommandText = "UPDATE Settings SET payPeriodStartDate=\"" + payPeriodStartDate + "\" WHERE ID=1;";
            command.ExecuteNonQuery();

            conn.Close();
            dbcontext.Dispose();
        }
Пример #5
0
 public void Logout()
 {
     this.User       = null;
     this.isLoggedIn = false;
 }