--- // 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)} صارفین

{list.users.map((u: any) => ( ))}
ای میلکردارشمولیتآخری لاگ انحالتاقدامات
{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 && ( <>
)}
{pages > 1 && ( )}