コード例 #1
0
        public async Task <IActionResult> Register(RegisterViewModel model, string returnUrl)
        {
            if (_workContext.CurrentUser.IsRegistered())
            {
                //Already registered user.
                await _authenticationService.SignOutAsync();

                //Save a new record
                _workContext.CurrentUser = await _userService.InsertGuestUserAsync();
            }
            var user = _workContext.CurrentUser;

            user.RegisteredInTenantId = _tenantContext.CurrentTenant.Id;

            if (ModelState.IsValid)
            {
                if (_userSettings.UsernamesEnabled && model.Username != null)
                {
                    model.Username = model.Username.Trim();
                }

                var registrationRequest = new UserRegistrationRequest(
                    user,
                    model.Email,
                    _userSettings.UsernamesEnabled ? model.Username : model.Email,
                    model.Password,
                    _userSettings.DefaultPasswordFormat,
                    _tenantContext.CurrentTenant.Id);
                var registrationResult = await _userRegistrationService.RegisterUserAsync(registrationRequest);

                if (registrationResult.Success)
                {
                    //properties
                    if (_dateTimeSettings.AllowUsersToSetTimeZone)
                    {
                        await _genericAttributeService.SaveAttributeAsync(user, UserDefaults.TimeZoneIdAttribute, model.TimeZoneId);
                    }

                    //form fields
                    if (_userSettings.GenderEnabled)
                    {
                        await _genericAttributeService.SaveAttributeAsync(user, UserDefaults.GenderAttribute, model.Gender);
                    }
                    await _genericAttributeService.SaveAttributeAsync(user, UserDefaults.FirstNameAttribute, model.FirstName);

                    await _genericAttributeService.SaveAttributeAsync(user, UserDefaults.LastNameAttribute, model.LastName);

                    if (_userSettings.DateOfBirthEnabled)
                    {
                        var dateOfBirth = model.ParseDateOfBirth();
                        await _genericAttributeService.SaveAttributeAsync(user, UserDefaults.DateOfBirthAttribute, dateOfBirth);
                    }
                    if (_userSettings.PhoneEnabled)
                    {
                        await _genericAttributeService.SaveAttributeAsync(user, UserDefaults.PhoneAttribute, model.Phone);
                    }

                    //login
                    await _authenticationService.SignInAsync(user, true);

                    if (string.IsNullOrEmpty(returnUrl) || !Url.IsLocalUrl(returnUrl))
                    {
                        return(RedirectToRoute("HomePage"));
                    }

                    return(Redirect(returnUrl));
                }

                //errors
                foreach (var error in registrationResult.Errors)
                {
                    ModelState.AddModelError("", error);
                }
            }

            //If we got this far, something failed, redisplay form
            model = await _userAccountModelFactory.PrepareRegisterModel(model, true);

            return(View(model));
        }
コード例 #2
0
 public async Task <ApiResponse <RegistrationResponse> > Handle(EndUserRegistrationRequest request, CancellationToken cancellationToken)
 {
     return(await userRegistrationService.RegisterUserAsync(request));
 }