package de.maxgb.minecraft.second_screen.data;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import net.minecraftforge.common.config.Configuration;
import de.maxgb.minecraft.second_screen.Configs;
import de.maxgb.minecraft.second_screen.util.Constants;
import de.maxgb.minecraft.second_screen.util.Helper;
import de.maxgb.minecraft.second_screen.util.Logger;
import de.maxgb.minecraft.second_screen.util.User;
/**
* Manages the second screen users
* @author Max
*
*/
public class UserManager {
private static final String TAG = "UserManager";
private static ArrayList<User> auth_users = new ArrayList<User>();
private static ArrayList<User> temp_users = new ArrayList<User>();
public static void addUser(String username, int pass) {
if (username != null && !username.equals("")) {
for (User u : auth_users) {
if (u.username.equals(username)) {
u.setPassword(pass);
return;
}
}
auth_users.add(new User(username, pass));
}
}
/**
* Returns if the username password combination is correct
*
* @param username
* Username
* @param password
* Passwordhash
* @return
*/
public static boolean auth(String username, int pass) {
User u = getUser(username);
if (u == null) {
return false;
}
return u.getPassword() == pass;
}
/**
* Gets the user with the given username
*
* @param username
* @return
*/
public static User getUser(String username) {
if (Configs.auth_required) {
for (User u : auth_users) {
if (u.username.equals(username)) {
if (Helper.isPlayerOpped(u.username)) {
u.setAllAllowed(true);
}
return u;
}
}
return null;
}
User u = new User(username, 0);
u.setAllAllowed(true);
temp_users.add(u);
return u;
}
private static File getUsersDir() {
File dir = new File(DataStorageDriver.getSaveDir(), Constants.USER_SAVE_DIR);
dir.mkdirs();
return dir;
}
/**
* Loads a user from file
*
* @param f
* @return User or null if unsuccesfull
*/
private static User loadUser(File f) {
Configuration config = new Configuration(f);
return User.readFromConfig(config);
}
public static void loadUsers() {
auth_users = new ArrayList<User>();
File dir = getUsersDir();
File[] files = dir.listFiles();
for (File f : files) {
if (f.isFile()) {
User u = loadUser(f);
if (u != null) {
auth_users.add(u);
}
}
}
Logger.i(TAG, "Loaded " + auth_users.size() + " users");
}
private static void saveUser(File f, User u) {
try {
f.createNewFile();
Configuration config = new Configuration(f);
u.saveToConfig(config);
} catch (IOException e) {
Logger.e(TAG, "Failed to create user config for " + u.username);
}
}
public static void saveUsers() {
for (User u : auth_users) {
File uf = new File(getUsersDir(), u.username);
saveUser(uf, u);
}
}
}