티스토리 뷰
관리자만 접근할 수 있는 페이지를 만들고싶었다.
그래서 OAuth를 구글 로그인으로 하나 활성화했다.
그다음에 admin 권한 관리를 어떻게 하나 찾아봤다.
1. `roles`테이블을 만든다.
테이블을 만들어서 role 이라는 칼럼에 admin, member 이런 식으로 권한을 넣어줄 수 있게 한다.
회원이 로그인하면, 이 테이블을 참조해서 권한을 확인하겠지.
2. 특정 이메일을 하드코딩해서 권한을 관리한다.
예를 들어 'admin@example.com' 이 이메일이면 관리자 페이지로 넘어갈 수 있도록 하고, 아니면 안되게 하는 것을 코드로 박아버리는 것이다.
useEffect(() => {
if (user && user.email !== 'admin@example.com') {
router.push('/'); // 관리자 이메일이 아니면 일반 페이지로 리디렉션
}
}, [user]);
if (!user) {
return <div>Loading...</div>;
}
return (
<div>
<h1>관리자 페이지</h1>
{/* 관리자만 볼 수 있는 기능 */}
</div>
);
}
3. User Metadata를 활용한다.
(문서: https://supabase.com/docs/guides/auth/managing-user-data)
Supabase Auth 에서 제공하는 기능이다. is_admin 값을 boolean으로 줘서 관리하는 방법도 있겠다.
const { data, error } = await supabase.auth.signUp({
email: 'valid.email@supabase.io',
password: 'example-password',
options: {
data: {
first_name: 'John',
age: 27,
is_admin: true,
},
},
})
각각의 방식에는 장단이 있다. 1번은 초기에 약간 신경을 써서 공이 들어가는 것이 단점이겠지만, 장점은 확장성도 높고, 다양한 권한 관리 업데이트 등도 가능할 거라는 장점도 있겠다. 2번은 우선 코드 내에 변수로 집어넣어 박아 버린다는 단점밖에 안보인다. 어디에 장점이 있지. 3번은 뭔가 익숙한 방식이지만 뭐 그냥 저냥인것 같다. 우선 뭔가 확장성이 없어보임.
그래서 그냥 1번으로 가보기로 했다.
혼자 하니까 이래저래 주절주절 이렇게 블로그에 쓰는게 이래저래 도움이 된다.
이래저래
'개발 Dev' 카테고리의 다른 글
[Flutter.250523] Clean Architecture 활용 기록 남기기 (1) | 2025.05.23 |
---|---|
[Flutter.250522]로그인 로직 개선이라고 하기엔 거창하지만 (0) | 2025.05.23 |
[Supabase.250519] RLS 정책이 없어서 데이터 조회가 안됐다. (0) | 2025.05.20 |
[Flutter.250319] 이상한 키보드 에러를 발견하여 고쳐야한다 (0) | 2025.03.20 |
[Flutter.250222] 플러터 작업을 ios 빌드하기 (0) | 2025.02.22 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 다트
- 터틀포인트
- DART
- 티스토리챌린지
- vscode
- 플러터
- 길리
- Any
- contains
- 스파르타코딩클럽
- 패들보트
- gili
- 발리여행
- setState
- 스노클링
- prettier
- 일기
- til
- 오블완
- Flutter
- 선라이즈 패들보트
- 길리여행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
글 보관함