mirror of
https://github.com/project-redbud/FunGame-Server.git
synced 2025-04-22 03:59:36 +08:00
完善注册功能
This commit is contained in:
parent
f7ce113c6f
commit
d582dd753f
@ -123,6 +123,7 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
GetUsersCount();
|
GetUsersCount();
|
||||||
// CheckLogin
|
// CheckLogin
|
||||||
SQLHelper.Script = UserQuery.Update_CheckLogin(UserName, socket.ClientIP.Split(':')[0]);
|
SQLHelper.Script = UserQuery.Update_CheckLogin(UserName, socket.ClientIP.Split(':')[0]);
|
||||||
|
SQLHelper.Execute(out _);
|
||||||
return Send(socket, type, UserName, Password);
|
return Send(socket, type, UserName, Password);
|
||||||
}
|
}
|
||||||
ServerHelper.WriteLine("客户端发送了错误的秘钥,不允许本次登录。");
|
ServerHelper.WriteLine("客户端发送了错误的秘钥,不允许本次登录。");
|
||||||
@ -185,26 +186,66 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
if (args.Length > 1) email = NetworkUtility.ConvertJsonObject<string>(args[1]);
|
if (args.Length > 1) email = NetworkUtility.ConvertJsonObject<string>(args[1]);
|
||||||
if (username != null && email != null)
|
if (username != null && email != null)
|
||||||
{
|
{
|
||||||
|
// 先检查账号是否重复
|
||||||
|
SQLHelper.Script = UserQuery.Select_DuplicateUsername(username);
|
||||||
|
SQLHelper.ExecuteDataSet(out SQLResult result);
|
||||||
|
if (result == SQLResult.Success)
|
||||||
|
{
|
||||||
|
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + $" 账号已被注册");
|
||||||
|
return Send(socket, type, RegInvokeType.DuplicateUserName);
|
||||||
|
}
|
||||||
|
// 检查邮箱是否重复
|
||||||
|
SQLHelper.Script = UserQuery.Select_DuplicateEmail(email);
|
||||||
|
SQLHelper.ExecuteDataSet(out result);
|
||||||
|
if (result == SQLResult.Success)
|
||||||
|
{
|
||||||
|
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + $" 邮箱已被注册");
|
||||||
|
return Send(socket, type, RegInvokeType.DuplicateEmail);
|
||||||
|
}
|
||||||
|
// 检查验证码是否发送过
|
||||||
|
SQLHelper.Script = RegVerifyCodes.Select_HasSentRegVerifyCode(username, email);
|
||||||
|
SQLHelper.ExecuteDataSet(out result);
|
||||||
|
if (result == SQLResult.Success)
|
||||||
|
{
|
||||||
|
DateTime RegTime = (DateTime)SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegTime];
|
||||||
|
string RegVerifyCode = (string)SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode];
|
||||||
|
if ((DateTime.Now - RegTime).TotalMinutes < 10)
|
||||||
|
{
|
||||||
|
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + $" 十分钟内已向{email}发送过验证码:{RegVerifyCode}");
|
||||||
|
}
|
||||||
|
return Send(socket, type, RegInvokeType.InputVerifyCode);
|
||||||
|
}
|
||||||
|
// 发送验证码,需要先删除之前过期的验证码
|
||||||
|
SQLHelper.Script = RegVerifyCodes.Delete_RegVerifyCode(username, email);
|
||||||
|
SQLHelper.Execute(out _);
|
||||||
RegVerify = Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 6);
|
RegVerify = Verification.CreateVerifyCode(VerifyCodeType.NumberVerifyCode, 6);
|
||||||
SQLHelper.Script = RegVerifyCodes.Insert_RegVerifyCodes(username, email, RegVerify);
|
SQLHelper.Script = RegVerifyCodes.Insert_RegVerifyCodes(username, email, RegVerify);
|
||||||
SQLHelper.Execute(out SQLResult result);
|
SQLHelper.Execute(out result);
|
||||||
if (result == SQLResult.Success && MailSender != null)
|
if (result == SQLResult.Success)
|
||||||
{
|
{
|
||||||
|
if (MailSender != null)
|
||||||
|
{
|
||||||
|
// 发送验证码
|
||||||
string ServerName = Config.ServerName;
|
string ServerName = Config.ServerName;
|
||||||
string Subject = $"[{ServerName}] FunGame 注册验证码";
|
string Subject = $"[{ServerName}] FunGame 注册验证码";
|
||||||
string Body = $"亲爱的 {username}, <br/> 感谢您注册[{ServerName}],您的验证码是 {RegVerify} ,10分钟内有效,请及时输入!<br/><br/>{ServerName}<br/>{DateTimeUtility.GetDateTimeToString(TimeType.DateOnly)}";
|
string Body = $"亲爱的 {username}, <br/> 感谢您注册[{ServerName}],您的验证码是 {RegVerify} ,10分钟内有效,请及时输入!<br/><br/>{ServerName}<br/>{DateTimeUtility.GetDateTimeToString(TimeType.DateOnly)}";
|
||||||
string[] To = new string[] { email };
|
string[] To = new string[] { email };
|
||||||
string[] CC = new string[] { OfficialEmail.SupportEmail };
|
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To)) == MailSendResult.Success)
|
||||||
if (MailSender.Send(MailSender.CreateMail(Subject, Body, System.Net.Mail.MailPriority.Normal, true, To, CC)) == MailSendResult.Success)
|
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + $" 已向{email}发送验证码:{RegVerify}");
|
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + $" 已向{email}发送验证码:{RegVerify}");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " 无法发送验证码。");
|
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + " 无法发送验证码");
|
||||||
ServerHelper.WriteLine(MailSender.ErrorMsg);
|
ServerHelper.WriteLine(MailSender.ErrorMsg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else // 不使用MailSender的情况
|
||||||
|
{
|
||||||
|
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + $" 验证码为:{RegVerify},请服务器管理员告知此用户");
|
||||||
|
}
|
||||||
|
return Send(socket, type, RegInvokeType.InputVerifyCode);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -224,9 +265,17 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
SQLHelper.ExecuteDataSet(out SQLResult result);
|
SQLHelper.ExecuteDataSet(out SQLResult result);
|
||||||
if (result == SQLResult.Success)
|
if (result == SQLResult.Success)
|
||||||
{
|
{
|
||||||
|
// 检查验证码是否过期
|
||||||
|
DateTime RegTime = (DateTime)(SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegTime]);
|
||||||
|
if ((DateTime.Now - RegTime).TotalMinutes >= 10)
|
||||||
|
{
|
||||||
|
ServerHelper.WriteLine(SocketHelper.MakeClientName(ClientName, User) + $" 验证码已过期");
|
||||||
|
msg = "此验证码已过期,请重新注册。";
|
||||||
|
return Send(socket, type, false, msg);
|
||||||
|
}
|
||||||
|
// 注册
|
||||||
if (RegVerify.Equals(SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode]))
|
if (RegVerify.Equals(SQLHelper.DataSet.Tables[0].Rows[0][RegVerifyCodes.Column_RegVerifyCode]))
|
||||||
{
|
{
|
||||||
// 注册
|
|
||||||
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] UserName: " + username + " Email: " + email);
|
ServerHelper.WriteLine("[" + ServerSocket.GetTypeString(type) + "] UserName: " + username + " Email: " + email);
|
||||||
SQLHelper.Script = UserQuery.Insert_Register(username, password, email);
|
SQLHelper.Script = UserQuery.Insert_Register(username, password, email);
|
||||||
SQLHelper.Execute(out result);
|
SQLHelper.Execute(out result);
|
||||||
@ -234,6 +283,7 @@ namespace Milimoe.FunGame.Server.Model
|
|||||||
{
|
{
|
||||||
msg = "注册成功!请牢记您的账号与密码!";
|
msg = "注册成功!请牢记您的账号与密码!";
|
||||||
SQLHelper.Script = RegVerifyCodes.Delete_RegVerifyCode(username, email);
|
SQLHelper.Script = RegVerifyCodes.Delete_RegVerifyCode(username, email);
|
||||||
|
SQLHelper.Execute(out _);
|
||||||
return Send(socket, type, true, msg);
|
return Send(socket, type, true, msg);
|
||||||
}
|
}
|
||||||
else msg = "服务器无法处理您的注册,注册失败!";
|
else msg = "服务器无法处理您的注册,注册失败!";
|
||||||
|
@ -41,6 +41,7 @@ namespace Milimoe.FunGame.Server.Utility
|
|||||||
ServerHelper.WriteLine("SQLQuery -> " + Script);
|
ServerHelper.WriteLine("SQLQuery -> " + Script);
|
||||||
_DataSet = new DataSet();
|
_DataSet = new DataSet();
|
||||||
_UpdateRows = MySQLManager.Execute(this, out Result);
|
_UpdateRows = MySQLManager.Execute(this, out Result);
|
||||||
|
_Result = Result;
|
||||||
if (_IsOneTime) Close();
|
if (_IsOneTime) Close();
|
||||||
return _UpdateRows;
|
return _UpdateRows;
|
||||||
}
|
}
|
||||||
@ -56,6 +57,7 @@ namespace Milimoe.FunGame.Server.Utility
|
|||||||
if (_IsOneTime) _Connection = new MySQLConnection(out _ServerInfo);
|
if (_IsOneTime) _Connection = new MySQLConnection(out _ServerInfo);
|
||||||
ServerHelper.WriteLine("SQLQuery -> " + Script);
|
ServerHelper.WriteLine("SQLQuery -> " + Script);
|
||||||
_DataSet = MySQLManager.ExecuteDataSet(this, out Result, out _UpdateRows);
|
_DataSet = MySQLManager.ExecuteDataSet(this, out Result, out _UpdateRows);
|
||||||
|
_Result = Result;
|
||||||
if (_IsOneTime) Close();
|
if (_IsOneTime) Close();
|
||||||
return DataSet;
|
return DataSet;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
using System.Data;
|
using System.Data;
|
||||||
using MySql.Data.MySqlClient;
|
using MySql.Data.MySqlClient;
|
||||||
using Milimoe.FunGame.Core.Library.Constant;
|
using Milimoe.FunGame.Core.Library.Constant;
|
||||||
using Milimoe.FunGame.Core.Service;
|
|
||||||
|
|
||||||
namespace Milimoe.FunGame.Server.Utility
|
namespace Milimoe.FunGame.Server.Utility
|
||||||
{
|
{
|
||||||
|
@ -164,6 +164,8 @@ namespace Milimoe.FunGame.Server.Utility
|
|||||||
if (SmtpPort > 0) return new MailSender(SenderMailAddress, SenderName, SenderPassword, SmtpHost, SmtpPort, OpenSSL);
|
if (SmtpPort > 0) return new MailSender(SenderMailAddress, SenderName, SenderPassword, SmtpHost, SmtpPort, OpenSSL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
ServerHelper.WriteLine("Smtp服务处于关闭状态");
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
throw new SmtpHelperException();
|
throw new SmtpHelperException();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user