Browse Source

Separated User add/edit/delete into a overall account to cover user/email/git.

tags/2.0.3
Teknikode 3 years ago
parent
commit
d3b6e67edc

+ 5
- 3
ServerMaint/Program.cs View File

@@ -194,14 +194,16 @@ namespace ServerMaint
List<User> curUsers = db.Users.ToList();
foreach (User user in curUsers)
{
// If the username isn't valid, don't clean it (Reserved, not formatted correctly, etc)
// If the username is reserved, don't clean it
if (!UserHelper.ValidUsername(db, config, user.Username))
{
continue;
}

// If the username is invalid, let's clean the sucker, data and all

#region Inactivity Cleaning
DateTime lastActivity = UserHelper.GetLastActivity(db, config, user);
DateTime lastActivity = UserHelper.GetLastAccountActivity(db, config, user);

TimeSpan inactiveTime = DateTime.Now.Subtract(lastActivity);

@@ -383,7 +385,7 @@ namespace ServerMaint
{
sb.AppendLine(string.Format("{0},{1},{2},{3},{4},{5}",
user.Username,
UserHelper.GetLastActivity(db, config, user).ToString("g"),
UserHelper.GetLastAccountActivity(db, config, user).ToString("g"),
user.JoinDate.ToString("g"),
user.LastSeen.ToString("g"),
UserHelper.UserEmailLastActive(config, UserHelper.GetUserEmailAddress(config, user.Username)).ToString("g"),

+ 4
- 4
Teknik/Areas/User/Controllers/UserController.cs View File

@@ -55,7 +55,7 @@ namespace Teknik.Areas.Users.Controllers
model.Email = string.Format("{0}@{1}", user.Username, Config.EmailConfig.Domain);
}
model.JoinDate = user.JoinDate;
model.LastSeen = UserHelper.GetLastActivity(db, Config, user);
model.LastSeen = UserHelper.GetLastAccountActivity(db, Config, user);

model.UserSettings = user.UserSettings;
model.BlogSettings = user.BlogSettings;
@@ -236,7 +236,7 @@ namespace Teknik.Areas.Users.Controllers
newUser.BlogSettings = new BlogSettings();
newUser.UploadSettings = new UploadSettings();

UserHelper.AddUser(db, Config, newUser, model.Password);
UserHelper.AddAccount(db, Config, newUser, model.Password);
}
catch (Exception ex)
{
@@ -293,7 +293,7 @@ namespace Teknik.Areas.Users.Controllers

user.UploadSettings.SaveKey = saveKey;
user.UploadSettings.ServerSideEncrypt = serverSideEncrypt;
UserHelper.EditUser(db, Config, user, changePass, newPass);
UserHelper.EditAccount(db, Config, user, changePass, newPass);
return Json(new { result = true });
}
return Json(new { error = "User does not exist" });
@@ -316,7 +316,7 @@ namespace Teknik.Areas.Users.Controllers
User user = UserHelper.GetUser(db, User.Identity.Name);
if (user != null)
{
UserHelper.DeleteUser(db, Config, user);
UserHelper.DeleteAccount(db, Config, user);
// Sign Out
Logout();
return Json(new { result = true });

+ 93
- 31
Teknik/Areas/User/Utility/UserHelper.cs View File

@@ -21,6 +21,97 @@ namespace Teknik.Areas.Users.Utility
{
public static class UserHelper
{
#region Account Management
public static DateTime GetLastAccountActivity(TeknikEntities db, Config config, User user)
{
try
{
DateTime lastActive = new DateTime(1900, 1, 1);

DateTime emailLastActive = UserEmailLastActive(config, GetUserEmailAddress(config, user.Username));
if (lastActive < emailLastActive)
lastActive = emailLastActive;

DateTime gitLastActive = UserGitLastActive(config, user.Username);
if (lastActive < gitLastActive)
lastActive = gitLastActive;

DateTime userLastActive = UserLastActive(db, config, user);
if (lastActive < userLastActive)
lastActive = userLastActive;

return lastActive;
}
catch (Exception ex)
{
throw new Exception("Unable to determine last account activity.", ex);
}
}

public static void AddAccount(TeknikEntities db, Config config, User user, string password)
{
try
{
// Create an Email Account
AddUserEmail(config, GetUserEmailAddress(config, user.Username), password);

// Create a Git Account
AddUserGit(config, user.Username, password);

// Add User
AddUser(db, config, user, password);
}
catch (Exception ex)
{
throw new Exception("Unable to create account.", ex);
}
}

public static void EditAccount(TeknikEntities db, Config config, User user, bool changePass, string password)
{
try
{
// Changing Password?
if (changePass)
{
// Change email password
EditUserEmailPassword(config, GetUserEmailAddress(config, user.Username), password);

// Update Git password
EditUserGitPassword(config, user.Username, password);
}
// Update User
EditUser(db, config, user, changePass, password);
}
catch (Exception ex)
{
throw new Exception("Unable to edit account.", ex);
}
}

public static void DeleteAccount(TeknikEntities db, Config config, User user)
{
try
{
// Delete Email Account
if (UserEmailExists(config, GetUserEmailAddress(config, user.Username)))
DeleteUserEmail(config, GetUserEmailAddress(config, user.Username));

// Delete Git Account
if (UserGitExists(config, user.Username))
DeleteUserGit(config, user.Username);

// Delete User Account
DeleteUser(db, config, user);
}
catch (Exception ex)
{
throw new Exception("Unable to delete account.", ex);
}
}
#endregion

#region User Management
public static List<string> GetReservedUsernames(Config config)
{
List<string> foundNames = new List<string>();
@@ -36,7 +127,6 @@ namespace Teknik.Areas.Users.Utility
return foundNames;
}

#region User Management
public static User GetUser(TeknikEntities db, string username)
{
User user = db.Users.Where(b => b.Username == username).FirstOrDefault();
@@ -97,20 +187,12 @@ namespace Teknik.Areas.Users.Utility
return isAvailable;
}

public static DateTime GetLastActivity(TeknikEntities db, Config config, User user)
public static DateTime UserLastActive(TeknikEntities db, Config config, User user)
{
try
{
DateTime lastActive = new DateTime(1900, 1, 1);

DateTime emailLastActive = UserEmailLastActive(config, GetUserEmailAddress(config, user.Username));
if (lastActive < emailLastActive)
lastActive = emailLastActive;

DateTime gitLastActive = UserGitLastActive(config, user.Username);
if (lastActive < gitLastActive)
lastActive = gitLastActive;

if (lastActive < user.LastSeen)
lastActive = user.LastSeen;

@@ -118,7 +200,7 @@ namespace Teknik.Areas.Users.Utility
}
catch (Exception ex)
{
throw new Exception("Unable to determine last activity.", ex);
throw new Exception("Unable to determine last user activity.", ex);
}
}

@@ -126,12 +208,6 @@ namespace Teknik.Areas.Users.Utility
{
try
{
// Create an Email Account
AddUserEmail(config, GetUserEmailAddress(config, user.Username), password);

// Create a Git Account
AddUserGit(config, user.Username, password);

// Add User
user.HashedPassword = SHA384.Hash(user.Username, password);
db.Users.Add(user);
@@ -156,12 +232,6 @@ namespace Teknik.Areas.Users.Utility
// Changing Password?
if (changePass)
{
// Change email password
EditUserEmailPassword(config, GetUserEmailAddress(config, user.Username), password);

// Update Git password
EditUserGitPassword(config, user.Username, password);

// Update User password
user.HashedPassword = SHA384.Hash(user.Username, password);
}
@@ -178,14 +248,6 @@ namespace Teknik.Areas.Users.Utility
{
try
{
// Delete Email Account
if (UserEmailExists(config, GetUserEmailAddress(config, user.Username)))
DeleteUserEmail(config, GetUserEmailAddress(config, user.Username));

// Delete Git Account
if (UserGitExists(config, user.Username))
DeleteUserGit(config, user.Username);

// Update uploads
List<Upload.Models.Upload> uploads = db.Uploads.Include("User").Where(u => u.User.Username == user.Username).ToList();
if (uploads != null)

Loading…
Cancel
Save