GetValidUsers function to check users with valid home directories

This commit is contained in:
georgemoralis
2025-12-09 18:24:22 +02:00
parent fca94497b1
commit 868ad608b2
3 changed files with 19 additions and 3 deletions

View File

@@ -285,9 +285,6 @@ public:
UserManager& GetUserManager() { UserManager& GetUserManager() {
return m_userManager; return m_userManager;
} }
const UserManager& GetUserManager() const {
return m_userManager;
}
private: private:
GeneralSettings m_general{}; GeneralSettings m_general{};

View File

@@ -24,6 +24,7 @@ bool UserManager::AddUser(const User& user) {
std::filesystem::create_directory(user_dir, ec); std::filesystem::create_directory(user_dir, ec);
std::filesystem::create_directory(user_dir / "savedata", ec); std::filesystem::create_directory(user_dir / "savedata", ec);
std::filesystem::create_directory(user_dir / "trophy", ec); std::filesystem::create_directory(user_dir / "trophy", ec);
std::filesystem::create_directory(user_dir / "trophy/data", ec);
} }
return true; return true;
@@ -86,6 +87,7 @@ std::vector<User> UserManager::CreateDefaultUser() {
std::filesystem::create_directory(user_dir); std::filesystem::create_directory(user_dir);
std::filesystem::create_directory(user_dir / "savedata"); std::filesystem::create_directory(user_dir / "savedata");
std::filesystem::create_directory(user_dir / "trophy"); std::filesystem::create_directory(user_dir / "trophy");
std::filesystem::create_directory(user_dir / "trophy/data");
} }
return {default_user}; return {default_user};
@@ -109,4 +111,20 @@ void UserManager::SetControllerPort(u32 user_id, int port) {
if (u.user_id == user_id) if (u.user_id == user_id)
u.controller_port = port; u.controller_port = port;
} }
}
// Returns a list of users that have valid home directories
std::vector<User> UserManager::GetValidUsers() const {
std::vector<User> result;
result.reserve(m_users.user.size());
const auto home_dir = EmulatorSettings::GetInstance()->GetHomeDir();
for (const auto& user : m_users.user) {
const auto user_dir = home_dir / std::to_string(user.user_id);
if (std::filesystem::exists(user_dir)) {
result.push_back(user);
}
}
return result;
} }

View File

@@ -31,6 +31,7 @@ public:
std::vector<User> CreateDefaultUser(); std::vector<User> CreateDefaultUser();
bool SetDefaultUser(u32 user_id); bool SetDefaultUser(u32 user_id);
void SetControllerPort(u32 user_id, int port); void SetControllerPort(u32 user_id, int port);
std::vector<User> GetValidUsers() const;
Users& GetUsers() { Users& GetUsers() {
return m_users; return m_users;