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; if (req.uuid == null) { //최초 메일 로그인 //게스트 로그인은 허용하지 않고 무조건 구글로그인 혹은 마스토돈 로그인만 가능하게 처리하기 user = userSql.SelectMail(req.mail); } else { user = userSql.SelectUuid(req.uuid); } if(user == null) { #region 신규유저 생성 //신규 유저인지 구분할 방법이 없기에 이렇게 처리됨. user = new User(); user.mail = req.mail; user.uuid = Guid.NewGuid().ToString(); #endregion #region 신규 덱, 초기 유닛 지급 #endregion } SaveQurry(userSql, user); return makeResp(user); } public void SaveQurry(UserSQL userSql, User user) { userSql.Insert(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; } }