public ActionResult Register(RegisteredUser newUser)
        {
            CaptchaHelper captchaHelper = new CaptchaHelper();
            string captchaResponse = captchaHelper.CheckRecaptcha();
            if (captchaResponse != "Valid")
            {
                ViewBag.ErrorResponse = "The captcha must be valid";
                return View();

            }

            var userStore = new UserStore<IdentityUser>();
            UserManager<IdentityUser> manager = new UserManager<IdentityUser>(userStore)
            {
                UserLockoutEnabledByDefault = true,
                DefaultAccountLockoutTimeSpan = new TimeSpan(0, 10, 0),
                MaxFailedAccessAttemptsBeforeLockout = 3
            };

            var identityUser = new IdentityUser()
            {
                UserName = newUser.UserName,
                Email = newUser.Email
            };
            IdentityResult result = manager.Create(identityUser, newUser.Password);

            if (result.Succeeded)
            {

                if (newUser.UserRole.Equals("Buyer") || newUser.UserRole.Equals("Farm"))
                {
                    //Taking the username on the account successful creation and applying it to the
                    //Farm database to create a Farm table with that username under the 'farmName' field.
                    AccountRepo accountRepo = new AccountRepo();
                    accountRepo.InitializeUserAccount(newUser);
                }

                var authenticationManager
                                  = HttpContext.Request.GetOwinContext().Authentication;
                var userIdentity = manager.CreateIdentity(identityUser,
                                           DefaultAuthenticationTypes.ApplicationCookie);
                authenticationManager.SignIn(new AuthenticationProperties() { },
                                             userIdentity);
                string testVariable = newUser.UserRole;
                AddUserToRole(newUser.UserName, newUser.UserRole);

                CreateTokenProvider(manager, EMAIL_CONFIRMATION);

                var code = manager.GenerateEmailConfirmationToken(identityUser.Id);
                var callbackUrl = Url.Action("ConfirmEmail", "Home",
                                                new { userId = identityUser.Id, code = code },
                                                    protocol: Request.Url.Scheme);

                string emailMessage = "Please confirm your account by clicking this link: <a href=\""
                                    + callbackUrl + "\">Confirm Registration</a>";

                string response = new MailHelper().EmailFromArvixe(new ViewModels.Message(newUser.Email, emailMessage));

                ViewBag.ConfirmationResponse = response;
                TempData["ConfirmationResponse"] = "You have successfully registered for an account. Please verify your account by clicking on the link sent to you in your e-mail.";
                return RedirectToAction("Login");
            }
            ViewBag.ErrorResponse = "There was an error with the input provided";
            return View();
        }
Example #2
0
        public ActionResult Register(RegisteredUser newUser)
        {
            var userStore = new UserStore<IdentityUser>();
            UserManager<IdentityUser> manager = new UserManager<IdentityUser>(userStore)
            {
                UserLockoutEnabledByDefault = true,
                DefaultAccountLockoutTimeSpan = new TimeSpan(0, 10, 0),
                MaxFailedAccessAttemptsBeforeLockout = 3
            };
            var identityUser = new IdentityUser()
            {
                UserName = newUser.UserName,
                Email = newUser.Email
            };
            IdentityResult result = manager.Create(identityUser, newUser.Password);

            if (result.Succeeded)
            {
                CreateTokenProvider(manager, EMAIL_CONFIRMATION);

                var code = manager.GenerateEmailConfirmationToken(identityUser.Id);
                var callbackUrl = Url.Action("ConfirmEmail", "Home",
                                                new { userId = identityUser.Id, code = code },
                                                    protocol: Request.Url.Scheme);

                string email = "Please confirm your account by clicking this link: <a href=\""
                                + callbackUrl + "\">Confirm Registration</a>";
                ViewBag.FakeConfirmation = email;

            }
            return View();
        }
        public ActionResult Register(RegisteredUser newUser)
        {
            var userStore = new UserStore<IdentityUser>();
            UserManager<IdentityUser> manager = new UserManager<IdentityUser>(userStore)
            {
                UserLockoutEnabledByDefault = true,
                DefaultAccountLockoutTimeSpan = new TimeSpan(0, 10, 0),
                MaxFailedAccessAttemptsBeforeLockout = 3
            };

            var identityUser = new IdentityUser()
            {
                UserName = newUser.UserName,
                Email = newUser.Email
            };
            IdentityResult result = manager.Create(identityUser, newUser.Password);

            if (result.Succeeded)
            {
                var authenticationManager
                                  = HttpContext.Request.GetOwinContext().Authentication;
                var userIdentity = manager.CreateIdentity(identityUser,
                                           DefaultAuthenticationTypes.ApplicationCookie);
                authenticationManager.SignIn(new AuthenticationProperties() { },
                                             userIdentity);
                string testVariable = newUser.UserRole;
                AddUserToRole(newUser.UserName, newUser.UserRole);
            }
            return View();
        }
