howto/come_gestire_password.md
... ...
@@ -1,17 +1,23 @@
1
-Quando nel programma si deve mettere l'inserimento di una password con anche la possibilità di cambiare e salvare una nuova password, il modo per gestire queste operazioni è di realizzare una o più pagine grafiche (a seconda del progetto) in cui mettere un edit per l'inserimento della password e una pagina grafica in cui poter effettuare una modifica e salvataggio della password.
1
+Quando nel programma si deve mettere l'inserimento di una password con anche la possibilità di cambiare e salvare una nuova password, il modo per gestire queste operazioni è di inserire un edit su una pagina grafica per l'inserimento della password e un' altra pagina grafica in cui poter effettuare una modifica e salvataggio della nuova password.
2 2
3 3
Si utilizza anche una serie di funzioni per gestire le operazioni.
4 4
5
-Nel seguente esempio vine mostrato la gestione dell' inserimento e della modifca di due password di un progetto.
5
+Nel seguente esempio vine mostrato la gestione dell' inserimento e della modifca di password di un progetto.
6 6
7
-Più avanti troverai anche le parti di codice scritte nei file .c relativi alle pagine grafiche.
7
+Più avanti troverai anche le parti di codice scritte nei file .c relativi alle pagine.
8 8
9 9
Nel **common.h** (o comunque in file .h inclusi nel common):
10 10
11 11
unsigned char superadmin_password[32]; // dichiara la password di accesso del superadmin
12 12
unsigned char manutentore_password[32]; // dichiara la password di accesso del manutentore
13 13
14
+ unsigned char new_superadmin_password[32]; // dichiara l' array relativo alla nuova password del super-admin
15
+ // nel caso si decida di modificarla
16
+ unsigned char new_manutentore_password[32]; // dichiara l' array relatIvo alla nuova password del manutentore
17
+ // nel caso si decida di modificarla
18
+
14 19
volatile U8 my_password[32]; // array ralativo alla password che deve essere inserita
20
+
15 21
volatile char livello_accesso; // variabile che indica chi ha effettuato l' accesso
16 22
volatile int flag_visu_msg_password = 0; // flag relativa alla visualizzazione del messaggio di corretta o errata
17 23
// dopo l' inserimento della password
... ...
@@ -33,14 +39,14 @@ Nel **common.h** (o comunque in file .h inclusi nel common):
33 39
flag_visu_msg_password = 0; // dopo 2 sec dall' inserimento della password (vedi page_reqPassword.c)
34 40
}
35 41
36
- // funzione per impostare i valori di default delle password
42
+ // funzione per impostare i caratteri di default delle password
37 43
void reset_pasword(void)
38 44
{
39 45
superadmin_password = "1234";
40 46
manutentore_password = "5678";
41 47
}
42 48
43
-Nella pagina (page_reqPassword.c) in cui viene richiesto di inserire la password, la variabile my_password è associata ad un edit nel quale è possibile inserire la password ed è presente un label (label1) che scrive se la password è corretta o errata:
49
+Nella pagina (page_reqPassword.c) in cui viene richiesto di inserire la password, la variabile my_password è associata ad un edit nel quale è possibile inserire la password con un pulsante di conferma della password inserita ed è presente un label (label1) che scrive se la password è corretta o errata:
44 50
45 51
#include "page_reqPassword.h"
46 52
... ...
@@ -54,14 +60,14 @@ Nella pagina (page_reqPassword.c) in cui viene richiesto di inserire la password
54 60
// -------------------------------
55 61
// methods:
56 62
// -------------------------------
57
- void Event(passwordOK_onmouseup)() // quando il pulsante passwordOK viene premuto
63
+ void Event(passwordOK_onmouseup)() // quando il pulsante passwordOK di conferma password viene attivato
58 64
{ // (confermando la password inserita)
59 65
60 66
if (!strcmp(my_password, superadmin_password)) // se la password inserita è uguale alla
61 67
// password impostata per il super-admin
62 68
livello_accesso = 2;
63 69
else if (!strcmp(my_password, manutentore_password)) // se la password inserita è uguale alla
64
- // password impostat per il manutentore
70
+ // password impostata per il manutentore
65 71
livello_accesso = 1;
66 72
else // se la password non è corretta
67 73
livello_accesso = 0;
... ...
@@ -80,7 +86,7 @@ Nella pagina (page_reqPassword.c) in cui viene richiesto di inserire la password
80 86
{
81 87
stampa_msg_password(); // stampa la scritta
82 88
83
- if (livello_accesso == 3 || livello_accesso == 2 || livello_accesso == 1) // se la password è corretta
89
+ if (livello_accesso == 2 || livello_accesso == 1) // se la password è corretta
84 90
me->fontcolor = GREEN; // il label diventa di colore verde
85 91
else // se la password è errata
86 92
me->fontcolor = RED; // il label diventa di colore rosso
... ...
@@ -89,3 +95,55 @@ Nella pagina (page_reqPassword.c) in cui viene richiesto di inserire la password
89 95
}
90 96
}
91 97
98
+Nella pagina **page_modPassword.c**:
99
+
100
+ #include "page_modPassword.h"
101
+ // -------------------------------+
102
+ // form page_modPassword
103
+ // -------------------------------+
104
+ void form_page_modPassword(void)
105
+ {
106
+ object(TPage,(void **)&page_modPassword,page_modPassword_Body,0,0,&Null,None,1,0,"PAGE");
107
+ }
108
+ // -------------------------------
109
+ // methods:
110
+ // -------------------------------
111
+ void Event(onfirst)()
112
+ {
113
+ snprintf(new_superadmin_password, sizeof(new_superadmin_password), "%s", superadmin_password);
114
+ snprintf(new_manutentore_password, sizeof(new_manutentore_password), "%s", manutentore_password);
115
+ }
116
+ // -------------------------------
117
+ void Event(button1_onmousedown)()
118
+ {
119
+ snprintf(dfRic.superadmin_password_Ric, sizeof(dfRic.superadmin_password_Ric), "1018");
120
+ snprintf(dfRic.manutentore_password_Ric, sizeof(dfRic.manutentore_password_Ric), "118");
121
+ salva();
122
+ snprintf(superadmin_password, sizeof(superadmin_password), "%s", dfRic.superadmin_password_Ric);
123
+ snprintf(manutentore_password, sizeof(manutentore_password), "%s", dfRic.manutentore_password_Ric);
124
+ }
125
+ // -------------------------------
126
+ void Event(label1_onentry)()
127
+ {
128
+ me2->visible = visualizzaEsitoSalvataggioOK;
129
+ }
130
+ // -------------------------------
131
+ void Event(label2_onentry)()
132
+ {
133
+ me2->visible = visualizzaEsitoSalvataggioNO;
134
+ }
135
+ // -------------------------------
136
+ void Event(bitmap1_onmousedown)()
137
+ {
138
+ v_tik(30);
139
+ pagina = _page_intro;
140
+ page_end = 1;
141
+ }
142
+ // -------------------------------
143
+ void Event(bitmap2_onmousedown)()
144
+ {
145
+ v_tik(30);
146
+ snprintf(dfRic.superadmin_password_Ric, sizeof(dfRic.superadmin_password_Ric), "%s", superadmin_password);
147
+ snprintf(dfRic.manutentore_password_Ric, sizeof(dfRic.manutentore_password_Ric), "%s", manutentore_password);
148
+ salva();
149
+ }
... ...
\ No newline at end of file