예제 #1
0
        public UserBase GetUser(int id)
        {
            UserBase user = new UserBase();

            logger.Info("Запрос пользователя №{0}...", id);
            string sql = "SELECT * FROM users WHERE users.id = @id";

            MySqlDataReader rdr = null;

            try {
                mysqlProvider.CheckConnectionAlive();
                MySqlCommand cmd = new MySqlCommand(sql, mysqlProvider.DbConnection);

                cmd.Parameters.AddWithValue("@id", id);

                rdr = cmd.ExecuteReader();

                var valueReader = new DBValueReader(rdr);

                rdr.Read();

                user.Id          = valueReader.GetInt("id", 0);
                user.Name        = valueReader.GetString("name");
                user.Login       = valueReader.GetString("login");
                user.Deactivated = valueReader.GetBoolean("deactivated", false);
                user.Email       = valueReader.GetString("email");
                user.IsAdmin     = valueReader.GetBoolean("admin", false);
                user.Description = valueReader.GetString("description");

                logger.Info("Ok");
                return(user);
            } catch (Exception ex) {
                logger.Error(ex, "Ошибка получения информации о пользователе!");
                throw ex;
            } finally {
                if (rdr != null)
                {
                    rdr.Close();
                }
            }
        }
예제 #2
0
        public Dictionary <string, string> GetExtraFieldValues(int userId, IEnumerable <string> extraFieldNames)
        {
            var result = new Dictionary <string, string>();

            logger.Info("Запрос дополнительных полей пользователя №{0}...", userId);
            string sql = "SELECT * FROM users WHERE users.id = @id";

            MySqlDataReader rdr = null;

            try {
                mysqlProvider.CheckConnectionAlive();
                MySqlCommand cmd = new MySqlCommand(sql, mysqlProvider.DbConnection);

                cmd.Parameters.AddWithValue("@id", userId);

                rdr = cmd.ExecuteReader();

                var valueReader = new DBValueReader(rdr);

                rdr.Read();

                foreach (var fieldName in extraFieldNames)
                {
                    result.Add(fieldName, valueReader.GetString(fieldName, null));
                }

                logger.Info("Ok");
                return(result);
            } catch (Exception ex) {
                logger.Error(ex, "Ошибка получения информации о пользователе!");
                throw ex;
            } finally {
                if (rdr != null)
                {
                    rdr.Close();
                }
            }
        }
예제 #3
0
        private IEnumerable <string> LoadUserPermissions(int userId)
        {
            logger.Info("Загрузка прав пользователя №{0}...", userId);

            if (userId == 0)
            {
                logger.Info("Попытка загрузить права неизвестного пользователя");
                return(new string[0]);
            }
            string sql = "SELECT * FROM permission_preset_user WHERE user_id = @id";

            MySqlDataReader rdr = null;

            try {
                MySqlCommand cmd = new MySqlCommand(sql, mysqlProvider.DbConnection);

                cmd.Parameters.AddWithValue("@id", userId);

                rdr = cmd.ExecuteReader();
                var valueReader = new DBValueReader(rdr);

                var result = new List <string>();
                while (rdr.Read())
                {
                    result.Add(valueReader.GetString("permission_name"));
                }
                return(result);
            } catch (Exception ex) {
                return(new string[0]);
            } finally {
                if (rdr != null)
                {
                    rdr.Close();
                }
            }
        }