94 lines
2.5 KiB
C#
94 lines
2.5 KiB
C#
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);
|
|
|
|
//현재 닉네임을 설정하는 곳이 없기에 임시 작업
|
|
user.nickname = "";
|
|
}
|
|
else
|
|
{
|
|
user = userSql.SelectUuid(req.uuid);
|
|
|
|
//현재 닉네임을 설정하는 곳이 없기에 임시 작업
|
|
user.nickname = "";
|
|
}
|
|
if(user == null)
|
|
{
|
|
#region 신규유저 생성
|
|
if(req.mail == "")
|
|
{
|
|
throw new RuntimeException("not User", Error.nodata);
|
|
}
|
|
user = new User();
|
|
user.mail = req.mail;
|
|
user.uuid = Guid.NewGuid().ToString();
|
|
user.nickname = "";
|
|
#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<LoginReq>(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;
|
|
}
|
|
}
|