Exemplo n.º 1
0
        public ResetResult ResetUserPassword(Guid token, string newPassword)
        {
            var result = new ResetResult();
              _session = _session ?? new Session();
              var user = GetUserByToken(token);
              if (user != null) {
            if (PasswordResetIsValid(newPassword)) {
              if (ResetWindowIsOpen(user)) {

            var hashed = BCryptHelper.HashPassword(newPassword, BCryptHelper.GenerateSalt(10));
            user.HashedPassword = hashed;
            user.AddLogEntry("Login", "Password was reset");
            _session.SaveChanges();
            result.Successful = true;
            result.Message = Properties.Resources.PasswordResetSuccessful;
            result.User = user;
              } else {
            result.Message = Properties.Resources.PasswordResetExpired;
              }
            } else {
              result.Message = Properties.Resources.InvalidPassword;
            }
              } else {
            result.Message = Properties.Resources.PasswordResetTokenInvalid;
              }
              _session.Dispose();
              return result;
        }
Exemplo n.º 2
0
        public AuthenticationResult AuthenticateUser(Credentials creds)
        {
            _session = new Session();
              var result = new AuthenticationResult();
              User user = null;
              this.CurrentCredentials = creds;

              if (EmailOrPasswordNotPresent()) {
            result = InvalidLogin(Properties.Resources.EmailOrPasswordMissing);
              } else {
            //find the user
            user = LocateUser();

            //if they're not here, we're done
            if (user == null) {
              result = InvalidLogin(Properties.Resources.InvalidLogin);

              //does the password match?
            } else if (HashedPasswordDoesNotMatch(user)) {
              result = InvalidLogin(Properties.Resources.InvalidLogin);

              //success
            } else {
              //success!
              user.AddLogEntry("Login", "User logged in");
              result.Session = CreateSession(user);

              SetUserLoginStats(user);
              //save changes
              UserAuthenticated(user);

              result.Authenticated = true;
              result.User = user;
              result.Message = Properties.Resources.UserAuthenticated;

              _session.SaveChanges();
            }
              }

              //dispose of this
              _session.Dispose();

              return result;
        }
Exemplo n.º 3
0
        public ReminderResult SendReminderTokenToUser(string email)
        {
            _session = new Session();
              var result = new ReminderResult();
              result.User = GetUserByEmail(email);

              if (result.User != null) {
            result.User.ReminderToken = Guid.NewGuid();
            result.User.ReminderSentAt = DateTime.Now;

            var mailer = GetReminderMailer();
            var link = CreateReminderLink(result.User);
            var message = UserMailerMessage.CreateFromTemplate(mailer,link);

            if (message.Successful) {
              result.User.AddLogEntry("Login", "Reminder email sent at " + DateTime.Now.ToShortDateString());
            } else {
              result.User.AddLogEntry("Login", "Reminder email failed to send  " + DateTime.Now.ToShortDateString());
            }

            result.MailMessage = message.SendTo(result.User);

            _session.SaveChanges();
              } else {
            result.Message = Properties.Resources.EmailNotFound;
              }

              _session.Dispose();

              return result;
        }
Exemplo n.º 4
0
        public AuthenticationResult AuthenticateUserByToken(string token, string ip = "127.0.0.1")
        {
            var result = new AuthenticationResult();
              _session = new Session();

              if (String.IsNullOrWhiteSpace(token)) {
            result = InvalidLogin("No token provided");
              } else {
            this.CurrentCredentials = new Credentials { Token = Guid.Parse(token), IP = ip };

            var user = FindUserByAuthenticationToken();
            if (user == null) {
              result = InvalidLogin("Invalid token");
            } else {
              //success
              user.AddLogEntry("Login", "User logged in by token");
              result.Session = CreateSession(user);
              SetUserLoginStats(user);
              UserAuthenticated(user);

              result.Authenticated = true;
              result.User = user;
              result.Message = Properties.Resources.UserAuthenticated;
              _session.SaveChanges();
            }
              }
              _session.Dispose();
              return result;
        }