internal static void removeOne(Account account) { if (account.Login.Equals("admin")) throw new Exception("Невозможно удалить"); account.Deleted = true; DataHelper.UpdateAccount(account); DataHelper.logAction(Actions.EditUser, "Удалён: " + account.Login); }
internal static void changePassword(Account account, string password) { account.PassHash = hashPassword(password); DataHelper.UpdateAccount(account); DataHelper.logAction(Actions.EditUser, "Изменён пароль: " + account.Login); }
internal static void changeRole(Account account, Roles role) { if (account.Login.Equals("admin")) throw new Exception("Невозможно изменить группу"); account.Role = role; DataHelper.UpdateAccount(account); DataHelper.logAction(Actions.EditUser, "Группа изменена: " + account.Login + " -> " + role.ToString()); }
internal static Account AddAccount(string login, string p, Account.Roles role) { using (var con = OpenOrCreateDb()) { using (var command = con.CreateCommand()) { command.CommandText = String.Format("INSERT INTO Accounts(login, role, passhash) VALUES ('{0}',{1},'{2}');", login, (int)role, p); command.ExecuteNonQuery(); return new Account() { Login = login, Role = role, PassHash = p, Name = null, Data = null }; } } }
internal static void UpdateAccount(Account account) { using (var con = OpenOrCreateDb()) { using (var command = con.CreateCommand()) { command.CommandText = String.Format("UPDATE Accounts set role = {1}, passhash = '{2}', deleted = {3} WHERE login = '******';", account.Login, (int)account.Role, account.PassHash, account.Deleted ? 1 : 0); command.ExecuteNonQuery(); } } }
internal static void logAction(SqlConnection con, Account.Actions action, string arguments = null) { using (var command = con.CreateCommand()) { command.CommandText = String.Format("INSERT INTO ActionLog (login, action, arguments, logDateTime) VALUES ('{0}','{1}','{2}', GETDATE())", Account.Current.Login, (int)action, arguments); command.ExecuteNonQuery(); } }
internal static void logAction(Account.Actions action, string arguments = null) { using (var con = OpenOrCreateDb()) { logAction(con, action, arguments); } }
internal static bool LastUserActionTime(string login, Account.Actions action, out DateTime dt) { using (var con = OpenOrCreateDb()) { using (var command = con.CreateCommand()) { command.CommandText = String.Format("select max(logDateTime) from ActionLog where login = '******' and action = {1}", login, (int)action); var result = command.ExecuteScalar(); if (result is DBNull) { dt = DateTime.MaxValue; return false; } else { dt = (DateTime)result; return true; } } } }