public bool Authenticate(string token)
        {
            if (string.IsNullOrWhiteSpace(token))
            {
                return false;
            }
            var encodedDataAsBytes = Convert.FromBase64String(token.Replace("Basic ", string.Empty));
            var value = Encoding.ASCII.GetString(encodedDataAsBytes);
            var userpass = value;
            
            var user = userpass.Substring(0, userpass.IndexOf(':'));
            var password = userpass.Substring(userpass.IndexOf(':') + 1);

            var identity = _accountService.GetUser(user, true);
            if(identity == null)
            {
                return false;
            }

            var model = new SignIn {Email = user, Password = password};
            return _accountService.SignInIsValid(model, identity);
        }
        public ActionResult SignIn(SignIn model)
        {L
            if (Request.IsLocal && Cohort.Site.LocalAuth.Enabled)
            {
                Logger.Info("Signing in user locally");

                var user = Cohort.SignInLocal();
                if (user.IsAuthenticated())
                {
                    return RedirectToAction("Index", "Home", new { area = "User" });
                }
            }

            if (ModelState.IsValid)
            {
                Logger.Info("ModelState has all required information to sign in");

                var user = _accounts.GetUser(model.Email, activatedOnly: true);
                if (user == null || !_accounts.SignInIsValid(model, user))
                {
                    ModelState.AddModelError("", "Either the email address or the password you provided is incorrect.");
                    return View();
                }

                Logger.Info("Sign in credentials are valid for " + user.Identity);
                var ip = _accounts.GetIPAddress(Request);
                Logger.Info("Signing in from address " + ip);
                _accounts.SignIn(model.Email, ip, model.RememberMe);
                return RedirectToAction("Index", "Home", new { area = "User" });
            }

            Logger.Info("ModelState was not valid:");
            foreach(var state in ModelState)
            {
                Logger.Info(string.Format("{0}:{1}", state.Key, state.Value));
            }

            return View();
        }
示例#3
0
 public bool SignInIsValid(SignIn model, User user)
 {
     return _security.ValidatePassword(model.Password, user.Password);
 }