Esempio n. 1
0
        public async Task <CreateLoginResult> Create(CreateLoginModel model)
        {
            var validationResult = ValidateCreateModel(model);

            if (validationResult != null)
            {
                return(validationResult);
            }

            if (!await _identityProvider.VerifyUserExists(model.Email))
            {
                return(await CreateNewUser(model));
            }

            if (await _identityProvider.VerifyUserEmailConfirmed(model.Email))
            {
                return(new CreateLoginResult
                {
                    Message = "User already exists with this email address.",
                    UserStatus = UserStatus.AlreadyExists
                }
                       .AddFailingField(x => x.Email));
            }

            return(new CreateLoginResult
            {
                Message = "A user already exists with this email address, but email address has not been confirmed.\n\n" +
                          "Use the link below to send the confirmation link again.",
                UserStatus = UserStatus.NeedsEmailConfirmation
            }
                   .AddFailingField(x => x.Email));
        }
Esempio n. 2
0
        private async Task <CreateLoginResult> CreateNewUser(CreateLoginModel model)
        {
            var randomPassword = Guid.NewGuid().ToString();

            randomPassword = randomPassword.Substring(0, 4).ToUpper() + randomPassword.Substring(4);

            try
            {
                bool success = await _identityProvider.CreateUser(model.Name, model.Email, randomPassword);

                string confirmationSecret = await _identityProvider.GenerateEmailConfirmationToken(model.Email);

                _clientAppRepository.SetDefaultVendorOnUserFromEmailAndName(model.Email, model.Name);

                _emailService.SendConfirmationEmail(model.Email, confirmationSecret);

                return(new CreateLoginResult
                {
                    Success = true,
                    UserStatus = UserStatus.Created
                });
            }
            catch (Exception e)
            {
                _log.Error("CreateNewUser", e);

                var message = string.Format("An exception was thrown when attempting to create the user:\n{0}", e.Message)
                              .Replace("\r\n", "\n")
                              .Replace("\n", "<br/>");

                return(CreateLoginResult.Fail.WithMessage(message));
            }
        }
Esempio n. 3
0
        public CreateLoginResult Create(CreateLoginModel model)
        {
            var validationResult = ValidateCreateModel(model);

            if (validationResult != null)
            {
                return(validationResult);
            }

            if (!WebSecurity.UserExists(model.Email))
            {
                return(CreateNewUser(model));
            }

            if (WebSecurity.IsConfirmed(model.Email))
            {
                return(new CreateLoginResult
                {
                    Message = "User already exists with this email address.", UserStatus = UserStatus.AlreadyExists
                }
                       .AddFailingField(x => x.Email));
            }

            return(new CreateLoginResult
            {
                Message = "A user already exists with this email address, but email address has not been confirmed.\n\n" +
                          "Use the link below to send the confirmation link again.",
                UserStatus = UserStatus.NeedsEmailConfirmation
            }
                   .AddFailingField(x => x.Email));
        }
        public async Task <ActionResult> Create(CreateLoginModel model)
        {
            if (ModelState.IsValid)
            {
                var result = await _userAccountManager.Create(model);

                if (result.UserStatus == UserStatus.Created)
                {
                    result.RedirectRoute = Url.Action("ActivationSent");
                }

                return(Json(result));
            }

            // Failed Model Validation
            Response.StatusCode = (int)HttpStatusCode.BadRequest;
            return(Json(BuildJsonResponseFromModelState()));
        }
Esempio n. 5
0
        private CreateLoginResult ValidateCreateModel(CreateLoginModel model)
        {
            var failedRequiredField =
                ValidateRequired <CreateLoginResult, CreateLoginModel>(x => x.Email, model) ??
                ValidateRequired <CreateLoginResult, CreateLoginModel>(x => x.Name, model);

            if (failedRequiredField != null)
            {
                failedRequiredField.UserStatus = UserStatus.Failed;
                return(failedRequiredField);
            }

            if (!model.Email.IsValidEmailAddress())
            {
                return(CreateLoginResult
                       .Fail
                       .WithMessage(string.Format("'{0}' is not a valid email address", model.Email))
                       .AddFailingField(x => x.Email));
            }

            return(null);
        }
Esempio n. 6
0
        private CreateLoginResult CreateNewUser(CreateLoginModel model)
        {
            var randomPassword = Guid.NewGuid()
                                 .ToString();

            try
            {
                string confirmationSecret = WebSecurity.CreateUserAndAccount(
                    model.Email,
                    randomPassword,
                    new
                {
                    FullName = model.Name
                },
                    true);

                _clientAppRepository.SetDefaultVendorOnUserFromEmailAndName(model.Email, model.Name);

                _emailService.SendConfirmationEmail(model.Email, confirmationSecret);

                return(new CreateLoginResult
                {
                    Success = true, UserStatus = UserStatus.Created
                });
            }
            catch (Exception e)
            {
                _log.Error("CreateNewUser", e);

                var message = string.Format("An exception was thrown when attempting to create the user:\n{0}", e.Message)
                              .Replace("\r\n", "\n")
                              .Replace("\n", "<br/>");

                return(CreateLoginResult.Fail.WithMessage(message));
            }
        }