/******************************************************************************
Online Java Compiler.
Code, Compile, Run and Debug java program online.
Write your code in this editor and press "Run" button to execute it.
*******************************************************************************/
import java.util.HashMap;
import java.util.Map;
import java.io.*;
enum Premission {
USER,
ADMIN,
}
class User implements java.io.Serializable {
public String Login;
String password;
public Premission premission = Premission.USER;
public User(String login, String password){
Login = login; this.password = password;
}
public boolean MatchPassword(String password){
return this.password.equals(password);
}
public User SetPassword(String newPassword){
password = newPassword;
return this;
}
}
class DataStorage implements java.io.Serializable {
Map<String, User> users = new HashMap<>();
public User AddUser(String login, String password){
User newUser = new User(login, password);
users.put(login, newUser);
return newUser;
}
public User GetUser(String login){
return users.get(login);
}
public boolean HasUser(String login){
return users.containsKey(login);
}
public void SaveTo(String filename){
try
{
FileOutputStream file = new FileOutputStream(filename);
ObjectOutputStream out = new ObjectOutputStream(file);
out.writeObject(this);
out.close();
file.close();
}
catch(IOException ex)
{
System.out.println("IOException");
}
}
public static DataStorage LoadFrom(String filename){
try
{
DataStorage object;
FileInputStream file = new FileInputStream(filename);
ObjectInputStream in = new ObjectInputStream(file);
object = (DataStorage)in.readObject();
in.close();
file.close();
return object;
}
catch(IOException ex)
{
System.out.println("IOException");
}
catch (ClassNotFoundException ex){
System.out.println("ClassNotFoundException");
}
return null;
}
}
public class Main
{
public static DataStorage data;
public static void main(String[] args) {
File f = new File("database.obj");
if(f.exists() && !f.isDirectory()) {
data = DataStorage.LoadFrom("database.obj");
} else {
data = new DataStorage();
}
User currentUser = null;
cycle: while (true){
String command = System.console().readLine();
switch (command) {
case "register":
Register();
break;
case "login":
currentUser = Login();
break;
case "get premission":
System.out.println(currentUser.premission);
break;
case "set admin":
currentUser.premission = Premission.ADMIN;
break;
case "rem admin":
currentUser.premission = Premission.USER;
break;
case "stop":
data.SaveTo("database.obj");
break cycle;
}
}
}
public static User Login(){
System.out.println("Введите логин:");
String login = System.console().readLine();
if (!data.HasUser(login)){
System.out.println("Пользователя с таким логином не существует");
return null;
}
System.out.println("Введите пароль:");
String password = System.console().readLine();
User user = data.GetUser(login);
if (!user.MatchPassword(password)){
System.out.println("Неверный пароль!");
return null;
} else {
System.out.println("Вы успешно вошли");
return user;
}
}
public static void Register(){
System.out.println("Введите логин:");
String login = System.console().readLine();
if (data.HasUser(login)){
System.out.println("Пользователь с таким логином уже существует");
return;
}
System.out.println("Введите пароль:");
String password = System.console().readLine();
data.AddUser(login, password);
System.out.println("Пользователь создан");
return;
}
}