Esempio n. 1
0
        public ActionResult RegisterPrBeta(RegisterPrBetaViewModel model)
        {
            ViewBag.RegionId = new SelectList(market.Regions, "Id", "Name");

            if (ModelState.IsValid)
            {
                UserModel user = new UserModel();
                // Attempt to register the user
                MembershipCreateStatus createStatus = MembershipService.CreateUser(prBetaTempPass, model.Email.ToLower());

                if (createStatus == MembershipCreateStatus.Success)
                {
                    user.ActivationId = System.Guid.NewGuid().ToString();
                    MembershipUser RegisteredUser = Membership.GetUser(model.Email.ToLower());
                    RegisteredUser.IsApproved = false;
                    Membership.UpdateUser(RegisteredUser);
                    user.Email     = model.Email.ToLower();
                    user.FirstName = "Rambla";
                    user.LastName  = "User";
                    user.City      = model.City;
                    user.RegionId  = model.RegionId;
                    user.CountryId = 1;
                    market.Badges.SingleOrDefault(b => b.Name == "Individual").Users.Add(user);
                    market.Users.Add(user);
                    market.SaveChanges();

                    //Use MvcMailer to send welcome email to newly registered user.
                    //UserMailer.Welcome(newUser: user).Send();
                    Session["REQUESTED_ACCESS_USER"] = true;
                    log.Info("Account - New user registered (" + model.Email.ToLower() + ")");
                    return(View("Register"));
                }
                else
                {
                    log.Error("Account - Error registering new user. " + createStatus.ToString());
                    ModelState.AddModelError("", AccountValidation.ErrorCodeToString(createStatus));
                }
            }

            log.Error("Account - RegisterModel Error.");
            // If we got this far, something failed, redisplay form
            ViewBag.PasswordLength = MembershipService.MinPasswordLength;
            return(View("../Home/Index", model));
        }
Esempio n. 2
0
        public ActionResult RegisterFBPrivateBeta()
        {
            if (FacebookWebContext.Current.IsAuthenticated() && FacebookWebContext.Current.IsAuthorized())
            {
                FacebookClient fbClient   = new FacebookClient(FacebookWebContext.Current.AccessToken);
                dynamic        me         = fbClient.Get("me");
                string         facebookId = (string)me.id;
                string         userEmail  = (string)me.email;

                if (facebookId == null || userEmail == null)
                {
                    throw new FacebookOAuthException();
                }

                var user = market.Users.SingleOrDefault(u => u.Email == userEmail);

                if (user == null)
                {
                    var location = me.location;
                    if (location == null)
                    {
                        location = me.hometown;
                        if (location == null)
                        {
                            var model = new RegisterPrBetaViewModel();
                            ModelState.AddModelError("", "Oops, your Facebook profile does not have your location information. Please use the form below to request access.");
                            fbClient.Delete(facebookId + "/permissions");
                            FormsAuthentication.SignOut();
                            return(View("../Home/Index", model));
                        }
                    }

                    string[] address = ((string)location.name).Split(',');
                    string   city    = address[0].Trim();
                    string   prov    = address[1].Trim();

                    //Let us create a new user
                    market.Users.Add(new UserModel
                    {
                        Email          = userEmail,
                        FirstName      = "Rambla",
                        LastName       = "User",
                        City           = city,
                        RegionId       = market.Regions.SingleOrDefault(r => r.Name.Contains(prov)).Id,
                        CountryId      = 1,
                        isFacebookUser = true,
                        FacebookUserId = facebookId,
                        ActivationId   = Guid.NewGuid().ToString()
                    });

                    //Let us add a facebook user to our DB with isApproved set to false
                    market.FacebookUsers.Add(new FacebookUser
                    {
                        Id             = facebookId,
                        UserModelEmail = (string)me.email,
                        AccessToken    = FacebookWebContext.Current.AccessToken,
                        IsApproved     = false,
                        Expires        = FacebookWebContext.Current.Session.Expires
                    });

                    market.SaveChanges();
                    Session["REQUESTED_ACCESS_USER"] = true;
                    log.Info("Account - New user registered (" + userEmail.ToLower() + ")");
                    return(View("Register"));
                }

                Session["REQUESTED_ACCESS_USER"] = true;
                return(View("Register"));
            }

            var regModel = new RegisterPrBetaViewModel();

            ModelState.AddModelError("", "Oops, your Facebook profile does not have your location information. Please use the form below to request access.");
            return(View("../Home/Index", regModel));
        }