Files
shopPRO/admin/templates/users/user-edit.php
Jacek Pyziak 290aa31aa7 Add two-factor authentication fields to pp_users table and update .htaccess for security
- Added columns for two-factor authentication (2FA) in the pp_users table:
  - twofa_enabled (TINYINT)
  - twofa_email (VARCHAR)
  - twofa_code_hash (VARCHAR)
  - twofa_expires_at (DATETIME)
  - twofa_sent_at (DATETIME)
  - twofa_failed_attempts (INT)
- Updated the twofa_enabled and twofa_email for user with id 0.
- Enhanced .htaccess to disable directory listing, block execution of sensitive files, and prevent serving hidden files.
2025-12-11 23:57:22 +01:00

90 lines
3.4 KiB
PHP

<?php
global $gdb, $config;
$this -> user['id'] ? $password_param = 'optional' : $password_param = 'require';
$grid = new \gridEdit;
$grid -> gdb_opt = $gdb;
$grid -> include_plugins = true;
$grid -> title = 'Zapisz użytkownika';
$grid -> fields = [
[
'db' => 'id',
'type' => 'hidden',
'value' => $this -> user['id']
],
[
'db' => 'admin',
'type' => 'hidden',
'value' => '1'
],
[
'name' => 'Login',
'db' => 'login',
'type' => 'text',
'value' => $this -> user['login'],
'params' => [ 'class' => 'require', 'function' => 'check_login' ]
],
[
'name' => 'Aktywny',
'db' => 'status',
'type' => 'input_switch',
'checked' => $this -> user['status'] ? true : false
], [
'db' => 'twofa_enabled',
'name' => 'Dwustopniowe uwierzytelnianie (2FA)',
'type' => 'input_switch',
'checked' => $this -> user['twofa_enabled'] ? true : false,
], [
'db' => 'twofa_email',
'name' => 'E-mail do 2FA',
'type' => 'text',
'value' => $this -> user['twofa_email'],
], [
'name' => 'Hasło',
'db' => 'password',
'type' => 'text',
'params' => [ 'class' => $password_param, 'min' => 5 ]
],
[
'name' => 'Hasło - powtórz',
'db' => 'password_re',
'type' => 'text',
'params' => [ 'class' => $password_param, 'min' => 5, 'equal' => 'password', 'error_txt' => 'Podane hasła są różne' ]
]
];
$grid -> actions = [
'save' => [ 'url' => '/admin/users/user_save/', 'back_url' => '/admin/users/view_list/' ],
'cancel' => [ 'url' => '/admin/users/view_list/' ]
];
echo $grid -> draw();
?>
<script type="text/javascript">
$( function()
{
disable_menu();
});
function check_login()
{
var response = null;
$.ajax({
type: 'POST',
cache: false,
async: false,
url: '/admin/ajax.php',
data:
{
a: 'check_login',
login: $.trim( $( '#login' ).val() ),
user_id: <?= (int)$this -> user['id'];?>
},
success: function( data )
{
response = $.parseJSON( data );
}
});
return response;
}
</script>