---
// Admin: users. Password resets happen here on a reader's request (no email server yet).
import Base from '../../layouts/Base.astro';
import AdminNav from '../../components/AdminNav.astro';
import { asUser, COOKIE } from '../../lib/auth';
import { ud } from '../../lib/urdu';
const me = Astro.locals.user;
if (!me) return Astro.redirect('/signin?next=/admin');
if (me.role !== 'admin') return new Response('صرف ایڈمن کے لیے', { status: 403 });
const token = Astro.cookies.get(COOKIE)!.value;
let error = '', done = '', tempPassword = '', tempFor = '';
if (Astro.request.method === 'POST') {
const f = await Astro.request.formData();
const id = String(f.get('id')), email = String(f.get('email') ?? '');
const act = String(f.get('act'));
const r = act === 'reset' ? await asUser(token, `/api/admin/users/${id}/password`, {})
: act === 'disable' || act === 'enable' ? await asUser(token, `/api/admin/users/${id}/disable`, { disabled: act === 'disable' })
: act === 'role' ? await asUser(token, `/api/admin/users/${id}/role`, { role: f.get('role') })
: act === 'delete' ? await asUser(token, `/api/admin/users/${id}/delete`, {})
: { ok: false, data: { error: 'نامعلوم عمل' } };
if (!r.ok) error = r.data.error ?? 'کچھ غلط ہو گیا';
else if (act === 'reset') [tempPassword, tempFor] = [r.data.password, email];
else done = { disable: 'اکاؤنٹ معطل کر دیا گیا', enable: 'اکاؤنٹ بحال کر دیا گیا', role: 'کردار بدل دیا گیا', delete: 'اکاؤنٹ حذف کر دیا گیا' }[act] + ` (${email})`;
}
const q = Astro.url.searchParams.get('q') ?? '', page = Math.max(1, Number(Astro.url.searchParams.get('page')) || 1);
const list = (await asUser(token, `/api/admin/users?q=${encodeURIComponent(q)}&page=${page}`)).data;
const pages = Math.ceil(list.total / list.pageSize);
const date = (d: string | null) => (d ? ud(new Date(d).toISOString().slice(0, 10)) : '—');
const link = (n: number) => `/admin?q=${encodeURIComponent(q)}&page=${n}`;
---
{error}
} {done &&{done}
} {tempPassword && ({tempFor} کا عارضی پاس ورڈ (صرف ایک بار دکھایا جا رہا ہے):
{tempPassword}
یہ پاس ورڈ صارف کو دیں؛ وہ لاگ ان کر کے اپنے اکاؤنٹ کے صفحے سے اسے بدل لیں۔
{ud(list.total)} صارفین
| ای میل | کردار | شمولیت | آخری لاگ ان | حالت | اقدامات |
|---|---|---|---|---|---|
| {u.email}{u.id === me.id && (آپ)} | {u.role === 'admin' ? 'ایڈمن' : 'قاری'} | {date(u.created_at)} | {date(u.last_sign_in)} | {u.disabled_at ? 'معطل' : 'فعال'} | {u.id !== me.id && ( <> > )} |