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() {
return m_userManager;
}
const UserManager& GetUserManager() const {
return m_userManager;
}
private:
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 / "savedata", ec);
std::filesystem::create_directory(user_dir / "trophy", ec);
std::filesystem::create_directory(user_dir / "trophy/data", ec);
}
return true;
@@ -86,6 +87,7 @@ std::vector<User> UserManager::CreateDefaultUser() {
std::filesystem::create_directory(user_dir);
std::filesystem::create_directory(user_dir / "savedata");
std::filesystem::create_directory(user_dir / "trophy");
std::filesystem::create_directory(user_dir / "trophy/data");
}
return {default_user};
@@ -110,3 +112,19 @@ void UserManager::SetControllerPort(u32 user_id, int 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();
bool SetDefaultUser(u32 user_id);
void SetControllerPort(u32 user_id, int port);
std::vector<User> GetValidUsers() const;
Users& GetUsers() {
return m_users;