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) : "注册失败" })); }
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); }