Ejemplo n.º 1
0
        public async Task <ActionResult> Create(InternalUserCreationViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var userCreationData = new InternalUserCreationData
            {
                Email             = model.Email,
                FirstName         = model.Name,
                Surname           = model.Surname,
                Password          = model.Password,
                ConfirmPassword   = model.ConfirmPassword,
                ActivationBaseUrl = externalRouteService.ActivateInternalUserAccountUrl,
            };

            try
            {
                using (var client = apiClient())
                {
                    var response = await apiClientCredential().GetClientCredentialsAsync();

                    var userId = await client.User.CreateInternalUserAsync(userCreationData, response.AccessToken);

                    var loginResult = await weeeAuthorization.SignIn(model.Email, model.Password, false);

                    if (loginResult.Successful)
                    {
                        await client.SendAsync(loginResult.AccessToken, new AddCompetentAuthorityUser(userId));

                        return(RedirectToAction("AdminAccountActivationRequired"));
                    }

                    ModelState.AddModelError(string.Empty, loginResult.ErrorMessage);
                }
            }
            catch (ApiBadRequestException ex)
            {
                this.HandleBadRequest(ex);

                if (ModelState.IsValid)
                {
                    throw;
                }

                AddRemoveModelStateErrors();
            }
            catch (SmtpException)
            {
                ViewBag.Errors = new[] { "The activation email was not sent, please try again later." };
            }

            return(View(model));
        }
        public async Task<ActionResult> Create(InternalUserCreationViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return View(model);
            }

            var userCreationData = new InternalUserCreationData
            {
                Email = model.Email,
                FirstName = model.Name,
                Surname = model.Surname,
                Password = model.Password,
                ConfirmPassword = model.ConfirmPassword,
                ActivationBaseUrl = externalRouteService.ActivateInternalUserAccountUrl,
            };

            try
            {
                using (var client = apiClient())
                {
                    var userId = await client.User.CreateInternalUserAsync(userCreationData);
                    var loginResult = await weeeAuthorization.SignIn(model.Email, model.Password, false);

                    if (loginResult.Successful)
                    {
                        await client.SendAsync(loginResult.AccessToken, new AddCompetentAuthorityUser(userId));
                        return RedirectToAction("AdminAccountActivationRequired");
                    }

                    ModelState.AddModelError(string.Empty, loginResult.ErrorMessage);
                }
            }
            catch (ApiBadRequestException ex)
            {
                this.HandleBadRequest(ex);

                if (ModelState.IsValid)
                {
                    throw;
                }

                AddRemoveModelStateErrors();
            }
            catch (SmtpException)
            {
                ViewBag.Errors = new[] { "The activation email was not sent, please try again later." };
            }

            return View(model);
        }