Ejemplo n.º 1
0
        public ResponseBase SignUp([FromBody] SignUpRequest request)
        {
            if (request == null)
            {
                return(ResponseBase.InvalidInput("参数错误"));
            }
            if (!VirtualRoot.IsValidLoginName(request.LoginName, out string message))
            {
                return(ResponseBase.InvalidInput(message));
            }
            if (request.ActionCaptchaId == Guid.Empty ||
                string.IsNullOrEmpty(request.ActionCaptcha) ||
                !AppRoot.CaptchaSet.IsValid(request.ActionCaptchaId, base.RemoteIp, request.ActionCaptcha))
            {
                return(ResponseBase.InvalidInput("验证码错误"));
            }
            if (!AppRoot.UserSet.IsReadied)
            {
                return(ResponseBase.InvalidInput("服务器用户集启动中,请稍后"));
            }
            if (AppRoot.UserSet.Contains(request.LoginName))
            {
                return(ResponseBase.InvalidInput("登录名已被占用,请更换"));
            }

            // TODO:验证邮箱验证码,注册时如果填了邮箱则验证邮箱的验证码,更新用户信息时如果变动了邮箱则验证邮箱验证码。
            // 验证验证码的存在性以及邮箱地址和验证码的对应关系的正确性而不是只验证验证码的存在性。

            // TODO:验证手机验证码,注册时如果填写了手机则验证手机验证码,更新用户信息时如果变动了手机则验证手机验证码。
            // 验证验证码的存在性以及手机和验证码的对应关系的正确性而不是只验证验证码的存在性。
            var      key      = Cryptography.RSAUtil.GetRASKey();
            UserData userData = request.ToUserData(key.PublicKey, key.PrivateKey);

            AppRoot.UserSet.Add(userData);

            return(ResponseBase.Ok("注册成功"));
        }