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("유효하지 않은 토큰입니다."); } } }
private static void Server_Receive(ESocket socket, JObject Message) { OnlineUser user = users[socket]; LogSystem.AddLog(-1, "Program - Receive", Message.ToString()); switch ((int)Message["type"]) { case PacketType.Login: KakaoModule.KakaoLogin(user, (string)Message["token"]); break; case PacketType.Debug: LogSystem.AddLog(0, "Program", (string)Message["message"]); break; case PacketType.RestaurantInfo: if (Message["no"] == null) { user.Message("음식점 고유 번호값이 존재하지 않습니다."); } else { JObject json = Module.Handler.Restaurant.Infomation((int)Message["no"]); if (json == null) { user.Message("해당하는 번호의 음식점이 없습니다."); } else { user.Send(json); } } break; case PacketType.RestaurantWaitingList: user.Send(Module.Handler.Restaurant.WaitingList()); break; case PacketType.GetRestaurantID: user.Send(Module.Handler.Restaurant.GetID((string)Message["title"])); break; case PacketType.PositionUpdate: user.position = new Position(Message); break; case PacketType.ClickLikes: Module.Handler.Restaurant.ClickLike(user, (int)Message["no"]); break; case PacketType.GetLikes: user.Send(Module.Handler.Restaurant.StateLikes(user, (int)Message["no"])); break; case PacketType.RestaurantRankingList: user.Send(Module.Handler.Restaurant.RankingList((string)Message["category"])); break; case PacketType.ReadBoard: user.Send(Module.Handler.Board.GetList()); break; case PacketType.WriteBoardItem: if (Message.ContainsKey("parent_no")) { Module.Handler.Board.WriteArticle(user, (string)Message["content"], (int)Message["parent_no"]); } else { Module.Handler.Board.WriteArticle(user, (string)Message["content"]); } break; case PacketType.ReadComments: user.Send(Module.Handler.Board.GetCommentList((int)Message["no"])); break; case PacketType.RequestWaitingToServer: Module.Handler.Restaurant.AddWaitingListener(user, (int)Message["no"]); break; case PacketType.ContainsWaitingListener: user.Send(Module.Handler.Restaurant.GetContainsWaitingListener(user, (int)Message["no"])); break; case PacketType.RequestWaitingToUser: Module.Handler.Restaurant.UpdateWaiting(user, (int)Message["no"], (int)Message["time"]); break; case PacketType.RestaurantRecommendList: user.Send(Module.Handler.Restaurant.RecommendList(user.position)); break; } }