public IActionResult EmailRegister([FromBody] EmailRegisterDto payload)
        {
            var result = _registrationService.RegisterWithEmailAndPassword(payload);

            if (result.UserAvailable)
            {
                result.User.Use(user => SendWelcomeMessage(user.Id));
            }

            return(new JsonResult(new
            {
                valid = result.UserAvailable,
                token = result.Token,
                email = result.User.Get(user => user.Email, () => ""),
                displayName = result.User.Get(user => user.DisplayName, () => "")
            }));
        }
Example #2
0
        public RegisterResult RegisterWithEmailAndPassword(EmailRegisterDto payload)
        {
            return(_userService.FindByEmail(payload.Email).Get(
                       some => new RegisterResult
            {
                UserAvailable = false,
                Token = "",
                User = new Option <UserDto>()
            },
                       () =>
            {
                var user = _userService.CreateUserWithPassword(payload.Email, payload.DisplayName, payload.Password);

                var token = _authTokenService.GenerateToken(user.Id);

                return new RegisterResult
                {
                    UserAvailable = true,
                    User = new Option <UserDto>(user),
                    Token = token
                };
            }
                       ));
        }