Добавлен менеджер аккаунтов
This commit is contained in:
parent
a6ed362fd0
commit
3914ce43df
87
src/tse/lr4/AccountManager.java
Normal file
87
src/tse/lr4/AccountManager.java
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
package tse.lr4;
|
||||||
|
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.ObjectInputStream;
|
||||||
|
import java.io.ObjectOutputStream;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Менеджер аккаунтов.
|
||||||
|
* @author aNNiMON
|
||||||
|
*/
|
||||||
|
public class AccountManager {
|
||||||
|
|
||||||
|
public static final byte STATE_ACCOUNT_NOT_EXISTS = 0;
|
||||||
|
public static final byte STATE_PASSWORD_INCORRECT = 1;
|
||||||
|
public static final byte STATE_AUTH_SUCCESSFULL = 2;
|
||||||
|
|
||||||
|
private static final String FILENAME = "accman";
|
||||||
|
|
||||||
|
private static AccountManager instance;
|
||||||
|
|
||||||
|
public static AccountManager getInstance() {
|
||||||
|
if (instance == null) {
|
||||||
|
instance = new AccountManager();
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
private ArrayList<Account> accounts;
|
||||||
|
|
||||||
|
public AccountManager() {
|
||||||
|
accounts = (ArrayList<Account>) deserialize(FILENAME);
|
||||||
|
if (accounts == null) accounts = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAccountExists(String login) {
|
||||||
|
for (Account account : accounts) {
|
||||||
|
if (login.equals(account.getLogin())) return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public byte checkAuth(String login, String md5hash) {
|
||||||
|
for (Account account : accounts) {
|
||||||
|
if (login.equals(account.getLogin())) {
|
||||||
|
if (md5hash.equals(account.getMd5hash())) {
|
||||||
|
return STATE_AUTH_SUCCESSFULL;
|
||||||
|
} else return STATE_PASSWORD_INCORRECT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return STATE_ACCOUNT_NOT_EXISTS;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void createNewAccount(String login, String md5hash) {
|
||||||
|
accounts.add(new Account(login, md5hash));
|
||||||
|
serialize(FILENAME, accounts);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void serialize(String filename, Object object) {
|
||||||
|
try {
|
||||||
|
FileOutputStream fos = new FileOutputStream(filename);
|
||||||
|
ObjectOutputStream oos = new ObjectOutputStream(fos);
|
||||||
|
oos.writeObject(object);
|
||||||
|
oos.flush();
|
||||||
|
oos.close();
|
||||||
|
fos.close();
|
||||||
|
} catch (IOException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Object deserialize(String filename) {
|
||||||
|
Object object = null;
|
||||||
|
try {
|
||||||
|
FileInputStream fis = new FileInputStream(filename);
|
||||||
|
ObjectInputStream ois = new ObjectInputStream(fis);
|
||||||
|
object = ois.readObject();
|
||||||
|
ois.close();
|
||||||
|
fis.close();
|
||||||
|
} catch (IOException | ClassNotFoundException ex) {
|
||||||
|
ex.printStackTrace();
|
||||||
|
}
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user