Autenticazione adminMode
This commit is contained in:
@@ -32,6 +32,7 @@ public class FatturaScontrini {
|
||||
static final String PATH_MENU = "./src/fatturascontrini/menu.txt";
|
||||
static final String PATH_SCONTRINI = "./src/fatturascontrini/scontrini/";
|
||||
static final String PATH_FATTURA = "./src/fatturascontrini/fatture/";
|
||||
static final String PATH_PROGRAM_DATA = "./src/fatturascontrini/programData.txt";
|
||||
static final String ERRORE_DEFAULT = "Errore: opzione non valida.";
|
||||
static final String ERRORE_FILE = "Errore nella lettura del file: ";
|
||||
static int codiceScontrino = 0;
|
||||
@@ -64,13 +65,8 @@ public class FatturaScontrini {
|
||||
pausa();
|
||||
break;
|
||||
case 3:
|
||||
if (!trovaScontrini().isEmpty()) {
|
||||
fattura();
|
||||
} else {
|
||||
System.out.println(
|
||||
"Errore: è necessario pagare prima di procedere alla creazione della fattura.");
|
||||
}
|
||||
pausa();
|
||||
autenticazione();
|
||||
adminMode();
|
||||
break;
|
||||
default:
|
||||
System.out.println("Opzione non valida.");
|
||||
@@ -180,7 +176,7 @@ public class FatturaScontrini {
|
||||
ritorno = sc.nextInt();
|
||||
sc.nextLine();
|
||||
|
||||
if (ritorno < 0 || ritorno >= getMenuSize()) {
|
||||
if (ritorno < 0 || ritorno >= getFileSize(PATH_MENU)) {
|
||||
System.out.println(ERRORE_DEFAULT);
|
||||
pausa();
|
||||
error = true;
|
||||
@@ -200,7 +196,7 @@ public class FatturaScontrini {
|
||||
StringTokenizer st;
|
||||
String riga = br.readLine();
|
||||
|
||||
for (int i = 0; i < getMenuSize(); i++) {
|
||||
for (int i = 0; i < getFileSize(PATH_MENU); i++) {
|
||||
st = new StringTokenizer(riga, ":");
|
||||
System.out.println(i + ". " + st.nextToken() + ": " + st.nextToken().trim());
|
||||
riga = br.readLine();
|
||||
@@ -210,9 +206,9 @@ public class FatturaScontrini {
|
||||
}
|
||||
}
|
||||
|
||||
static int getMenuSize() {
|
||||
static int getFileSize(String path) {
|
||||
int i = 0;
|
||||
try (BufferedReader br = new BufferedReader(new FileReader(PATH_MENU))) {
|
||||
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
|
||||
String riga = br.readLine();
|
||||
|
||||
while (riga != null) {
|
||||
@@ -318,11 +314,11 @@ public class FatturaScontrini {
|
||||
}
|
||||
|
||||
static String[][] tabellaNomePrezzo() {
|
||||
String[][] ritorno = new String[2][getMenuSize()];
|
||||
String[][] ritorno = new String[2][getFileSize(PATH_MENU)];
|
||||
try (BufferedReader br = new BufferedReader(new FileReader(PATH_MENU))) {
|
||||
String riga = br.readLine();
|
||||
|
||||
for (int i = 0; i < getMenuSize(); i++) {
|
||||
for (int i = 0; i < getFileSize(PATH_MENU); i++) {
|
||||
ritorno[0][i] = riga.split(":")[0];
|
||||
ritorno[1][i] = riga.split(":")[1].trim();
|
||||
riga = br.readLine();
|
||||
@@ -381,7 +377,7 @@ public class FatturaScontrini {
|
||||
scelta = sc.nextInt();
|
||||
sc.nextLine();
|
||||
|
||||
if (scelta < 0 || scelta >= getMenuSize()) {
|
||||
if (scelta < 0 || scelta >= getFileSize(PATH_MENU)) {
|
||||
System.out.println(ERRORE_DEFAULT);
|
||||
pausa();
|
||||
error = true;
|
||||
@@ -426,6 +422,128 @@ public class FatturaScontrini {
|
||||
}
|
||||
}
|
||||
|
||||
static void adminMode() {
|
||||
int scelta = -1;
|
||||
|
||||
do {
|
||||
System.out.println("Scegliere un'opzione:");
|
||||
System.out.println("1. Visualizza menu");
|
||||
System.out.println("2. Aggiunta di un nuovo piatto al menu");
|
||||
System.out.println("3. Rimozione di un nuovo piatto dal menu");
|
||||
System.out.println("4. Fatturazione elettronica della giornata");
|
||||
System.out.println("0. Esci dalla modalità amministratore");
|
||||
System.out.print("Opzione: ");
|
||||
|
||||
try {
|
||||
scelta = sc.nextInt();
|
||||
sc.nextLine();
|
||||
|
||||
switch (scelta) {
|
||||
case 0:
|
||||
break;
|
||||
case 1:
|
||||
stampaMenu();
|
||||
pausa();
|
||||
break;
|
||||
case 2:
|
||||
// ordinazione = placeOrdinazione(ordinazione);
|
||||
pausa();
|
||||
break;
|
||||
case 3:
|
||||
adminMode();
|
||||
pausa();
|
||||
break;
|
||||
case 4:
|
||||
adminMode();
|
||||
pausa();
|
||||
break;
|
||||
default:
|
||||
System.out.println("Opzione non valida.");
|
||||
pausa();
|
||||
break;
|
||||
}
|
||||
} catch (InputMismatchException _) {
|
||||
System.out.println("Errore: scelta non valida.");
|
||||
pausa();
|
||||
}
|
||||
} while (scelta != 0);
|
||||
}
|
||||
|
||||
static void autenticazione() {
|
||||
String username;
|
||||
String password;
|
||||
boolean error;
|
||||
int failedLoginCount = 0;
|
||||
final int MAX_FAILED_LOGIN_COUNT = 3;
|
||||
String savedUsername = "";
|
||||
String savedPassword = "";
|
||||
|
||||
try (BufferedReader br = new BufferedReader(new FileReader(PATH_PROGRAM_DATA))) {
|
||||
String riga;
|
||||
|
||||
do {
|
||||
riga = br.readLine();
|
||||
} while (!riga.contains("username: "));
|
||||
|
||||
savedUsername = riga.split(":")[1].trim();
|
||||
savedPassword = br.readLine().split(":")[1].trim();
|
||||
} catch (IOException e) {
|
||||
System.out.println(ERRORE_FILE + e.getMessage());
|
||||
}
|
||||
|
||||
do {
|
||||
error = false;
|
||||
if (failedLoginCount == MAX_FAILED_LOGIN_COUNT) {
|
||||
failedLoginCount = failedLogin(failedLoginCount);
|
||||
error = true;
|
||||
} else {
|
||||
System.out.print("Username: ");
|
||||
username = sc.nextLine().trim();
|
||||
password = new String(System.console().readPassword("Password: ")).trim();
|
||||
|
||||
if (!username.equals(savedUsername)) {
|
||||
System.out.println("Errore: il nome utente non è valido.");
|
||||
pausa();
|
||||
error = true;
|
||||
failedLoginCount++;
|
||||
} else {
|
||||
|
||||
if (!password.equals(savedPassword)) {
|
||||
System.out.println("Errore: la password non è valida.");
|
||||
pausa();
|
||||
error = true;
|
||||
failedLoginCount++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
} while (error);
|
||||
}
|
||||
|
||||
static int failedLogin(int failedLoginCount) {
|
||||
|
||||
long durataTimer = 7500;
|
||||
final String FORMATTAZIONE_ERRORE_TIMER = "\rRiprovare tra %d secondi";
|
||||
|
||||
long istanteInizioTimer = System.currentTimeMillis();
|
||||
durataTimer *= 2;
|
||||
System.out.println("Errore: troppi tentativi di login falliti.");
|
||||
|
||||
while (true) {
|
||||
long differenzaDiTempo = System.currentTimeMillis() - istanteInizioTimer;
|
||||
// mostra il tempo rimanente ogni secondo
|
||||
if (System.currentTimeMillis() % 1000 == 0) {
|
||||
System.out.printf(FORMATTAZIONE_ERRORE_TIMER, (int) ((durataTimer - differenzaDiTempo) / 1000));
|
||||
}
|
||||
if (differenzaDiTempo >= durataTimer) {
|
||||
failedLoginCount = 0;
|
||||
System.out.println();
|
||||
break;
|
||||
}
|
||||
}
|
||||
return failedLoginCount;
|
||||
}
|
||||
|
||||
static void fattura() {
|
||||
boolean error;
|
||||
String formatoDataInserimento = "dd/MM/yyyy";
|
||||
|
||||
3
src/fatturascontrini/programData.txt
Normal file
3
src/fatturascontrini/programData.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
numeroScontrino: 255
|
||||
username: password
|
||||
password: admin
|
||||
Reference in New Issue
Block a user