mirror of
https://github.com/project-redbud/FunGame-Server.git
synced 2025-12-05 00:06:03 +00:00
找回密码 第二部分 (#19)
This commit is contained in:
parent
ac2cf9ee67
commit
49c2f9e065
@ -170,7 +170,7 @@ bool Read(ClientSocket socket)
|
||||
foreach (SocketObject read in socket.ReceiveArray())
|
||||
{
|
||||
SocketMessageType type = read.SocketType;
|
||||
if (type == SocketMessageType.Connect)
|
||||
if (type == SocketMessageType.RunTime_Connect)
|
||||
{
|
||||
if (read.Parameters.Length > 0)
|
||||
{
|
||||
@ -190,7 +190,7 @@ bool Send(ClientSocket socket, Guid Token)
|
||||
{
|
||||
// 发送消息给客户端
|
||||
string msg = Config.ServerName + ";" + Config.ServerNotice;
|
||||
if (socket.Send(SocketMessageType.Connect, msg, Token) == SocketResult.Success)
|
||||
if (socket.Send(SocketMessageType.RunTime_Connect, msg, Token) == SocketResult.Success)
|
||||
{
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(socket.ClientIP) + " <- " + "已确认连接");
|
||||
return true;
|
||||
@ -204,7 +204,7 @@ bool SendRefuseConnect(ClientSocket socket, string msg)
|
||||
{
|
||||
// 发送消息给客户端
|
||||
msg = $"连接被拒绝,如有疑问请联系服务器管理员:{msg}";
|
||||
if (socket.Send(SocketMessageType.Connect, msg) == SocketResult.Success)
|
||||
if (socket.Send(SocketMessageType.RunTime_Connect, msg) == SocketResult.Success)
|
||||
{
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(socket.ClientIP) + " <- " + "已拒绝连接");
|
||||
return true;
|
||||
|
||||
142
FunGame.Server/Models/DataRequestHandler.cs
Normal file
142
FunGame.Server/Models/DataRequestHandler.cs
Normal file
@ -0,0 +1,142 @@
|
||||
using System.Collections;
|
||||
using Milimoe.FunGame.Core.Api.Utility;
|
||||
using Milimoe.FunGame.Core.Library.Common.Network;
|
||||
using Milimoe.FunGame.Core.Library.Constant;
|
||||
using Milimoe.FunGame.Core.Library.SQLScript.Common;
|
||||
using Milimoe.FunGame.Core.Library.SQLScript.Entity;
|
||||
using Milimoe.FunGame.Server.Others;
|
||||
using Milimoe.FunGame.Server.Utility;
|
||||
|
||||
namespace Milimoe.FunGame.Server.Model
|
||||
{
|
||||
public partial class ServerModel
|
||||
{
|
||||
/// <summary>
|
||||
/// 接收并验证找回密码时的验证码
|
||||
/// </summary>
|
||||
/// <param name="RequestData"></param>
|
||||
/// <param name="ResultData"></param>
|
||||
private void DataRequest_ForgetPassword(Hashtable RequestData, Hashtable ResultData)
|
||||
{
|
||||
string msg = "无法找回您的密码,请稍后再试。"; // 返回的验证信息
|
||||
if (RequestData.Count >= 2)
|
||||
{
|
||||
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + ServerHelper.MakeClientName(ClientName, User) + " -> ForgetPassword");
|
||||
string username = NetworkUtility.JsonDeserializeFromHashtable<string>(RequestData, ForgetVerifyCodes.Column_Username) ?? "";
|
||||
string email = NetworkUtility.JsonDeserializeFromHashtable<string>(RequestData, ForgetVerifyCodes.Column_Email) ?? "";
|
||||
string verifycode = NetworkUtility.JsonDeserializeFromHashtable<string>(RequestData, ForgetVerifyCodes.Column_ForgetVerifyCode) ?? "";
|
||||
|
||||
// 客户端发来了验证码就进行验证,没有发就生成
|
||||
if (verifycode.Trim() != "")
|
||||
{
|
||||
// 先检查验证码
|
||||
SQLHelper.ExecuteDataSet(ForgetVerifyCodes.Select_ForgetVerifyCode(username, email, verifycode));
|
||||
if (SQLHelper.Result == SQLResult.Success)
|
||||
{
|
||||
// 检查验证码是否过期
|
||||
DateTime SendTime = (DateTime)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_SendTime];
|
||||
if ((DateTime.Now - SendTime).TotalMinutes >= 10)
|
||||
{
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 验证码已过期");
|
||||
msg = "此验证码已过期,请重新找回密码。";
|
||||
SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email));
|
||||
}
|
||||
else
|
||||
{
|
||||
// 检查验证码是否正确
|
||||
if (ForgetVerify.Equals(SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_ForgetVerifyCode]))
|
||||
{
|
||||
ServerHelper.WriteLine("[ForgerPassword] UserName: " + username + " Email: " + email);
|
||||
SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email));
|
||||
msg = "";
|
||||
}
|
||||
else msg = "验证码不正确,请重新输入!";
|
||||
}
|
||||
}
|
||||
else msg = "验证码不正确,请重新输入!";
|
||||
}
|
||||
else
|
||||
{
|
||||
// 检查账号和邮箱是否匹配
|
||||
SQLHelper.ExecuteDataSet(UserQuery.Select_CheckEmailWithUsername(username, email));
|
||||
if (SQLHelper.Result != SQLResult.Success)
|
||||
{
|
||||
msg = "此邮箱未绑定此账号,请重试!";
|
||||
}
|
||||
else
|
||||
{
|
||||
// 检查验证码是否发送过和是否过期
|
||||
SQLHelper.ExecuteDataSet(ForgetVerifyCodes.Select_HasSentForgetVerifyCode(username, email));
|
||||
if (SQLHelper.Result != SQLResult.Success || (DateTime.Now - ((DateTime)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_SendTime])).TotalMinutes >= 10)
|
||||
{
|
||||
// 发送验证码,需要先删除之前过期的验证码
|
||||
SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email));
|
||||
ForgetVerify = Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 6);
|
||||
SQLHelper.Execute(ForgetVerifyCodes.Insert_ForgetVerifyCode(username, email, ForgetVerify));
|
||||
if (SQLHelper.Result == SQLResult.Success)
|
||||
{
|
||||
if (MailSender != null)
|
||||
{
|
||||
// 发送验证码
|
||||
string ServerName = Config.ServerName;
|
||||
string Subject = $"[{ServerName}] FunGame 找回密码验证码";
|
||||
string Body = $"亲爱的 {username}, <br/> 您正在找回[{ServerName}]账号的密码,您的验证码是 {ForgetVerify} ,10分钟内有效,请及时输入!<br/><br/>{ServerName}<br/>{DateTimeUtility.GetDateTimeToString(TimeType.DateOnly)}";
|
||||
string[] To = new string[] { email };
|
||||
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
|
||||
{
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 已向{email}发送验证码:{ForgetVerify}");
|
||||
msg = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 无法发送验证码");
|
||||
ServerHelper.WriteLine(MailSender.ErrorMsg);
|
||||
}
|
||||
}
|
||||
else // 不使用MailSender的情况
|
||||
{
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 验证码为:{ForgetVerify},请服务器管理员告知此用户");
|
||||
msg = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// 发送过验证码且验证码没有过期
|
||||
string ForgetVerifyCode = (string)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_ForgetVerifyCode];
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 十分钟内已向{email}发送过验证码:{ForgetVerifyCode}");
|
||||
msg = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
ResultData.Add("msg", msg);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新用户的密码
|
||||
/// </summary>
|
||||
/// <param name="RequestData"></param>
|
||||
/// <param name="ResultData"></param>
|
||||
private void DataRequest_UpdatePassword(Hashtable RequestData, Hashtable ResultData)
|
||||
{
|
||||
string msg = "无法更新您的密码,请稍后再试。";
|
||||
if (RequestData.Count >= 2)
|
||||
{
|
||||
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + ServerHelper.MakeClientName(ClientName, User) + " -> UpdatePassword");
|
||||
string username = NetworkUtility.JsonDeserializeFromHashtable<string>(RequestData, UserQuery.Column_Username) ?? "";
|
||||
string password = NetworkUtility.JsonDeserializeFromHashtable<string>(RequestData, UserQuery.Column_Password) ?? "";
|
||||
if (username.Trim() != "" && password.Trim() != "")
|
||||
{
|
||||
SQLHelper.Execute(UserQuery.Update_Password(username, password));
|
||||
if (SQLHelper.Success)
|
||||
{
|
||||
// 更新成功返回空值
|
||||
msg = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
ResultData.Add("msg", msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -13,7 +13,7 @@ using Milimoe.FunGame.Server.Utility;
|
||||
|
||||
namespace Milimoe.FunGame.Server.Model
|
||||
{
|
||||
public class ServerModel : IServerModel
|
||||
public partial class ServerModel : IServerModel
|
||||
{
|
||||
/**
|
||||
* Public
|
||||
@ -71,7 +71,7 @@ namespace Milimoe.FunGame.Server.Model
|
||||
string msg = "";
|
||||
|
||||
// 验证Token
|
||||
if (type != SocketMessageType.HeartBeat && token != Token)
|
||||
if (type != SocketMessageType.RunTime_HeartBeat && token != Token)
|
||||
{
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 使用了非法方式传输消息,服务器拒绝回应 -> [" + ServerSocket.GetTypeString(type) + "] ");
|
||||
return false;
|
||||
@ -83,8 +83,8 @@ namespace Milimoe.FunGame.Server.Model
|
||||
}
|
||||
|
||||
// 如果不等于这些Type,就不会输出一行记录。这些Type有特定的输出。
|
||||
SocketMessageType[] IgnoreType = new SocketMessageType[] { SocketMessageType.HeartBeat, SocketMessageType.Login, SocketMessageType.IntoRoom,
|
||||
SocketMessageType.Chat};
|
||||
SocketMessageType[] IgnoreType = new SocketMessageType[] { SocketMessageType.RunTime_HeartBeat, SocketMessageType.RunTime_Login, SocketMessageType.Main_IntoRoom,
|
||||
SocketMessageType.Main_Chat};
|
||||
if (!IgnoreType.Contains(type))
|
||||
{
|
||||
if (msg.Trim() == "")
|
||||
@ -95,11 +95,11 @@ namespace Milimoe.FunGame.Server.Model
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case SocketMessageType.GetNotice:
|
||||
case SocketMessageType.Main_GetNotice:
|
||||
msg = Config.ServerNotice;
|
||||
break;
|
||||
|
||||
case SocketMessageType.Login:
|
||||
case SocketMessageType.RunTime_Login:
|
||||
CheckLoginKey = Guid.Empty;
|
||||
if (args != null)
|
||||
{
|
||||
@ -138,7 +138,7 @@ namespace Milimoe.FunGame.Server.Model
|
||||
}
|
||||
return Send(socket, type, CheckLoginKey, msg);
|
||||
|
||||
case SocketMessageType.CheckLogin:
|
||||
case SocketMessageType.RunTime_CheckLogin:
|
||||
if (args != null && args.Length > 0)
|
||||
{
|
||||
Guid checkloginkey = SocketObject.GetParam<Guid>(0);
|
||||
@ -160,7 +160,7 @@ namespace Milimoe.FunGame.Server.Model
|
||||
}
|
||||
return Send(socket, type, CheckLoginKey.ToString());
|
||||
|
||||
case SocketMessageType.Logout:
|
||||
case SocketMessageType.RunTime_Logout:
|
||||
Guid checklogoutkey = Guid.Empty;
|
||||
if (args != null && args.Length > 0)
|
||||
{
|
||||
@ -178,15 +178,15 @@ namespace Milimoe.FunGame.Server.Model
|
||||
ServerHelper.WriteLine("客户端发送了错误的秘钥,不允许本次登出。");
|
||||
return Send(socket, type, checklogoutkey);
|
||||
|
||||
case SocketMessageType.Disconnect:
|
||||
case SocketMessageType.RunTime_Disconnect:
|
||||
msg = "你已成功断开与服务器的连接: " + Config.ServerName + "。 ";
|
||||
break;
|
||||
|
||||
case SocketMessageType.HeartBeat:
|
||||
case SocketMessageType.RunTime_HeartBeat:
|
||||
msg = "";
|
||||
break;
|
||||
|
||||
case SocketMessageType.IntoRoom:
|
||||
case SocketMessageType.Main_IntoRoom:
|
||||
msg = "-1";
|
||||
if (args != null && args.Length > 0) msg = SocketObject.GetParam<string>(0)!;
|
||||
RoomID = msg;
|
||||
@ -200,14 +200,14 @@ namespace Milimoe.FunGame.Server.Model
|
||||
{
|
||||
if (Client != null && User.Id != 0)
|
||||
{
|
||||
Client.Send(Client.Socket!, SocketMessageType.Chat, User.Username, DateTimeUtility.GetNowShortTime() + " [ " + User.Username + " ] 进入了房间。");
|
||||
Client.Send(Client.Socket!, SocketMessageType.Main_Chat, User.Username, DateTimeUtility.GetNowShortTime() + " [ " + User.Username + " ] 进入了房间。");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case SocketMessageType.Chat:
|
||||
case SocketMessageType.Main_Chat:
|
||||
if (args != null && args.Length > 0) msg = SocketObject.GetParam<string>(0)!;
|
||||
ServerHelper.WriteLine(msg);
|
||||
foreach (ServerModel Client in Server.GetUsersList.Cast<ServerModel>())
|
||||
@ -216,13 +216,13 @@ namespace Milimoe.FunGame.Server.Model
|
||||
{
|
||||
if (Client != null && User.Id != 0)
|
||||
{
|
||||
Client.Send(Client.Socket!, SocketMessageType.Chat, User.Username, DateTimeUtility.GetNowShortTime() + msg);
|
||||
Client.Send(Client.Socket!, SocketMessageType.Main_Chat, User.Username, DateTimeUtility.GetNowShortTime() + msg);
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
|
||||
case SocketMessageType.Reg:
|
||||
case SocketMessageType.RunTime_Reg:
|
||||
if (args != null)
|
||||
{
|
||||
string? username = "", email = "";
|
||||
@ -289,7 +289,7 @@ namespace Milimoe.FunGame.Server.Model
|
||||
}
|
||||
return true;
|
||||
|
||||
case SocketMessageType.CheckReg:
|
||||
case SocketMessageType.RunTime_CheckReg:
|
||||
if (args != null)
|
||||
{
|
||||
string? username = "", password = "", email = "", verifycode = "";
|
||||
@ -340,7 +340,7 @@ namespace Milimoe.FunGame.Server.Model
|
||||
else msg = "注册失败!";
|
||||
return Send(socket, type, false, msg);
|
||||
|
||||
case SocketMessageType.UpdateRoom:
|
||||
case SocketMessageType.Main_UpdateRoom:
|
||||
Config.RoomList ??= new();
|
||||
Config.RoomList.Clear();
|
||||
DataSet DsRoomTemp = new(), DsUserTemp = new();
|
||||
@ -350,7 +350,7 @@ namespace Milimoe.FunGame.Server.Model
|
||||
Config.RoomList.AddRooms(rooms); // 更新服务器中的房间列表
|
||||
return Send(socket, type, rooms); // 传RoomList
|
||||
|
||||
case SocketMessageType.CreateRoom:
|
||||
case SocketMessageType.Main_CreateRoom:
|
||||
msg = "-1";
|
||||
if (args != null)
|
||||
{
|
||||
@ -368,7 +368,7 @@ namespace Milimoe.FunGame.Server.Model
|
||||
GameMode.GameMode_Team => RoomType.Team,
|
||||
GameMode.GameMode_MixHasPass => RoomType.MixHasPass,
|
||||
GameMode.GameMode_TeamHasPass => RoomType.TeamHasPass,
|
||||
_ => RoomType.None
|
||||
_ => RoomType.All
|
||||
};
|
||||
string roomid = Verification.CreateVerifyCode(VerifyCodeType.MixVerifyCode, 7).ToUpper();
|
||||
SQLHelper.Execute(RoomQuery.Insert_CreateRoom(roomid, userid, roomtype, password ?? ""));
|
||||
@ -380,7 +380,7 @@ namespace Milimoe.FunGame.Server.Model
|
||||
}
|
||||
break;
|
||||
|
||||
case SocketMessageType.QuitRoom:
|
||||
case SocketMessageType.Main_QuitRoom:
|
||||
if (args != null)
|
||||
{
|
||||
string? roomid = "";
|
||||
@ -422,10 +422,10 @@ namespace Milimoe.FunGame.Server.Model
|
||||
{
|
||||
if (Client != null && User.Id != 0)
|
||||
{
|
||||
Client.Send(Client.Socket!, SocketMessageType.Chat, User.Username, DateTimeUtility.GetNowShortTime() + " [ " + User.Username + " ] 离开了房间。");
|
||||
Client.Send(Client.Socket!, SocketMessageType.Main_Chat, User.Username, DateTimeUtility.GetNowShortTime() + " [ " + User.Username + " ] 离开了房间。");
|
||||
if (UpdateRoomMaster.Id != 0 && Room.Roomid != "-1")
|
||||
{
|
||||
Client.Send(Client.Socket!, SocketMessageType.UpdateRoomMaster, User, Room);
|
||||
Client.Send(Client.Socket!, SocketMessageType.Room_UpdateRoomMaster, User, Room);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -436,13 +436,13 @@ namespace Milimoe.FunGame.Server.Model
|
||||
}
|
||||
return Send(socket, type, false);
|
||||
|
||||
case SocketMessageType.MatchRoom:
|
||||
case SocketMessageType.Main_MatchRoom:
|
||||
break;
|
||||
|
||||
case SocketMessageType.ChangeRoomSetting:
|
||||
case SocketMessageType.Room_ChangeRoomSetting:
|
||||
break;
|
||||
|
||||
case SocketMessageType.GetRoomPlayerCount:
|
||||
case SocketMessageType.Room_GetRoomPlayerCount:
|
||||
if (args != null)
|
||||
{
|
||||
string? roomid = "-1";
|
||||
@ -465,6 +465,45 @@ namespace Milimoe.FunGame.Server.Model
|
||||
}
|
||||
}
|
||||
|
||||
public bool DataRequestHandler(ClientSocket socket, SocketObject SocketObject)
|
||||
{
|
||||
Hashtable ResultData = new();
|
||||
DataRequestType type = DataRequestType.UnKnown;
|
||||
|
||||
if (SocketObject.Parameters.Length > 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
type = SocketObject.GetParam<DataRequestType>(0);
|
||||
Hashtable RequestData = SocketObject.GetParam<Hashtable>(1) ?? new();
|
||||
|
||||
SQLHelper.NewTransaction();
|
||||
switch (type)
|
||||
{
|
||||
case DataRequestType.UnKnown:
|
||||
break;
|
||||
|
||||
case DataRequestType.Login_GetFindPasswordVerifyCode:
|
||||
DataRequest_ForgetPassword(RequestData, ResultData);
|
||||
break;
|
||||
|
||||
case DataRequestType.Login_UpdatePassword:
|
||||
DataRequest_UpdatePassword(RequestData, ResultData);
|
||||
break;
|
||||
}
|
||||
SQLHelper.Commit();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
ServerHelper.Error(e);
|
||||
SQLHelper.Rollback();
|
||||
return Send(socket, SocketMessageType.DataRequest, type, ResultData);
|
||||
}
|
||||
}
|
||||
|
||||
return Send(socket, SocketMessageType.DataRequest, type, ResultData);
|
||||
}
|
||||
|
||||
public bool Send(ClientSocket socket, SocketMessageType type, params object[] objs)
|
||||
{
|
||||
// 发送消息给客户端
|
||||
@ -474,14 +513,14 @@ namespace Milimoe.FunGame.Server.Model
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
case SocketMessageType.Logout:
|
||||
case SocketMessageType.RunTime_Logout:
|
||||
RemoveUser();
|
||||
break;
|
||||
case SocketMessageType.Disconnect:
|
||||
case SocketMessageType.RunTime_Disconnect:
|
||||
RemoveUser();
|
||||
Close();
|
||||
break;
|
||||
case SocketMessageType.Chat:
|
||||
case SocketMessageType.Main_Chat:
|
||||
return true;
|
||||
}
|
||||
object obj = objs[0];
|
||||
@ -511,128 +550,6 @@ namespace Milimoe.FunGame.Server.Model
|
||||
_ClientName = ClientName;
|
||||
}
|
||||
|
||||
private bool DataRequestHandler(ClientSocket socket, SocketObject SocketObject)
|
||||
{
|
||||
Hashtable RequestData = new();
|
||||
Hashtable ResultData = new();
|
||||
DataRequestType type = DataRequestType.UnKnown;
|
||||
|
||||
if (SocketObject.Parameters.Length > 0)
|
||||
{
|
||||
try
|
||||
{
|
||||
type = SocketObject.GetParam<DataRequestType>(0);
|
||||
RequestData = SocketObject.GetParam<Hashtable>(1) ?? new();
|
||||
switch (type)
|
||||
{
|
||||
case DataRequestType.UnKnown:
|
||||
break;
|
||||
|
||||
case DataRequestType.GetFindPasswordVerifyCode:
|
||||
if (RequestData.Count >= 2)
|
||||
{
|
||||
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(SocketMessageType.DataRequest) + "] " + ServerHelper.MakeClientName(ClientName, User) + " -> ForgetPassword");
|
||||
string username = (string?)(RequestData[ForgetVerifyCodes.Column_Username]) ?? "";
|
||||
string email = (string?)(RequestData[ForgetVerifyCodes.Column_Email]) ?? "";
|
||||
string verifycode = (string?)RequestData[ForgetVerifyCodes.Column_ForgetVerifyCode] ?? "";
|
||||
string msg = ""; // 返回错误信息
|
||||
// 客户端发来了验证码就进行验证,没有发就生成
|
||||
if (verifycode.Trim() != "")
|
||||
{
|
||||
// 先检查验证码
|
||||
SQLHelper.ExecuteDataSet(ForgetVerifyCodes.Select_ForgetVerifyCode(username, email, verifycode));
|
||||
if (SQLHelper.Result == SQLResult.Success)
|
||||
{
|
||||
// 检查验证码是否过期
|
||||
DateTime SendTime = (DateTime)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_SendTime];
|
||||
if ((DateTime.Now - SendTime).TotalMinutes >= 10)
|
||||
{
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 验证码已过期");
|
||||
msg = "此验证码已过期,请重新找回密码。";
|
||||
SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email));
|
||||
}
|
||||
else
|
||||
{
|
||||
// 找回密码
|
||||
if (ForgetVerify.Equals(SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_ForgetVerifyCode]))
|
||||
{
|
||||
ServerHelper.WriteLine("[ForgerPassword] UserName: " + username + " Email: " + email);
|
||||
// TODO. 等更新UpdatePassword
|
||||
if (true)
|
||||
{
|
||||
//msg = "找回密码!请牢记您的新密码!";
|
||||
//SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email), out _);
|
||||
}
|
||||
//else msg = "服务器无法处理您的注册,注册失败!";
|
||||
}
|
||||
else msg = "验证码不正确,请重新输入!";
|
||||
}
|
||||
}
|
||||
else msg = "无法找回您的密码,请稍后再试。";
|
||||
}
|
||||
else
|
||||
{
|
||||
// 检查验证码是否发送过
|
||||
SQLHelper.ExecuteDataSet(ForgetVerifyCodes.Select_HasSentForgetVerifyCode(username, email));
|
||||
if (SQLHelper.Result == SQLResult.Success)
|
||||
{
|
||||
DateTime SendTime = (DateTime)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_SendTime];
|
||||
string ForgetVerifyCode = (string)SQLHelper.DataSet.Tables[0].Rows[0][ForgetVerifyCodes.Column_ForgetVerifyCode];
|
||||
if ((DateTime.Now - SendTime).TotalMinutes < 10)
|
||||
{
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 十分钟内已向{email}发送过验证码:{ForgetVerifyCode}");
|
||||
}
|
||||
else
|
||||
{
|
||||
// 发送验证码,需要先删除之前过期的验证码
|
||||
SQLHelper.Execute(ForgetVerifyCodes.Delete_ForgetVerifyCode(username, email));
|
||||
ForgetVerify = Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 6);
|
||||
SQLHelper.Execute(ForgetVerifyCodes.Insert_ForgetVerifyCode(username, email, ForgetVerify));
|
||||
if (SQLHelper.Result == SQLResult.Success)
|
||||
{
|
||||
if (MailSender != null)
|
||||
{
|
||||
// 发送验证码
|
||||
string ServerName = Config.ServerName;
|
||||
string Subject = $"[{ServerName}] FunGame 找回密码验证码";
|
||||
string Body = $"亲爱的 {username}, <br/> 您正在找回[{ServerName}]账号的密码,您的验证码是 {ForgetVerify} ,10分钟内有效,请及时输入!<br/><br/>{ServerName}<br/>{DateTimeUtility.GetDateTimeToString(TimeType.DateOnly)}";
|
||||
string[] To = new string[] { email };
|
||||
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
|
||||
{
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 已向{email}发送验证码:{ForgetVerify}");
|
||||
}
|
||||
else
|
||||
{
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + " 无法发送验证码");
|
||||
ServerHelper.WriteLine(MailSender.ErrorMsg);
|
||||
}
|
||||
}
|
||||
else // 不使用MailSender的情况
|
||||
{
|
||||
ServerHelper.WriteLine(ServerHelper.MakeClientName(ClientName, User) + $" 验证码为:{ForgetVerify},请服务器管理员告知此用户");
|
||||
}
|
||||
}
|
||||
else msg = "无法找回您的密码,请稍后再试。";
|
||||
}
|
||||
}
|
||||
else msg = "无法找回您的密码,请稍后再试。";
|
||||
}
|
||||
ResultData.Add("msg", msg);
|
||||
}
|
||||
else ResultData.Add("msg", "无法找回您的密码,请稍后再试。");
|
||||
break;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
ServerHelper.Error(e);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return Send(socket, SocketMessageType.DataRequest, type, ResultData);
|
||||
}
|
||||
|
||||
private void KickUser()
|
||||
{
|
||||
if (User.Id != 0)
|
||||
@ -642,7 +559,7 @@ namespace Milimoe.FunGame.Server.Model
|
||||
{
|
||||
ServerHelper.WriteLine("OnlinePlayers: 玩家 " + user + " 重复登录!");
|
||||
ServerModel serverTask = (ServerModel)Server.GetUser(user);
|
||||
serverTask?.Send(serverTask.Socket!, SocketMessageType.ForceLogout, serverTask.CheckLoginKey, "您的账号在别处登录,已强制下线。");
|
||||
serverTask?.Send(serverTask.Socket!, SocketMessageType.RunTime_ForceLogout, serverTask.CheckLoginKey, "您的账号在别处登录,已强制下线。");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
7
FunGame.Server/Models/SocketMessageHandler.cs
Normal file
7
FunGame.Server/Models/SocketMessageHandler.cs
Normal file
@ -0,0 +1,7 @@
|
||||
namespace Milimoe.FunGame.Server.Model
|
||||
{
|
||||
public partial class ServerModel
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user