using Server.System; using Newtonsoft.Json; using Server.SQL; namespace Server.Service { public class Login : AbstractService { private LoginReq req; public override string Process() { UserSQL userSql = new UserSQL(); User user; Console.WriteLine(req.uuid); bool isNewUser = false; if (req.uuid == "") { //최초 메일 로그인 //게스트 로그인은 허용하지 않고 무조건 구글로그인 혹은 마스토돈 로그인만 가능하게 처리하기 user = userSql.SelectMail(req.mail); //현재 닉네임을 설정하는 곳이 없기에 임시 작업 if (user != null) { user.nickname = ""; } } else { //기존 유저 로그인 user = userSql.SelectUuid(req.uuid); //현재 닉네임을 설정하는 곳이 없기에 임시 작업 user.nickname = ""; } if(user == null) { #region 신규유저 생성 if (req.mail == "") { throw new RuntimeException("not User", Error.nodata); } isNewUser = true; user = new User(); user.mail = req.mail; user.uuid = Guid.NewGuid().ToString(); user.nickname = ""; #endregion #region 신규 덱, 초기 유닛 지급 #endregion } SaveQurry(userSql, user, isNewUser); return makeResp(user); } public void SaveQurry(UserSQL userSql, User user, bool isNewUser) { if (isNewUser) { userSql.Insert(user); } else { userSql.Update(user); } } public override Protocol ProtocolValue() => Protocol.Login; public override Req Requst(string json) { req = JsonConvert.DeserializeObject(json); return req; } private string makeResp(User user) { LoginResp resp = new LoginResp(); resp.nickname = user.nickname; resp.uuid = user.uuid; resp.status = 200; return resp.ToJson(); } } public class LoginReq : Req { public string mail; public string uuid; public override bool IsReceivedAllField() { if(mail == null && uuid == null) return false; return true; } } public class LoginResp : Resp { public string uuid; public string nickname; } }