// 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; } }
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; } }
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; } }
//------------------- 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; } }