public async Task <ActionResult> Login(string username, string password, bool RememberMe = false)
        {
            System.Diagnostics.Debug.WriteLine("RememberMe value*************** " + RememberMe);
            var result = await SignInManager.PasswordSignInAsync(username, password, RememberMe, false);

            try
            {
                if (!string.IsNullOrWhiteSpace(username))
                {
                    UserProvider     userprovider = new UserProvider(this.Connector);
                    UserStoreManager usermanager  = new UserStoreManager(userprovider);
                    LocalUser        myuser       = usermanager.AuthLogin(username, password);
                    if (RememberMe && myuser != null && myuser.IsAuthenticated)
                    {
                        HttpCookie myCookie = new HttpCookie("UserSettings");
                        myCookie["Email"] = username;
                        myCookie["PWD"]   = password;
                        myCookie.Expires  = DateTime.Now.AddDays(30d);
                        Response.Cookies.Add(myCookie);

                        this.LocalAuthorizeUser(myuser);
                        return(RedirectToAction("Index", "Home", new { UserId = myuser.UserId }));
                    }
                    else
                    if (myuser != null && myuser.IsAuthenticated)
                    {
                        this.LocalAuthorizeUser(myuser);
                        return(RedirectToAction("Index", "Home", new { UserId = myuser.UserId }));
                    }
                    else
                    {
                        throw new Exception("User not found");
                    }
                }
            }
            catch (Exception ex)
            {
                this.PageInfo.CreateAlert("Login Error", 4);
            }
            return(RedirectToAction("Login"));
        }
        public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "Manage"));
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await AuthenticationManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    return(View("ExternalLoginFailure"));
                }
                //SOLUTIONS.GENERAL.IDENTITY.USER.FORM.CreateUserForm user = new SOLUTIONS.GENERAL.IDENTITY.USER.FORM.CreateUserForm()
                //{
                //    Mail = model.Email,
                //    IDContact = 0,
                //    Password= model.Password,
                //    ConfirmPassword=model.ConfirmPassword,
                //    Phone=model.Phone,
                //    Pseudo= model.Name
                //};
                //var localuser=userprovider.CreateUser(user, new SOLUTIONS.GENERAL.ACCOUNT.Account());
                //if (localuser != null)
                //{
                //   // this.LocalAuthorizeUser(myuser);
                //    return RedirectToAction("Index", "Home", new { IDUser = localuser.UserName });
                //}
                SOLUTIONS.GENERAL.IDENTITY.USER.LocalUser user = new SOLUTIONS.GENERAL.IDENTITY.USER.LocalUser
                {
                    UserName      = model.Email,
                    IDAccount     = 1,
                    IDContact     = 0,
                    Password      = model.Password,
                    Pseudo        = (model.Name != "" && model.Name != null) ? model.Name : model.Email,
                    SecurityMail  = model.Email,
                    SecurityPhone = model.Phone,
                    UserLevel     = SOLUTIONS.GENERAL.IDENTITY.USER.ENUMS.UserLevelEnum.STANDARD
                };

                UserProvider     userprovider = new UserProvider(this.Connector);
                UserStoreManager usermanager  = new UserStoreManager(userprovider);
                LocalUser        myuser       = usermanager.CreateExternalLogin(user);
                if (myuser == null)
                {
                    IdentityResult result = new IdentityResult("something went wrong while registering please try again after sometime.");
                    AddErrors(result);
                }
                else
                {
                    this.LocalAuthorizeUser(myuser);
                    return(RedirectToAction("Index", "Home", new { UserId = myuser.UserName }));
                }
                //var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
                //var result = await UserManager.CreateAsync(user);
                //if (result.Succeeded)
                //{
                //    result = await UserManager.AddLoginAsync(user.Id, info.Login);
                //    if (result.Succeeded)
                //    {
                //        await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
                //        return RedirectToLocal(returnUrl);
                //    }
                //}
                //AddErrors(result);
            }

            ViewBag.ReturnUrl = returnUrl;
            return(View(model));
        }
        public async Task <ActionResult> ExternalLoginCallback(string returnUrl)
        {
            var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();

            var dta = HttpContext.GetOwinContext();

            if (loginInfo == null)
            {
                return(RedirectToAction("Login"));
            }
            //var url= HttpContext.Current.Request.QueryString;
            // Sign in the user with this external login provider if the user already has a login
            //var result = await SignInManager.ExternalSignInAsync(loginInfo, isPersistent: false);
            UserProvider     userprovider = new UserProvider(this.Connector);
            UserStoreManager usermanager  = new UserStoreManager(userprovider);
            var email = "";

            if (loginInfo.Login.LoginProvider == "Facebook")
            {
                var    identity     = AuthenticationManager.GetExternalIdentity(DefaultAuthenticationTypes.ExternalCookie);
                var    access_token = identity.FindFirstValue("FacebookAccessToken");
                var    fb           = new FacebookClient(access_token);
                object myInfo       = fb.Get("/me?fields=name,email");
                // specify the email field
                //string emailid = (new System.Collections.Generic.Mscorlib_DictionaryValueCollectionDebugView<string, object>(((Facebook.JsonObject)myInfo).Values).Items[0])
                // var soap = JsonConvert.DeserializeObject<object>(myInfo);
                string str = myInfo.ToString();
                Demo   d   = JsonConvert.DeserializeObject <Demo>(str);
                email = d.email;
            }
            else
            {
                email = loginInfo.Email;
            }

            LocalUser myuser = usermanager.ExternalAuthLogin(email);

            //if (myuser != null && myuser.IsAuthenticated)
            //{
            //    this.LocalAuthorizeUser(myuser);
            //    return RedirectToAction("Index", "Home", new { IDUser = myuser.IDUser });
            //}		Key	"email"	string

            if (myuser == null)
            {
                ViewBag.ReturnUrl     = returnUrl;
                ViewBag.LoginProvider = loginInfo.Login.LoginProvider;
                return(View("ExternalLoginConfirmation", new ExternalLoginConfirmationViewModel {
                    Email = email
                }));
            }
            else
            {
                this.LocalAuthorizeUser(myuser);
                return(RedirectToAction("Index", "Home", new { UserId = myuser.UserName }));
            }

            //    switch (result)
            //{

            //    case SignInStatus.Success:
            //        return RedirectToLocal(returnUrl);
            //    case SignInStatus.LockedOut:
            //        return View("Lockout");
            //    case SignInStatus.RequiresVerification:
            //        return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = false });
            //    case SignInStatus.Failure:
            //    default:
            //        // If the user does not have an account, then prompt the user to create an account

            //}
        }