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_MENU = "./src/fatturascontrini/menu.txt";
|
||||||
static final String PATH_SCONTRINI = "./src/fatturascontrini/scontrini/";
|
static final String PATH_SCONTRINI = "./src/fatturascontrini/scontrini/";
|
||||||
static final String PATH_FATTURA = "./src/fatturascontrini/fatture/";
|
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_DEFAULT = "Errore: opzione non valida.";
|
||||||
static final String ERRORE_FILE = "Errore nella lettura del file: ";
|
static final String ERRORE_FILE = "Errore nella lettura del file: ";
|
||||||
static int codiceScontrino = 0;
|
static int codiceScontrino = 0;
|
||||||
@@ -64,13 +65,8 @@ public class FatturaScontrini {
|
|||||||
pausa();
|
pausa();
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
if (!trovaScontrini().isEmpty()) {
|
autenticazione();
|
||||||
fattura();
|
adminMode();
|
||||||
} else {
|
|
||||||
System.out.println(
|
|
||||||
"Errore: è necessario pagare prima di procedere alla creazione della fattura.");
|
|
||||||
}
|
|
||||||
pausa();
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
System.out.println("Opzione non valida.");
|
System.out.println("Opzione non valida.");
|
||||||
@@ -180,7 +176,7 @@ public class FatturaScontrini {
|
|||||||
ritorno = sc.nextInt();
|
ritorno = sc.nextInt();
|
||||||
sc.nextLine();
|
sc.nextLine();
|
||||||
|
|
||||||
if (ritorno < 0 || ritorno >= getMenuSize()) {
|
if (ritorno < 0 || ritorno >= getFileSize(PATH_MENU)) {
|
||||||
System.out.println(ERRORE_DEFAULT);
|
System.out.println(ERRORE_DEFAULT);
|
||||||
pausa();
|
pausa();
|
||||||
error = true;
|
error = true;
|
||||||
@@ -200,7 +196,7 @@ public class FatturaScontrini {
|
|||||||
StringTokenizer st;
|
StringTokenizer st;
|
||||||
String riga = br.readLine();
|
String riga = br.readLine();
|
||||||
|
|
||||||
for (int i = 0; i < getMenuSize(); i++) {
|
for (int i = 0; i < getFileSize(PATH_MENU); i++) {
|
||||||
st = new StringTokenizer(riga, ":");
|
st = new StringTokenizer(riga, ":");
|
||||||
System.out.println(i + ". " + st.nextToken() + ": " + st.nextToken().trim());
|
System.out.println(i + ". " + st.nextToken() + ": " + st.nextToken().trim());
|
||||||
riga = br.readLine();
|
riga = br.readLine();
|
||||||
@@ -210,9 +206,9 @@ public class FatturaScontrini {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int getMenuSize() {
|
static int getFileSize(String path) {
|
||||||
int i = 0;
|
int i = 0;
|
||||||
try (BufferedReader br = new BufferedReader(new FileReader(PATH_MENU))) {
|
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
|
||||||
String riga = br.readLine();
|
String riga = br.readLine();
|
||||||
|
|
||||||
while (riga != null) {
|
while (riga != null) {
|
||||||
@@ -318,11 +314,11 @@ public class FatturaScontrini {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static String[][] tabellaNomePrezzo() {
|
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))) {
|
try (BufferedReader br = new BufferedReader(new FileReader(PATH_MENU))) {
|
||||||
String riga = br.readLine();
|
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[0][i] = riga.split(":")[0];
|
||||||
ritorno[1][i] = riga.split(":")[1].trim();
|
ritorno[1][i] = riga.split(":")[1].trim();
|
||||||
riga = br.readLine();
|
riga = br.readLine();
|
||||||
@@ -381,7 +377,7 @@ public class FatturaScontrini {
|
|||||||
scelta = sc.nextInt();
|
scelta = sc.nextInt();
|
||||||
sc.nextLine();
|
sc.nextLine();
|
||||||
|
|
||||||
if (scelta < 0 || scelta >= getMenuSize()) {
|
if (scelta < 0 || scelta >= getFileSize(PATH_MENU)) {
|
||||||
System.out.println(ERRORE_DEFAULT);
|
System.out.println(ERRORE_DEFAULT);
|
||||||
pausa();
|
pausa();
|
||||||
error = true;
|
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() {
|
static void fattura() {
|
||||||
boolean error;
|
boolean error;
|
||||||
String formatoDataInserimento = "dd/MM/yyyy";
|
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