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, () => "") })); }
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 }; } )); }