예제 #1
0
        public async Task <CreateUserResult> Handle(CreateUser request, CancellationToken cancellationToken)
        {
            var validationResult = await requestValidator.Validate(request);

            if (!validationResult.IsSuccessful)
            {
                return(new CreateUserResult(validationResult.Error));
            }

            var userCode = codeGenerator.Generate();
            var imageUrl = imageUrlProvider.GetImageUrl(request.Email);

            var result = await usersRepository.CreateUser(new CreateUserModel
            {
                Email       = request.Email,
                DisplayName = request.DisplayName,
                Password    = request.Password,
                Code        = userCode,
                ImageUrl    = imageUrl,
            });

            if (!result.IsSuccessful)
            {
                return(new CreateUserResult(result.Error));
            }

            return(new CreateUserResult
            {
                User = new UserModel
                {
                    UserId = result.Model.UserId,
                    Email = result.Model.Email,
                    DisplayName = result.Model.DisplayName,
                    UserName = result.Model.UserName,
                    Code = result.Model.Code,
                    ImageUrl = result.Model.ImageUrl
                }
            });
        }
        public override async Task <RequestResult <UserDto> > Handle(RegisterUserWithCredentialsCommand request,
                                                                     CancellationToken cancellationToken)
        {
            var imageUrl = _profileImageUrlProvider.GetImageUrl(request.Email);
            var user     = await _authRepository.CreateUser(new CreateUserData
            {
                Email       = request.Email,
                Password    = request.Password,
                DisplayName = request.DisplayName,
                ImageUrl    = imageUrl,
                TenantId    = request.RequestContext.Tenant.TenantId,
                UserGuid    = request.UserGuid,
                AvatarType  = AvatarType.Gravatar,
            });

            await _avatarRepository
            .StoreAvatar(user.Id, AvatarType.Gravatar, imageUrl);

            await _mediator
            .Publish(new UserRegisteredWithCredentials(user.UserGuid), cancellationToken);

            return(RequestResult <UserDto>
                   .Success(_mapper.Map <UserDto>(user)));
        }