示例#1
0
        public void Login(string token)
        {
            Program.LogSystem.AddLog(4, "LoginModule", "토큰을 통한 로그인 시도 " + token);

            JObject message = new JObject();

            message["type"] = PacketType.Login;
            if (String.IsNullOrEmpty(token))
            {
                throw new Exception("토큰이 존재하지 않습니다.");
            }
            else
            {
                JObject data = KakaoModule.GetUserInformation(token);
                if (data != null)
                {
                    id   = (int)data["id"];
                    name = (string)data["properties"]["nickname"];
                    img  = (string)data["properties"]["thumbnail_image"];
                    MysqlNode node = new MysqlNode(Program.mysqlOption, "SELECT * FROM user WHERE id = ?id");
                    node["id"] = id;
                    using (node.ExecuteReader())
                    {
                        MysqlNode update = new MysqlNode(Program.mysqlOption, "SQL");

                        if (node.Read())
                        {
                            update.ChangeSql("UPDATE user SET name=?name WHERE id = ?id");
                            if (!node.IsNull("lat") && !node.IsNull("lon"))
                            {
                                position = new Position(node.GetDouble("lat"), node.GetDouble("lon"));
                            }
                        }
                        else
                        {
                            update.ChangeSql("INSERT INTO user (id,name) VALUES (?id, ?name)");
                        }

                        update["id"]   = id;
                        update["name"] = name;
                        update.ExecuteNonQuery();
                    }
                }
                else
                {
                    throw new Exception("유효하지 않은 토큰입니다.");
                }
            }
        }
示例#2
0
        public static JObject GetList(int no = -1)
        {
            MysqlNode node = new MysqlNode(Program.mysqlOption, "SELECT * FROM board_writer WHERE parent_no IS NULL ORDER BY no DESC");

            if (no > 0)
            {
                node.ChangeSql("SELECT * FROM board_writer WHERE no = ?no ORDER BY no DESC");
                node["no"] = no;
            }

            JObject json = new JObject();

            json["type"] = PacketType.ReadBoard;
            JArray list = new JArray();

            using (node.ExecuteReader())
            {
                while (node.Read())
                {
                    JObject item = new JObject();
                    item["no"]      = node.GetInt("no");
                    item["content"] = node.GetString("content");
                    item["time"]    = node.GetString("time");
                    item["user_id"] = node.GetInt("user_id");
                    item["name"]    = node.GetString("name");
                    list.Add(item);
                }
            }
            json["list"] = list;
            return(json);
        }
示例#3
0
        public static void ClickLike(OnlineUser user, int restaurant_no)
        {
            MysqlNode node   = new MysqlNode(Program.mysqlOption, "DELETE FROM rest_likes_data where restaurant_no = ?restaurant_no AND user_id = ?user_id");
            int       result = 0;

            node["restaurant_no"] = restaurant_no;
            node["user_id"]       = user.id;
            result += node.ExecuteNonQuery();
            if (result == 0)
            {
                node.ChangeSql("INSERT INTO rest_likes_data (restaurant_no, user_id) VALUES (?restaurant_no, ?user_id)");
                result += node.ExecuteNonQuery();
            }
            if (result > 0)
            {
                user.Send(StateLikes(user, restaurant_no));
            }
            else
            {
                user.Message("요청이 실패했습니다.");
            }
        }
示例#4
0
        /// <summary>
        /// 인풋 데이터를 기반으로 고유한 ID(아이디)를 반환합니다.
        /// null을 반환한경우(찾을수 없음) ""을 반환한경우(중복)
        /// </summary>
        /// <param name="input">예시: 17이승화, 이승화, 201735861, 201735861이승화, 이승화17, banksemi(아이디)</param>
        public static string GetID(string input)
        {
            // 입력 데이터를 기반으로 MYSQL WEHER 조건문에 내용을 추가해주세요.
            // 주의 : SQL에 직접적으로 input 문자열을 입력하지 말아주세요. ( 보안 문제 )

            // 빈 입력값에 대한 리턴
            if (input == null || input.Trim().Length == 0)
            {
                return(null);
            }

            string number = null;
            string name   = null;

            // input에서 숫자정보를 읽기 위함
            Regex number_regex = new Regex(@"([0-9]+)");
            // input에서 한글(이름) 정보를 읽기 위함
            Regex name_regex = new Regex(@"([가-힣]+)");

            // 숫자 정보를 읽었을 때 일치하는게 있다면 number에 저장 (학번)
            Match match = number_regex.Match(input);

            if (match.Groups.Count > 1)
            {
                number = match.Groups[1].Value;
            }
            // 이름 정보도 동일
            match = name_regex.Match(input);
            if (match.Groups.Count > 1)
            {
                name = match.Groups[1].Value;
            }

            string    SQL  = "SELECT id FROM account";
            MysqlNode node = new MysqlNode(GachonOption.MysqlOption, null);
            Dictionary <string, string> list = new Dictionary <string, string>();

            if (number != null && number.Length == 9) // 학번 정보가 포함된경우 (이때는 추가정보로 이름이 있을수는 있지만 아이디는 아니다.)
            {
                list.Add("studentnumber", "?number");
                node["number"] = number;
                // 학번으로도 고유값이 만족하지만 이름도 같이 입력됬을경우에는 이름과 함께 조건체크를 진행한다. (사용자 실수 방지)
                if (name != null)
                {
                    list.Add("name", "?name");
                    node["name"] = name;
                }
            }
            else // 9자리의 학번정보가 없을때
            {
                if (name == null) // 이름도 입력이 안되면 아이디로 판단
                {
                    list.Add("id", "?id");
                    node["id"] = input;
                }
                else
                {
                    list.Add("name", "?name");
                    node["name"] = name;
                    if (number != null && number.Length == 2) // 2글자의 숫자 정보(학번)이 포함되어있는가
                    {
                        list.Add("studentnumber", "?number");
                        node["number"] = "__" + number + "%";
                    }
                }
            }

            // input에 값에 따라서 select 문장의 형을 다르게 함
            for (int i = 0; i < list.Count; i++)
            {
                if (i == 0)
                {
                    SQL += " WHERE ";
                }
                else
                {
                    SQL += " AND ";
                }
                SQL += list.Keys.ElementAt(i);
                SQL += " LIKE ";
                SQL += list.Values.ElementAt(i);
            }
            node.ChangeSql(SQL);
            node.ExecuteReader();

            // ID를 database에서 검색을 한 후 id값을 반환해줌
            using (node.ExecuteReader())
            {
                if (node.Read())
                {
                    string id        = node.GetString("id");
                    bool   duplicate = node.Read();
                    if (duplicate == false)
                    {
                        return(id);
                    }
                    else
                    {
                        return("");
                    }
                }
            }
            return(null);
        }