Codex로 관리자 페이지 만들기
사이트의 글을 코드 수정 없이 화면에서 쓰고 고치고 지우는 관리자 페이지를 만들어요. 핵심은 "나만 관리자"를 데이터베이스가 지키게 하는 거예요.
🎯 이번 레슨을 마치면
- 관리자 페이지가 왜 필요한지 설명할 수 있다
- 일반 회원과 관리자를 역할(role)로 나누는 방법을 안다
- Codex에게 관리자 페이지를 맡기고 권한을 검수할 수 있다
가게의 “직원 전용” 공간
5-4 레슨에서 배운 인증(누구인지)과 권한(무엇을 할 수 있는지)을 떠올려 보세요. 관리자 페이지는 권한을 두 단계로 나누는 거예요.
| 역할 | 할 수 있는 일 |
|---|---|
| 방문자 (로그인 안 함) | 공개된 글 보기 |
| 일반 회원 | 공개된 글 보기 + 방명록 쓰기 |
| 관리자 | 위의 모든 것 + 사이트 글 쓰기·고치기·지우기, 방명록 정리 |
관리자는 어떻게 정할까?
회원 정보 옆에 역할(role) 칸을 하나 두고, 내 계정만 admin으로 적어 두는 방법이 가장 쉬워요.
| 회원 | 역할 (role) |
|---|---|
| minji@example.com (나) | admin |
| friend@example.com | member |
1단계: Codex에게 계획 받기
내 사이트에 관리자 페이지(/admin)를 만들고 싶어. 로그인은 이미 Supabase로 붙어 있어. - 사이트에 보여 줄 "글(posts)"을 관리할 거야. 제목, 내용, 공개 여부, 작성 시각이 있으면 돼. - 회원마다 역할(role)을 두고, admin인 사람만 글을 쓰고 고치고 지울 수 있게 해 줘. - 방문자와 일반 회원은 "공개"로 표시된 글만 볼 수 있어. - 관리자가 아니면 /admin에 들어왔을 때 안내 문구와 함께 홈으로 보내 줘. - 역할은 화면에서 바꿀 수 없게 하고, 첫 관리자는 내가 Supabase 화면에서 직접 정할게. 코드를 바꾸기 전에 1) 테이블 구조 2) RLS 규칙 3) 화면 구성을 먼저 설명해 줘.
2단계: 만들고 첫 관리자 정하기
- 계획대로 진행하고, 데이터베이스 SQL이 나오면 Supabase SQL Editor에서 실행해요.
- Supabase Table Editor에서 회원 역할 테이블을 열고, 내 계정의 역할을
admin으로 바꿔요. - 사이트에 다시 로그인한 뒤
/admin으로 들어가 보세요.
3단계: 권한 검수하기
관리자 기능의 권한을 점검해 줘. 코드는 아직 바꾸지 말고 보고만 해 줘. 1) 일반 회원이 자기 역할을 admin으로 바꿀 수 있는 방법이 있는지 2) 관리자가 아닌 사람이 글을 쓰거나 지울 수 있는 경로가 있는지 (화면이 아니라 데이터베이스 기준으로) 3) 비공개 글이 방문자에게 노출되는 곳이 있는지
퀴즈
첫 관리자를 정하는 가장 안전한 방법은?
📝 정리해 볼까요?
- 관리자 페이지가 있으면 코드를 고치지 않고도 화면에서 글을 쓰고(Create), 보고(Read), 고치고(Update), 지울(Delete) 수 있어요.
- 관리자인지는 데이터베이스에 적힌 역할(role)로 정하고, RLS가 "관리자만 쓰고 고치기"를 지켜요.
- 첫 관리자는 Supabase 화면에서 내가 직접 정해요. 화면에서 스스로 관리자가 되는 기능은 만들지 않아요.
📖 새로 나온 용어
- 권한 Authorization
- 로그인한 사람이 "무엇을 할 수 있는지" 정하는 것이에요. 예: 일반 회원은 글쓰기만, 관리자는 삭제까지. 비유: 출입증 등급 (일반 / 직원 전용)
- RLS Row Level Security
- 데이터베이스의 한 줄 한 줄마다 "누가 보고 고칠 수 있는지" 정하는 보안 규칙이에요. 비유: 사물함마다 주인만 여는 자물쇠
- CRUD
- 데이터를 만들기(Create), 읽기(Read), 고치기(Update), 지우기(Delete)의 앞글자예요.
잘했어요! 완료 표시는 이 브라우저에 저장돼요.