Пример #1
0
        public async Task <IActionResult> Register([FromBody] RegisterUserRequestModel model)
        {
            var existingUser = await _userManager.FindByEmailAsync(model.Email);

            if (existingUser != null)
            {
                return(Conflict(new ErrorResponseModel(ErrorCode.UserWithDefinedEmailAlreadyExist, string.Format(UserExistException, model.Email))));
            }

            var newUser = new User
            {
                UserName                 = model.Email,
                Email                    = model.Email,
                EmailConfirmed           = false,
                IsAcceptedTermsAndPolicy = model.IsAcceptedTermsOfService
            };

            await _userManager.CreateAsync(newUser, model.Password);

            await _userManager.AddToRoleAsync(newUser, Roles.User);

            var createdUser = await _userManager.FindByEmailAsync(newUser.Email);

            await _userService.SendEmailConfirmationEmailAsync(createdUser);

            var integrationEvent = new UserHasBeenRegisteredEvent(newUser.Id, newUser.Email);
            await _edcPublishService.PublishAsync(integrationEvent);

            return(Ok());
        }