public async Task <ActionResult> Index(List <Invitation> model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            foreach (Invitation invite in model)
            {
                switch (invite.status)
                {
                case InvitationStatus.Accepted:
                    var result = await AccountCreationProvider.Converter(this, UserManager, invite);

                    break;

                case InvitationStatus.Denied:
                    db.Invitations.Attach(invite);
                    db.Entry(invite).State = EntityState.Modified;
                    db.SaveChanges();
                    break;

                default:
                    break;
                }
            }

            List <Invitation> pendingInvitations = db.Invitations.Where(r => r.status == InvitationStatus.Pending).ToList();

            return(View(pendingInvitations));
        }
        public async Task <ActionResult> Create([Bind(Include = "FirstName,LastName,CompanyName,Title,Phone,Website,DesignRole,Email,EmailConfirmed")] ApplicationUser applicationUser)
        {
            if (ModelState.IsValid)
            {
                applicationUser.UserName = applicationUser.Email;
                string password = "******";
                //TODO: Generate Default Password
                var result = await AccountCreationProvider.Converter(this, UserManager, applicationUser, password);

                if (result.Errors.Count() > 0)
                {
                    // If we got this far, something failed, redisplay form
                    AddErrors(result);
                    DisplayErrorMessage();
                    return(View(applicationUser));
                }

                //Sucess Return to Index
                return(RedirectToAction("Index"));
            }
            DisplayErrorMessage();
            return(View(applicationUser));
        }
Exemplo n.º 3
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName    = model.Email,
                    Email       = model.Email,
                    FirstName   = model.FirstName,
                    LastName    = model.LastName,
                    CompanyName = model.CompanyName,
                    Website     = model.Website,
                    Title       = model.Title,
                    Phone       = model.Phone,
                    DesignRole  = model.DesignRole
                };
                var passwordValid = await UserManager.PasswordValidator.ValidateAsync(model.Password);


                RegistrationAllowmentProvider regProv   = new RegistrationAllowmentProvider();
                RegistrationAllowmentResult   regResult = regProv.RegistrationAllowed(user.Email);
                if (regResult.Denied)
                {
                    var result = new IdentityResult(new string[] { "Registration is only available for Techmer employees." });
                    AddErrors(result);
                }
                else if (!captchaValid())
                {
                    var result = new IdentityResult(new string[] { "reCaptcha validation failed." });
                    AddErrors(result);
                }
                else if (!passwordValid.Succeeded)
                {
                    AddErrors(passwordValid);
                }
                else if (regResult.ApprovalRequired)
                {
                    Invitation invite = new Invitation(model);

                    if (appDb.Invitations.Where(i => i.email == model.Email).Count() > 0)
                    {
                        var result = new IdentityResult(new String[] { "Request for access already exists for this email address." });
                        AddErrors(result);
                    }
                    else if (appDb.Users.Where(i => i.Email == model.Email).Count() > 0)
                    {
                        var result = new IdentityResult(new String[] { "A user account already exists for this email address." });
                        AddErrors(result);
                    }
                    else
                    {
                        appDb.Invitations.Add(invite);
                        appDb.SaveChanges();

                        return(View("InvitationReceived"));
                    }
                }
                else if (regResult.Allowed)
                {
                    var result = await AccountCreationProvider.Converter(this, UserManager, user, model);

                    if (result.Succeeded)
                    {
                        return(View("DisplayEmail"));
                    }
                    else
                    {
                        AddErrors(result);
                    }
                }
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }