/// <summary> /// 注册账号 /// </summary> /// <param name="dto">注册信息</param> /// <returns>业务操作结果</returns> public async Task <OperationResult <User> > Register(RegisterDto dto) { Check.NotNull(dto, nameof(dto)); User user = new User() { UserName = dto.UserName, NickName = dto.NickName ?? dto.UserName, Email = dto.Email }; IdentityResult result = dto.Password == null ? await _userManager.CreateAsync(user) : await _userManager.CreateAsync(user, dto.Password); if (!result.Succeeded) { return(result.ToOperationResult(user)); } UserDetail detail = new UserDetail() { RegisterIp = dto.RegisterIp, UserId = user.Id }; int count = await _userDetailRepository.InsertAsync(detail); //触发注册成功事件 if (count > 0) { RegisterEventData eventData = new RegisterEventData() { RegisterDto = dto, User = user }; await _eventBus.PublishAsync(eventData); return(new OperationResult <User>(OperationResultType.Success, "用户注册成功", user)); } return(new OperationResult <User>(OperationResultType.NoChanged)); }
public async Task <AjaxResult <RegisterResponse> > Register(RegisterRequest registerRequest) { AjaxResult <RegisterResponse> ajaxResult = new AjaxResult <RegisterResponse>("用户注册成功"); //if (!_verifyCodeService.CheckCode(registerRequest.VerifyCode, registerRequest.VerifyCodeId)) //{ // ajaxResult.Success = false; // ajaxResult.Content = "验证码错误,请刷新重试"; //} User user = new User() { UserName = registerRequest.UserName, NickName = registerRequest.NickName ?? $"User_{new Random().NextLetterAndNumberString(8)}", //随机用户昵称 Email = registerRequest.Email }; IdentityResult result = await UserManager.CreateAsync(user, registerRequest.Password); if (!result.Succeeded) { StringBuilder sb = new StringBuilder(); foreach (var error in result.Errors) { sb.Append(error.Description + "|"); } ajaxResult.Content = sb.ToString();// "注册失败"; ajaxResult.Success = false; return(ajaxResult); } string registerIp = HttpContext.GetClientIp(); UserDetail detail = new UserDetail() { RegisterIp = registerIp, UserId = user.Id }; int count = await UserDetailRepository.InsertAsync(detail); //触发注册成功事件 if (count > 0) { RegisterResponse registerResponse = new RegisterResponse { Email = user.Email, NickName = user.NickName, UserName = user.UserName, RegisterIp = registerIp }; RegisterEventData eventData = new RegisterEventData() { User = user, RequestScheme = Request.Scheme, RequestHost = Request.Host }; EventBus.Publish(eventData); ajaxResult.Result = registerResponse; return(ajaxResult); } ajaxResult.Content = "保存用户IP失败"; ajaxResult.Success = false; return(ajaxResult); }
/// <summary> /// 注册账号 /// </summary> /// <param name="dto">注册信息</param> /// <param name="service"></param> /// <returns>业务操作结果</returns> public async Task <OperationResult <User> > Register(RegisterDto dto, IServiceProvider service) { Check.NotNull(dto, nameof(dto)); var options = service.GetRequiredService <IOptions <ApplicationOptions> >().Value; //var avatarPath = $"{options.FrontendContentPath}{Path.DirectorySeparatorChar}avatars{Path.DirectorySeparatorChar}{options.Avatar.DefaultAvatar}" // .ConvertToFrontendPath(); //var avatarPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "assets", "avatars", options.Avatar.DefaultAvatar).ConvertToFrontendPath(); User user = new User() { UserName = dto.UserName, NickName = dto.NickName ?? dto.UserName, Email = dto.Email, HeadImg = options.Avatar.DefaultAvatar }; IdentityResult result = dto.Password == null ? await _userManager.CreateAsync(user) : await _userManager.CreateAsync(user, dto.Password); if (!result.Succeeded) { return(result.ToOperationResult(user)); } UserDetail detail = new UserDetail() { RegisterIp = dto.RegisterIp, UserId = user.Id, Profile = "{\"personalProfile\": \"\",\"country\": \"\",\"province\": \"\",\"city\": \"\",\"address\": \"\",\"department\": \"\"}" }; int count = await _userDetailRepository.InsertAsync(detail); //触发注册成功事件 if (count > 0) { RegisterEventData eventData = new RegisterEventData() { RegisterDto = dto, User = user }; _eventBus.Publish(eventData); return(new OperationResult <User>(OperationResultType.Success, "用户注册成功", user)); } return(new OperationResult <User>(OperationResultType.Error)); }