Ejemplo n.º 1
0
        /// <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));
        }
Ejemplo n.º 2
0
        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));
        }