Esempio n. 1
0
 // Change Password from Forgot password key
 public int ChangeForgottenPassword(string password)
 {
     try
     {
         using (PortfolioEntities dc = new PortfolioEntities())
         {
             tblForgotPassword forgottenpass = dc.tblForgotPasswords.Where(u => u.UserId == Id).FirstOrDefault();
             if ((DateTime.Now) < (forgottenpass.ExpirationDate))
             {
                 // Current time is earlier than expiration date of reset link
                 tblUser user = dc.tblUsers.Where(u => u.Id == Id).FirstOrDefault();
                 if (user != null)
                 {
                     // User exists
                     user.Password = GetHash(password, user.Id);
                     return(dc.SaveChanges());
                 }
                 else
                 {
                     throw new Exception("User not found");
                 }
             }
             else
             {
                 throw new Exception("Password Reset Link Expired");
             }
         }
     }
     catch (Exception ex) { throw ex; }
 }
Esempio n. 2
0
        public int ClearForgottenPasswordsByUser(tblUser user)
        {
            try
            {
                using (PortfolioEntities dc = new PortfolioEntities())
                {
                    var links = (from link in dc.tblForgotPasswords
                                 join u in dc.tblUsers on link.UserId equals u.Id
                                 where link.UserId == user.Id
                                 select new
                    {
                        link.Id,
                        link.UserId,
                        link.ExpirationDate
                    }).ToList();

                    foreach (var link in links)
                    {
                        tblForgotPassword forgottenpass = dc.tblForgotPasswords.Where(p => p.Id == link.Id).FirstOrDefault();
                        forgottenpass.Id             = link.Id;
                        forgottenpass.ExpirationDate = link.ExpirationDate;
                        forgottenpass.UserId         = link.UserId;
                        dc.tblForgotPasswords.Remove(forgottenpass);
                    }
                    return(dc.SaveChanges());
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Esempio n. 3
0
 public int Delete()
 {
     try
     {
         using (PortfolioEntities dc = new PortfolioEntities())
         {
             tblForgotPassword fg = dc.tblForgotPasswords.Where(u => u.Id == Id).FirstOrDefault();
             if (fg != null)
             {
                 dc.tblForgotPasswords.Remove(fg);
                 return(dc.SaveChanges());
             }
             else
             {
                 throw new Exception("User not found");
             }
         }
     }
     catch (Exception ex) { throw ex; }
 }
Esempio n. 4
0
        //------------------- END PASSWORD METHODS ---------------------
        #endregion User Password

        #region Password Recovery
        //------------------- START PASSWORD RECOVERY METHODS ---------------------

        // Generate ForgotPasswordKey
        public Guid ForgotPasswordKeyGen(string email)
        {
            try
            {
                using (PortfolioEntities dc = new PortfolioEntities())
                {
                    //Create a new row in the table for this forgotten password request
                    tblUser            user          = dc.tblUsers.Where(u => u.Email == email).FirstOrDefault();
                    tblForgotPassword  fp            = new tblForgotPassword();
                    ForgotPasswordList previouslinks = new ForgotPasswordList();

                    // Clears previous reset links associated with user
                    previouslinks.ClearForgottenPasswordsByUser(user);

                    try
                    {
                        // Inserting new reset link in DB (User currently has none in DB here)
                        fp.Id     = Guid.NewGuid();
                        fp.UserId = dc.tblUsers.FirstOrDefault(u => u.Email == email).Id;

                        // Expiration of reset link set to 2 hours from link creation
                        fp.ExpirationDate = DateTime.Now.AddHours(2);
                        dc.tblForgotPasswords.Add(fp);
                        dc.SaveChanges();
                        return(fp.Id);
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }