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(); }
public bool SignInIsValid(SignIn model, User user) { return _security.ValidatePassword(model.Password, user.Password); }