@@ -100,6 +100,44 @@ impl Login_type {
100
100
}
101
101
}
102
102
103
+ pub fn Authenticate ( & mut self ) -> Result_type < ( ) > {
104
+ let ( User_name , Password ) = unsafe {
105
+ let User_name = LVGL :: lv_textarea_get_text ( self . User_name_text_area ) ;
106
+ let User_name = CStr :: from_ptr ( User_name ) ;
107
+
108
+ let User_name = User_name . to_str ( ) . map_err ( Error_type :: Invalid_UTF_8 ) ?;
109
+
110
+ let Password = LVGL :: lv_textarea_get_text ( self . Password_text_area ) ;
111
+ let Password = CStr :: from_ptr ( Password ) ;
112
+ let Password = Password . to_str ( ) . map_err ( Error_type :: Invalid_UTF_8 ) ?;
113
+
114
+ ( User_name , Password )
115
+ } ;
116
+
117
+ // - Check the user name and the password
118
+ let User_identifier = Authentication :: Authenticate_user (
119
+ Virtual_file_system :: Get_instance ( ) ,
120
+ User_name ,
121
+ Password ,
122
+ )
123
+ . map_err ( Error_type :: Authentication_failed ) ?;
124
+
125
+ // - Set the user
126
+ let Task_manager = Task :: Get_instance ( ) ;
127
+
128
+ let Task = Task_manager
129
+ . Get_current_task_identifier ( )
130
+ . map_err ( Error_type :: Failed_to_set_task_user ) ?;
131
+
132
+ Task_manager
133
+ . Set_user ( Task , User_identifier )
134
+ . map_err ( Error_type :: Failed_to_set_task_user ) ?;
135
+
136
+ self . User = Some ( User_identifier ) ;
137
+
138
+ Ok ( ( ) )
139
+ }
140
+
103
141
pub fn Event_handler ( & mut self ) {
104
142
while let Some ( Event ) = self . Window . Pop_event ( ) {
105
143
// If we are typing the user name or the password
@@ -113,44 +151,11 @@ impl Login_type {
113
151
else if Event . Get_code ( ) == Event_code_type :: Clicked
114
152
&& Event . Get_target ( ) == self . Button
115
153
{
116
- unsafe {
117
- let User_name = LVGL :: lv_textarea_get_text ( self . User_name_text_area ) ;
118
- let User_name = CStr :: from_ptr ( User_name ) ;
119
-
120
- let User_name = match User_name . to_str ( ) . map_err ( Error_type :: Invalid_UTF_8 ) {
121
- Ok ( User_name ) => User_name ,
122
- Err ( Error ) => {
123
- self . Print_error ( Error ) ;
124
- continue ;
125
- }
126
- } ;
127
-
128
- let Password = LVGL :: lv_textarea_get_text ( self . Password_text_area ) ;
129
- let Password = CStr :: from_ptr ( Password ) ;
130
- let Password = match Password . to_str ( ) . map_err ( Error_type :: Invalid_UTF_8 ) {
131
- Ok ( Password ) => Password ,
132
- Err ( Error ) => {
133
- self . Print_error ( Error ) ;
134
- continue ;
135
- }
136
- } ;
137
-
138
- // - Check the user name and the password
139
- match Authentication :: Authenticate_user (
140
- Virtual_file_system :: Get_instance ( ) ,
141
- User_name ,
142
- Password ,
143
- )
144
- . map_err ( Error_type :: Authentication_failed )
145
- {
146
- Ok ( User_identifier ) => {
147
- self . User = Some ( User_identifier ) ;
148
- }
149
- Err ( Error ) => {
150
- self . Print_error ( Error ) ;
151
- }
152
- }
153
- } ;
154
+ let Result = self . Authenticate ( ) ;
155
+
156
+ if let Err ( Error ) = Result {
157
+ self . Print_error ( Error ) ;
158
+ }
154
159
}
155
160
}
156
161
}
0 commit comments