public ActionResult RegisterLogOn(RegisterLogOnViewModel viewModel, string returnUrl)
        {
            if (FacebookWebContext.Current.IsAuthenticated())
            {
                var client = new FacebookWebClient();
                dynamic me = client.Get("me");

                if (!_userRepository.UserExist(me.username))
                {
                    var user = new User(AuthenticationType.Facebook) { Username = me.username };

                    _userRepository.Add(user);
                    _unitOfWork.Commit();
                }

                FormsAuthentication.SetAuthCookie((string)me.username, false);

                if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                    && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                    return Redirect(returnUrl);

                return RedirectToAction("Index", "Home");
            }

            return View("RegisterLogOn", viewModel);
        }
        public ActionResult Register(RegisterLogOnViewModel viewModel)
        {
            ValidateModel(viewModel.RegisterViewModel);

            if (ModelState.IsValid)
            {
                var user = new User(AuthenticationType.Custom);
                Mapper.Map(viewModel.RegisterViewModel, user);

                _userRepository.Add(user);
                _unitOfWork.Commit();

                //TODO: Send confirmation e-mail
            }

            return View("RegisterLogOn", viewModel);
        }
        public ActionResult LogOn(RegisterLogOnViewModel viewModel, string returnUrl)
        {
            ValidateModel(viewModel.LogOnViewModel);

            var user = Mapper.Map<LogOnViewModel, User>(viewModel.LogOnViewModel);

            if (ModelState.IsValid)
            {
                if (_userRepository.ValidateUser(user))
                {
                    FormsAuthentication.SetAuthCookie(viewModel.LogOnViewModel.UserName, viewModel.LogOnViewModel.RememberMe);

                    if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                        && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                        return Redirect(returnUrl);

                    return RedirectToAction("Index", "Home");
                }

                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }

            return View("RegisterLogOn", viewModel);
        }