public static bool VerifyRecoveryEmail(TeknikEntities db, Config config, string username, string code) { User user = GetUser(db, username); RecoveryEmailVerification verCode = db.RecoveryEmailVerifications.Where(r => r.User.Username == username && r.Code == code).FirstOrDefault(); if (verCode != null) { // We have a match, so clear out the verifications for that user List<RecoveryEmailVerification> verCodes = db.RecoveryEmailVerifications.Where(r => r.User.Username == username).ToList(); if (verCodes != null && verCodes.Any()) { foreach (RecoveryEmailVerification ver in verCodes) { db.RecoveryEmailVerifications.Remove(ver); } } // Update the user user.SecuritySettings.RecoveryVerified = true; db.Entry(user).State = EntityState.Modified; db.SaveChanges(); return true; } return false; }
public static void EditUser(TeknikEntities db, Config config, User user, bool changePass, string password) { try { // Changing Password? if (changePass) { // Update User password user.HashedPassword = SHA384.Hash(user.Username.ToLower(), password).ToHex(); } db.Entry(user).State = EntityState.Modified; db.SaveChanges(); } catch (Exception ex) { throw new Exception(string.Format("Unable to edit user {0}.", user.Username), ex); } }
public static void DeleteUser(TeknikEntities db, Config config, User user) { try { // Update uploads List<Upload.Models.Upload> uploads = db.Uploads.Where(u => u.User.Username == user.Username).ToList(); if (uploads != null) { foreach (Upload.Models.Upload upload in uploads) { upload.UserId = null; db.Entry(upload).State = EntityState.Modified; } db.SaveChanges(); } // Update pastes List<Paste.Models.Paste> pastes = db.Pastes.Where(u => u.User.Username == user.Username).ToList(); if (pastes != null) { foreach (Paste.Models.Paste paste in pastes) { paste.UserId = null; db.Entry(paste).State = EntityState.Modified; } db.SaveChanges(); } // Update shortened urls List<ShortenedUrl> shortUrls = db.ShortenedUrls.Where(u => u.User.Username == user.Username).ToList(); if (shortUrls != null) { foreach (ShortenedUrl shortUrl in shortUrls) { shortUrl.UserId = null; db.Entry(shortUrl).State = EntityState.Modified; } db.SaveChanges(); } // Delete Blogs Blog.Models.Blog blog = db.Blogs.Where(u => u.User.Username == user.Username).FirstOrDefault(); if (blog != null) { db.Blogs.Remove(blog); db.SaveChanges(); } // Delete post comments List<BlogPostComment> postComments = db.BlogComments.Where(u => u.User.Username == user.Username).ToList(); if (postComments != null) { foreach (BlogPostComment postComment in postComments) { db.BlogComments.Remove(postComment); } db.SaveChanges(); } // Delete podcast comments List<Podcast.Models.PodcastComment> podComments = db.PodcastComments.Where(u => u.User.Username == user.Username).ToList(); if (podComments != null) { foreach (Podcast.Models.PodcastComment podComment in podComments) { db.PodcastComments.Remove(podComment); } db.SaveChanges(); } // Delete Recovery Email Verifications List<RecoveryEmailVerification> verCodes = db.RecoveryEmailVerifications.Where(r => r.User.Username == user.Username).ToList(); if (verCodes != null) { foreach (RecoveryEmailVerification verCode in verCodes) { db.RecoveryEmailVerifications.Remove(verCode); } db.SaveChanges(); } // Delete Password Reset Verifications List<ResetPasswordVerification> verPass = db.ResetPasswordVerifications.Where(r => r.User.Username == user.Username).ToList(); if (verPass != null) { foreach (ResetPasswordVerification ver in verPass) { db.ResetPasswordVerifications.Remove(ver); } db.SaveChanges(); } // Delete User db.Users.Remove(user); db.SaveChanges(); } catch (Exception ex) { throw new Exception(string.Format("Unable to delete user {0}.", user.Username), ex); } }
public static void TransferUser(TeknikEntities db, Config config, User user, string password) { try { List<TransferType> transfers = user.Transfers.ToList(); for (int i = 0; i < transfers.Count; i++) { TransferType transfer = transfers[i]; switch (transfer.Type) { case TransferTypes.Sha256Password: case TransferTypes.CaseSensitivePassword: case TransferTypes.ASCIIPassword: user.HashedPassword = SHA384.Hash(user.Username.ToLower(), password).ToHex(); break; default: break; } user.Transfers.Remove(transfer); } db.Entry(user).State = EntityState.Modified; db.SaveChanges(); } catch (Exception ex) { throw new Exception("Unable to transfer user info.", ex); } }