<?php require_once __DIR__.'/_layout.php'; web_require_perm('admins'); web_require_owner();
$data = web_admin_accounts_load();
$owner = web_owner_admin_id();
$masterAdmins = function_exists('web_master_admin_list') ? web_master_admin_list() : array_filter([$owner]);
if($_SERVER['REQUEST_METHOD'] === 'POST'){
    $action = (string)($_POST['action'] ?? '');
    $target = preg_replace('/[^0-9]/','',(string)($_POST['admin_id'] ?? ''));
    if($action === 'save'){
        $name = trim((string)($_POST['name'] ?? ''));
        $password = trim((string)($_POST['password'] ?? ''));
        $active = !empty($_POST['active']);
        $perms = array_values(array_intersect(array_keys(web_permission_catalog()), array_map('strval', (array)($_POST['permissions'] ?? []))));
        if($target === '') web_flash('error','آیدی ادمین را عددی وارد کن.');
        elseif(in_array($target, $masterAdmins, true)) web_flash('error','برای ادمین اصلی از config.php / install_web_panel.php استفاده کن.');
        elseif($password !== '' && strlen($password) < 6) web_flash('error','رمز باید حداقل ۶ کاراکتر باشد.');
        else{
            $old = $data['admins'][$target] ?? [];
            if(!is_array($old)) $old = [];
            $row = $old;
            $row['name'] = $name !== '' ? $name : ($old['name'] ?? 'ادمین '.$target);
            $row['active'] = $active;
            $row['permissions'] = $perms;
            $row['updated_at'] = date('c');
            $row['updated_by'] = $_SESSION['web_admin_id'] ?? '';
            if(empty($row['created_at'])) $row['created_at'] = date('c');
            if($password !== '') $row['password_hash'] = password_hash($password, PASSWORD_DEFAULT);
            if(empty($row['password_hash'])) web_flash('error','برای ادمین جدید حتماً رمز وارد کن.');
            else{
                $data['admins'][$target] = $row;
                if(web_admin_accounts_save($data)){
                    web_flash('success','دسترسی ادمین ذخیره شد.');
                    web_admin_log('web_admin_access_save','admin',$target,'ثبت/تغییر دسترسی پنل وب ادمین',['active'=>$active,'name'=>$row['name'],'permissions'=>$perms]);
                } else web_flash('error','ذخیره انجام نشد. دسترسی نوشتن lib/kodam را بررسی کن.');
            }
        }
    } elseif($action === 'delete'){
        if($target === '' || !isset($data['admins'][$target])) web_flash('error','ادمین پیدا نشد.');
        else{
            unset($data['admins'][$target]);
            if(web_admin_accounts_save($data)){
                web_flash('success','دسترسی پنل وب حذف شد.');
                web_admin_log('web_admin_access_delete','admin',$target,'حذف دسترسی پنل وب ادمین');
            } else web_flash('error','حذف ذخیره نشد.');
        }
    }
    web_redirect('admins.php');
}
web_header('مدیریت ادمین‌های پنل وب');
?>
<div class="panel">
  <h3>ساخت رمز برای ادمین</h3>
  <p class="muted">ادمین اصلی از اینجا برای ادمین‌های دیگر رمز جدا می‌سازد. ادمین اصلی خودش با رمز اصلی پنل وارد می‌شود.</p>
  <form method="post" class="grid">
    <?php web_csrf_input(); ?><input type="hidden" name="action" value="save">
    <div class="field"><label>آیدی عددی ادمین</label><input name="admin_id" inputmode="numeric" placeholder="مثلاً 123456789" required></div>
    <div class="field"><label>نام نمایشی</label><input name="name" placeholder="مثلاً پشتیبان سفارش‌ها"></div>
    <div class="field"><label>رمز پنل</label><input name="password" type="password" placeholder="حداقل ۶ کاراکتر" required></div>
    <div class="field"><label>وضعیت</label><label class="check"><input type="checkbox" name="active" value="1" checked> فعال باشد</label></div>
    <div class="field" style="grid-column:1/-1"><label>دسترسی‌ها</label><div class="perm-grid"><?php foreach(web_permission_catalog() as $pk=>$pl){ if($pk==='admins' || $pk==='backups') continue; echo '<label class="check"><input type="checkbox" name="permissions[]" value="'.web_h($pk).'" checked> '.web_h($pl).'</label>'; } ?></div></div>
    <div><button>ذخیره دسترسی</button></div>
  </form>
</div>
<div class="panel">
  <h3>ادمین‌های اصلی</h3>
  <div class="card">آیدی‌های ادمین اصلی: <b><?=web_h(implode('، ', $masterAdmins) ?: '-')?></b><br><span class="muted">برای اضافه‌کردن ادمین اصلی جدید، آرایه <code>$main_admins</code> را در config.php تنظیم کن. تغییر رمز اصلی با فایل install_web_panel.php انجام می‌شود.</span></div>
</div>
<?php
$accounts = web_admin_accounts_load()['admins'] ?? [];
web_table_start(['آیدی','نام','وضعیت','آخرین تغییر','عملیات']);
foreach($accounts as $id=>$row){
    if(!is_array($row)) $row=[];
    $id = preg_replace('/[^0-9]/','',(string)$id);
    if($id==='') continue;
    echo '<tr><td><code>'.web_h($id).'</code></td><td>'.web_h($row['name'] ?? '').'</td><td>'.(!empty($row['active'])?'فعال':'غیرفعال').'</td><td>'.web_h($row['updated_at'] ?? $row['created_at'] ?? '').'</td><td>';
    echo '<details><summary>ویرایش</summary><form method="post" style="margin-top:10px">'; web_csrf_input();
    echo '<input type="hidden" name="action" value="save"><input type="hidden" name="admin_id" value="'.web_h($id).'">';
    echo '<input name="name" value="'.web_h($row['name'] ?? '').'" placeholder="نام"><input name="password" type="password" placeholder="رمز جدید؛ اگر خالی بماند قبلی می‌ماند"><label class="check"><input type="checkbox" name="active" value="1" '.(!empty($row['active'])?'checked':'').'> فعال</label>';
    $rowPerms = isset($row['permissions']) && is_array($row['permissions']) ? $row['permissions'] : web_default_admin_permissions();
    echo '<div class="perm-grid" style="margin:10px 0">';
    foreach(web_permission_catalog() as $pk=>$pl){
        if($pk==='admins' || $pk==='backups') continue;
        echo '<label class="check"><input type="checkbox" name="permissions[]" value="'.web_h($pk).'" '.(in_array($pk,$rowPerms,true)?'checked':'').'> '.web_h($pl).'</label>';
    }
    echo '</div><button class="secondary">ذخیره</button></form>';
    echo '<form method="post" onsubmit="return confirm(\'حذف شود؟\')">'; web_csrf_input(); echo '<input type="hidden" name="action" value="delete"><input type="hidden" name="admin_id" value="'.web_h($id).'"><button class="danger">حذف دسترسی</button></form></details>';
    echo '</td></tr>';
}
web_table_end();
web_footer();
