public ActionResult SignIn(SignInViewModel vm,string returnUrl = default(string))
        {
            try
            {
                if (!ModelState.IsValid)
                {
                    vm.ErrorMessage = "Email address and Password are required fields";
                    return View(vm);
                }

                var userSession = Authenticate(vm);

                if (userSession != null)
                {
                    var identity = new ClaimsIdentity(AuthenticationHelper.CreateClaim(userSession, 
                                                        Helpers.Constants.UserRoles.Admin, 
                                                        Helpers.Constants.UserRoles.User),
                                                        DefaultAuthenticationTypes.ApplicationCookie
                                                        );
                    AuthenticationManager.SignIn(new AuthenticationProperties()
                    {
                        AllowRefresh = true,
                        IsPersistent = true,
                        ExpiresUtc = DateTime.UtcNow.AddHours(1)
                    }, identity);

                    if (!string.IsNullOrWhiteSpace(returnUrl) && Url.IsLocalUrl(returnUrl)) return Redirect(returnUrl);

                    return RedirectToAction("index", "home");
                }
            }
            catch (AuthenticationException e)
            {
                vm.ErrorMessage = e.Message;
            }
            return View(vm);
        }
示例#2
0
        public ActionResult Login(clsUser _user, string returnUrl = default(string))
        {
            string rtnUrl     = ViewBag.ReturnUrl;
            string rememberme = "";

            TempData["loginFailedMessage"] = "";
            if (ModelState.IsValid)
            {
                if (rememberme == "true")
                {
                    coockieuser.Values["UserName"] = _user.UserName;
                    coockieuser.Values["PassWord"] = new Helper().Encrypt(_user.Password);
                    coockieuser.Expires            = DateTime.Now.AddHours(7);
                    coockieuser.HttpOnly           = true;
                    Response.Cookies.Add(coockieuser);
                }
                else
                {
                    if (Request.Cookies["User"] != null)
                    {
                        Response.Cookies["User"].Expires = DateTime.Now.AddHours(-1);
                    }
                }
                var loginResult = new Usermanament().Login(_user.UserName, new Helper().Encrypt(_user.Password));
                if (loginResult != null)
                {
                    var userSession = new UserSessionModel
                    {
                        UserId      = Guid.NewGuid(),
                        DisplayName = loginResult.FullName
                    };

                    var identity    = new ClaimsIdentity(AuthenticationHelper.CreateClaim(userSession, loginResult.UserName, loginResult.UserId, loginResult.RoleName.ToString()), DefaultAuthenticationTypes.ApplicationCookie);
                    var ctx         = Request.GetOwinContext();
                    var authManager = ctx.Authentication;
                    authManager.SignIn(new AuthenticationProperties()
                    {
                        AllowRefresh = true,
                        IsPersistent = true,
                        ExpiresUtc   = DateTime.UtcNow.AddHours(1)
                    }, identity);
                    if (!string.IsNullOrWhiteSpace(returnUrl) && Url.IsLocalUrl(returnUrl))
                    {
                        return(Redirect(returnUrl));
                    }
                    return(RedirectToAction("Dashbord", "NewsOprations"));
                }
                else
                {
                    TempData["loginFailedMessage"] = "Entered UserName and Password is Wrong";
                }
            }
            else
            {
                if (string.IsNullOrEmpty(_user.UserName))
                {
                    TempData["loginFailedMessage"] = "Please Enter Your Username";
                }
                else if (string.IsNullOrEmpty(_user.Password))
                {
                    TempData["loginFailedMessage"] = "Please Enter Your Password";
                }
            }
            return(View());
        }
