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("유효하지 않은 토큰입니다."); } } }
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); }
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("요청이 실패했습니다."); } }
/// <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); }