Skip to main content
Run any Skill in Manus
with one click

biz-admin-google-auth

Stars0
Forks0
UpdatedJuly 5, 2026 at 14:05

Nâng cấp xác thực trang /admin (và /admin/affiliates) của landing page Next.js App Router từ **password popup** (ADMIN_PASSWORD + header x-admin-pass) sang **đăng nhập Google qua Supabase Auth + allowlist** — chỉ email nằm trong bảng `admin_users` mới vào được, có khái niệm **super admin** (hard-code, không tự xoá được mình) và tab **Quản trị viên** ngay trong dashboard để super admin thêm/xoá quản trị viên khác. Skill scaffold: migration Supabase (`admin_users` table RLS deny-all + hàm SECURITY DEFINER `is_admin_email`), `lib/admin-auth.ts` (`requireAdmin`/`requireSuperAdmin`/`adminAuthError` verify Bearer token offline qua getClaims), `lib/admin-client.ts` (browser PKCE OAuth + `loginWithGoogle`/`logout`/`adminFetch`), `lib/admin-users.ts` (allowlist CRUD + `isSuperAdmin`), 2 API route (`/api/admin/me`, `/api/admin/admin-users`), component `components/AdminUsersTab.tsx` (tab Quản trị viên). Sau đó PATCH các route `/api/admin/*` đã có (thay `checkAdminPass()` → `requireAdmin()`) và PATCH `app/admin/page.tsx`

Installation

Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.

File Explorer
10 files
SKILL.md
readonly