示例#3
0
        public ActionResult Login(LoginModel loginModel)
        {
            var serialization    = new Serialization();
            var userRegistration = new UserRegistration();
            var loginBA          = new Login();
            var HashCriteria     = new Hashtable();
            var actualCriteria   = string.Empty;

            if (ModelState.IsValid)
            {
                HashCriteria.Add("UserName", loginModel.UserName);
                actualCriteria = serialization.SerializeBinary((object)HashCriteria);
                var result            = loginBA.ValidateLogin(actualCriteria);
                var loginModelDetails = (LoginModel)(serialization.DeSerializeBinary(Convert.ToString(result)));

                var validateResult  = false;
                var isValidPassword = false;
                if (loginModelDetails.common != null)
                {
                    isValidPassword = SessionManagement.CipherTool.Verify(loginModel.Password, Convert.ToString(loginModelDetails.common.Password));
                }

                if (isValidPassword)
                {
                    if (loginModelDetails.common.IsEnabled == false)
                    {
                        ModelState.AddModelError("", "User account is disabled, Please contact Administrator.");
                        return(PartialView("_Login", loginModel));
                    }

                    //initialize userAuthModel
                    var userSession = Authenticate(loginModelDetails);

                    //
                    if (userSession != null)
                    {
                        var identity = new ClaimsIdentity(AuthenticationHelper.CreateClaim(userSession,
                                                                                           userSession.UserRole),
                                                          DefaultAuthenticationTypes.ApplicationCookie
                                                          );
                        AuthenticationManager.SignIn(new AuthenticationProperties()
                        {
                            AllowRefresh = true,
                            IsPersistent = true,
                            ExpiresUtc   = DateTime.UtcNow.AddHours(1)
                        }, identity);
                    }

                    SessionController.UserSession.UserId       = loginModelDetails.common.UserId;
                    SessionController.UserSession.UserName     = loginModelDetails.common.UserName;
                    SessionController.UserSession.EmailAddress = loginModelDetails.common.EmailAddress;
                    SessionController.UserSession.RoleType     = loginModelDetails.common.RoleType;
                    validateResult = true;

                    //Reteive the subscription for the user to check if this is valid or not
                    HashCriteria   = new Hashtable();
                    actualCriteria = string.Empty;
                    List <UserProfileEditModel> objUserProfileDetails = new List <UserProfileEditModel>();
                    HashCriteria.Add("UserID", loginModelDetails.common.UserId);
                    actualCriteria = serialization.SerializeBinary((object)HashCriteria);
                    var resultuser = userRegistration.GetUserSpecificDetails(actualCriteria);
                    objUserProfileDetails = (List <UserProfileEditModel>)(serialization.DeSerializeBinary(Convert.ToString(resultuser)));
                    var UserProfileDetails = objUserProfileDetails.FirstOrDefault();

                    //To get the customer credit card information for this user
                    if (UserProfileDetails.CustomerID != "" && UserProfileDetails.CustomerID != null)
                    {
                        string customerID = UserProfileDetails.CustomerID;
                        SessionController.UserSession.CustomerID = customerID;

                        var            customerService = new StripeCustomerService();
                        StripeCustomer stripeCustomer  = customerService.Get(customerID);

                        //Check if user has any subscription or not
                        if (stripeCustomer.Subscriptions.TotalCount > 0)
                        {
                            var subscriptionID = stripeCustomer.Subscriptions.Data[0].Id;

                            var subscriptionService = new StripeSubscriptionService();
                            StripeSubscription stripeSubscription = subscriptionService.Get(subscriptionID);

                            //Check if the user subscription is on or not: If on then Paid else Unpaid
                            if (stripeSubscription.Status == "active")
                            {
                                SessionController.UserSession.IsPaid = true;
                            }
                            else
                            {
                                SessionController.UserSession.IsPaid = false;
                            }
                        }
                        else
                        {
                            SessionController.UserSession.IsPaid = false;
                        }
                    }
                    else
                    {
                        SessionController.UserSession.IsPaid = false;
                    }
                }

                if (validateResult)
                {
                    var url = new
                    {
                        Url  = Request.Url.AbsoluteUri,
                        type = "Url"
                    };
                    return(Json(url, JsonRequestBehavior.AllowGet));
                }
            }
            ModelState.AddModelError("", "The user name or password provided is incorrect.");
            return(PartialView("_Login", loginModel));
        }
