Beispiel #1
0
        public async Task <IActionResult> RegisterAsync(
            string email,    // email
            string password, // 密码
            string phone     // 手机号
            )
        {
            if (string.IsNullOrEmpty(email))
            {
                return(Json(new { succeeded = false, message = "未填写邮箱" }));
            }

            if (string.IsNullOrEmpty(password))
            {
                return(Json(new { succeeded = false, message = "未填写密码" }));
            }

            if (string.IsNullOrEmpty(phone))
            {
                return(Json(new { succeeded = false, message = "未填写手机号" }));
            }

            var user = new FreshBoardUser
            {
                UserName     = email,
                Email        = email,
                PhoneNumber  = phone,
                HasPrivilege = (await _userManager.Users.CountAsync()) == 0 ? true : false
            };

            var result = await _userManager.CreateAsync(user, password);

            if (result.Succeeded)
            {
                var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                var callbackUrl = Url.Action("ConfirmEmail", "User", new { userId = user.Id, code }, Request.Scheme);
                try
                {
                    await _emailSender.SendEmailAsync(email, "验证邮箱 - SYSU MSC", $"<h2>中山大学微软学生俱乐部</h2><p>感谢您的注册,请点击 <a href='{callbackUrl}'>此处</a> 验证你的邮箱地址。</p><hr /><p>请勿回复本邮件</p><p>{DateTime.Now} - SYSU MSC</p>");
                }
                catch (Exception ex)
                {
                    _logger.LogError(ex, "An error occured while sending confirmation email.");
                    Console.WriteLine(ex.Message);
                }
                await _signInManager.SignOutAsync();

                await _signInManager.SignInAsync(user, false);

                return(Json(new { succeeded = true }));
            }

            return(Json(new { succeeded = false, message = result.Errors.Any() ? result.Errors.Select(i => i.Description).Aggregate((accu, next) => accu + "\n" + next) : "注册失败" }));
        }
Beispiel #2
0
        private async Task <(ProblemModel Model, bool Succeeded)> GetProblem(FreshBoardUser user)
        {
            if (user == null)
            {
                return(new ProblemModel
                {
                    MessageType = MessageType.Error,
                    Message = "没有登录账户",
                    ShowContent = false
                }, false);
            }
            var problems = await _puzzleService.GetProblemsByLevelAsync(user.PuzzleProgress + 1).ToListAsync();

            if (problems.Count == 0)
            {
                return(new ProblemModel
                {
                    MessageType = MessageType.Success,
                    Message = "你完成了全部的题目",
                    ShowContent = false
                }, false);
            }

            var index   = (int)(Math.Abs(BitConverter.ToInt64(Guid.Parse(user.Id).ToByteArray())) % problems.Count);
            var problem = problems[index];

            return(new ProblemModel
            {
                Id = problem.Id,
                Content = problem.Content,
                Script = problem.Script,
                Title = problem.Title,
                Level = problem.Level,
                ShowContent = true
            }, true);
        }