Example #4
0
        public void InitializeUserAccount(RegisteredUser newUser)
        {
            FarmSaleDBEntities1 db = new FarmSaleDBEntities1();
            Account account = new Account()
            {
                username = newUser.UserName,
                email = newUser.Email,
                accountType = newUser.UserRole
            };

            db.Accounts.Add(account);

            Address address = new Address()
            {
                city = newUser.City,
                province = newUser.Province,
                streetName = newUser.StreetName,
                streetNum = newUser.StreetNum,
                zip = newUser.PostalCode
            };

            db.Addresses.Add(address);

            Farm farm = new Farm();
            if (newUser.UserRole.Equals("Farm"))
            {
                farm.farmName = newUser.FarmName;
                farm.farmProfile = newUser.FarmProfile;
                db.Farms.Add(farm);
            }
            db.SaveChanges();

            Account newUserAccount = db.Accounts.Where(u => u.username == newUser.UserName).FirstOrDefault();

            int accountID = newUserAccount.accountID;

            //querying new Address and Farm entities that we just added into sepearte tables.
            Address addressQuery = db.Addresses.Where(a => a.streetNum == newUser.StreetNum && a.streetName == newUser.StreetName && a.zip == newUser.PostalCode).FirstOrDefault();
            Farm farmQuery = db.Farms.Where(f => f.farmName == newUser.FarmName && f.farmProfile == newUser.FarmProfile).FirstOrDefault();

            //merging Address and Farm entities under the Account through the AccountDetails table
            AccountDetail newUserAccountDetail = new AccountDetail();
            int addressID = addressQuery.addressID;

            if (farmQuery != null)
            {

                int farmID = farmQuery.farmID;
                newUserAccountDetail.farmID = farmID;
            }

            newUserAccountDetail.accountID = accountID;
            newUserAccountDetail.addressID = addressID;

            db.AccountDetails.Add(newUserAccountDetail);
            db.SaveChanges();

            //farm.farmName = newUser.UserName = newUser.FarmName;
            //farm.farmProfile = newUser.UserName = newUser.FarmProfile;

            //address.AccountDetails.Add(newUserAccountDetail);
            //db.SaveChanges();

            //account.AccountDetails.Add(newUserAccountDetails);
            //Address newUserAddress = new Address();
            //Farm farm = new Farm();
            //farm.farmName = " farm name " + newUser.UserName;
            //newUserAddress.city = "Vancouver";
            //newUserAddress.AccountDetails.Add(newUserAccountDetails);
            //farm.AccountDetails.Add(newUserAccountDetails);
            db.SaveChanges();

            //if ( newUser.UserRole.Equals("Farm"))
            //{
            //    Farm farm = new Farm();
            //    farm.farmName = newUser.UserName;
            //    AccountDetail
            //}

            //if (account != null)
            //{
            //    account.email = email;
            //    db.SaveChanges();
            //}
        }