示例#4
0
        public async Task <ActionResult> ChargeSaveCustomer(SubscriptionModel model)
        {
            var subscriptionBA     = new Subscription();
            var serialization      = new Serialization();
            var status             = false;
            var HashCriteria       = new Hashtable();
            var actualCriteria     = string.Empty;
            var HashCriteriaPlan   = new Hashtable();
            var actualCriteriaPlan = string.Empty;
            var userID             = Convert.ToString(SessionController.UserSession.UserId);
            var subscriptionModel  = new SubscriptionModel();

            subscriptionModel.CardType            = GetPaymentCardType();
            subscriptionModel.ExpirationYearList  = GetExpirationYear();
            subscriptionModel.ExpirationMonthList = GetExpirationMonth();
            if (model.RoleID == 2)
            {
                ViewBag.SubscriptionTitle = "Find unlimited investment opportunities for $399 per month.";
            }
            else if (model.RoleID == 3)
            {
                ViewBag.SubscriptionTitle = "List unlimited investment opportunities for $399 per month.";
            }

            //Remove fields form model because these are required fieldsand we are not using these fields on paywall
            ModelState.Remove("State");
            ModelState.Remove("BillingAddress");
            ModelState.Remove("Zip");
            ModelState.Remove("City");
            if (!ModelState.IsValid)
            {
                return(PartialView("_PaymentSubscriptionPopup", subscriptionModel));
            }
            //Check if the user is already a custome ron stripe or not?
            var customer_ID = Convert.ToString(SessionController.UserSession.CustomerID);

            if (customer_ID != null && customer_ID != "")
            {
                if (model.Token != null)
                {
                    //For existing customer create new card
                    var cardOptions = new StripeCardCreateOptions()
                    {
                        SourceToken = model.Token
                    };

                    var        cardService = new StripeCardService();
                    StripeCard card        = cardService.Create(customer_ID, cardOptions);
                }
                else
                {
                    return(PartialView("_PaymentSubscriptionPopup", subscriptionModel));
                }
                model.CustomerID = customer_ID;
            }
            else
            {
                // 1. Create customer in stripe
                if (model.Token != null)
                {
                    var customerID = await CreateCustomer(model.Token);

                    model.CustomerID = customerID;
                    SessionController.UserSession.CustomerID = model.CustomerID;
                }
                else
                {
                    return(PartialView("_PaymentSubscriptionPopup", subscriptionModel));
                }
            }
            // 2. Get the plans from the Plans table
            HashCriteriaPlan.Add("ID", model.subscriptionOption.ID.ToString());
            actualCriteriaPlan = serialization.SerializeBinary((object)HashCriteriaPlan);

            var result              = subscriptionBA.GetPlanDetails(actualCriteriaPlan);
            var subscriptionPlans   = (SubscriptionPlans)(serialization.DeSerializeBinary(Convert.ToString(result)));
            var planID              = model.subscriptionOption.ID;
            var subscription_PlanID = subscriptionPlans.SubscriptionPlanID;
            var amount              = subscriptionPlans.Amount;

            // 3. subscription aginst that plan
            var subscriptionService = new StripeSubscriptionService();
            var stripeSubscription  = subscriptionService.Create(model.CustomerID, subscription_PlanID);

            //4. Make the payment
            model.Amount = amount;

            var chargeId = await ProcessPayment(model);

            if (chargeId != null)
            {
                DateTime billingDate = DateTime.Now;
                // 5. Save detals in the subscription table with amount and token of charge
                HashCriteria.Add("Token", model.Token);
                HashCriteria.Add("UserID", userID);
                HashCriteria.Add("Amount", model.Amount);
                HashCriteria.Add("BillingDate", Convert.ToString(billingDate.ToString("dd/MM/yyyy")));
                HashCriteria.Add("CustomerID", model.CustomerID);
                HashCriteria.Add("PlanID", planID);
                HashCriteria.Add("SubscriptionID", stripeSubscription.Id);
                HashCriteria.Add("ChargeID", chargeId);

                actualCriteria = serialization.SerializeBinary((object)HashCriteria);

                var subscriptionstatus = subscriptionBA.SaveSubscriptionData(actualCriteria);
                var subscriptionID     = Convert.ToInt64(serialization.DeSerializeBinary(Convert.ToString(subscriptionstatus)));

                if (subscriptionID > 0)
                {
                    // 6. Update the user role as Investor/Broker
                    status = UpdateUserRole(model.RoleID);
                    //Make the user flag as paid
                    SessionController.UserSession.IsPaid = true;
                    if (model.RoleID == 2)
                    {
                        Synoptek.SessionController.UserSession.RoleType = "Investor";
                    }
                    else if (model.RoleID == 3)
                    {
                        Synoptek.SessionController.UserSession.RoleType = "Broker";
                    }

                    //initialize userAuthModel
                    LoginController loginController = new LoginController();
                    var             loginBA         = new Login();
                    LoginModel      loginModel      = new LoginModel();
                    HashCriteria.Add("UserName", SessionController.UserSession.EmailAddress);
                    actualCriteria = serialization.SerializeBinary((object)HashCriteria);
                    var rec = loginBA.ValidateLogin(actualCriteria);
                    var loginModelDetails = (LoginModel)(serialization.DeSerializeBinary(Convert.ToString(rec)));

                    AuthenticationManager.SignOut(DefaultAuthenticationTypes.ApplicationCookie, DefaultAuthenticationTypes.ExternalCookie);

                    var userSession = loginController.Authenticate(loginModelDetails);
                    if (userSession != null)
                    {
                        var identity = new ClaimsIdentity(AuthenticationHelper.CreateClaim(userSession,
                                                                                           userSession.UserRole),
                                                          DefaultAuthenticationTypes.ApplicationCookie
                                                          );
                        AuthenticationManager.SignIn(new AuthenticationProperties()
                        {
                            AllowRefresh = true,
                            IsPersistent = true,
                            ExpiresUtc   = DateTime.UtcNow.AddHours(1)
                        }, identity);
                    }

                    if (model.RoleID == 2)
                    {
                        return(RedirectToAction("Investor", "Dashboard"));
                    }
                    if (model.RoleID == 3)
                    {
                        return(RedirectToAction("Broker", "Dashboard"));
                    }
                }
            }
            return(PartialView("_PaymentSubscriptionPopup", subscriptionModel));
        }