88
99// Logout
1010if (isset ($ _GET ['logout ' ])) {
11+ setcookie ('limit2fa ' ,'' ,time () - 3600 ,"/ " );
1112 session_destroy ();
1213}
1314
@@ -86,33 +87,38 @@ function authenticate_user(){
8687 $ error = "<a class= \"error \"> " .__ ('Invalid username or password ' )."</a> " ;
8788 return $ error ;
8889 } else {
89-
9090 // Make root admin user
9191 if ($ _POST ['user ' ] == 'root ' ) $ v_user = 'admin ' ;
92-
9392 // Get user speciefic parameters
9493 exec (HESTIA_CMD . "v-list-user " .$ v_user ." json " , $ output , $ return_var );
9594 $ data = json_decode (implode ('' , $ output ), true );
96-
97- // Check if 2FA is active
98- if ($ data [$ _POST ['user ' ]]['TWOFA ' ] != '' ) {
99- if (empty ($ _POST ['twofa ' ])){
100- return false ;
101- }else {
102- $ v_twofa = $ _POST ['twofa ' ];
103- exec (HESTIA_CMD ."v-check-user-2fa " .$ v_user ." " .$ v_twofa , $ output , $ return_var );
104- unset($ output );
105- if ( $ return_var > 0 ) {
106- sleep (2 );
107- $ error = "<a class= \"error \"> " .__ ('Invalid or missing 2FA token ' )."</a> " ;
108- return $ error ;
109- unset($ _POST ['twofa ' ]);
95+ if ($ data [$ user ]['TWOFA ' ] != '' ) {
96+ if (password_hash ($ data [$ user ]['TWOFA ' ].$ _POST ['murmur ' ],PASSWORD_BCRYPT ) == $ _COOKIE ['limit2fa ' ]){
97+
98+ }else {
99+ setcookie ('limit2fa ' ,'' ,time () - 3600 ,"/ " );
100+ if (empty ($ _POST ['twofa ' ])){
101+ return false ;
102+ }else {
103+ $ v_twofa = $ _POST ['twofa ' ];
104+ exec (HESTIA_CMD ."v-check-user-2fa " .$ v_user ." " .$ v_twofa , $ output , $ return_var );
105+ unset($ output );
106+ if ( $ return_var > 0 ) {
107+ sleep (2 );
108+ $ error = "<a class= \"error \"> " .__ ('Invalid or missing 2FA token ' )."</a> " ;
109+ return $ error ;
110+ unset($ _POST ['twofa ' ]);
111+ }
110112 }
111- }
113+
114+ }
112115 }
113116 // Define session user
114117 $ _SESSION ['user ' ] = key ($ data );
115118 $ v_user = $ _SESSION ['user ' ];
119+ if (empty ($ _COOKIE ['limit2fa ' ])){
120+ setcookie ('limit2fa ' ,password_hash ($ data [$ user ]['TWOFA ' ].$ _POST ['murmur ' ],PASSWORD_BCRYPT ),time ()+60 *60 *24 *$ _SESSION ['TWOFA_VALID_LENGTH ' ],"/ " );
121+ };
116122 $ _SESSION ['LAST_ACTIVITY ' ] = time ();
117123 // Define language
118124 $ output = '' ;
@@ -123,7 +129,6 @@ function authenticate_user(){
123129 } else {
124130 $ _SESSION ['language ' ] = 'en ' ;
125131 }
126-
127132 // Regenerate session id to prevent session fixation
128133 session_regenerate_id ();
129134
0 commit comments