Skip to content

✨ DatabaseのRLS設定をSQLファイルに記載#186

Open
TomoyaOgashiwa wants to merge 2 commits intomainfrom
feat/165
Open

✨ DatabaseのRLS設定をSQLファイルに記載#186
TomoyaOgashiwa wants to merge 2 commits intomainfrom
feat/165

Conversation

@TomoyaOgashiwa
Copy link
Contributor

関連する issue*

#165

作業内容*

Supabaseで設定したRLS設定をSQLファイルに記載

メイン実装

そのほか発生した実装

残してある課題

チェックリスト*

実装者

  • ターゲットブランチが適切に設定されている。
  • 新規でのバグ・警告等が残っていない。
  • 本 PR に関係のない差分を含んでいない。
  • PR の Assignee の設定。

その他

@tuboihirokidesu tuboihirokidesu self-requested a review September 22, 2023 12:21
Copy link
Collaborator

@tuboihirokidesu tuboihirokidesu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

提案したポリシーを追加するだけだと他のポリシーとの競合が生じる可能性があるので、適宜動作確認もお願いします。

Comment on lines +37 to +39
CREATE POLICY "ユーザー情報取得" ON "public"."User" AS PERMISSIVE FOR
SELECT
TO authenticated USING ( (auth.uid() = (user_id):: uuid))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

このポリシーだと認証していないユーザーはシェフの情報を参照することができなくないですか?
以下のポリシーも必要かと思います

CREATE POLICY "シェフ情報公開" ON "public"."User" AS PERMISSIVE FOR
SELECT
    TO public USING (role = 'CHEF');

同様にユーザーリンクなどもポリシーが必要かと思います


-- Recipe

CREATE POLICY "レシピ情報取得(公開・非公開の設定はコード" ON "public"."Recipe" AS PERMISSIVE FOR
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

すみません、設定はコードという意味がわかっていないのですが、
レシピに関しては以下のポリシーが必要かと思います

CREATE POLICY "シェフのレシピ情報取得" ON "public"."Recipe" AS PERMISSIVE FOR
SELECT TO public USING (user.role = 'CHEF' OR isPublished = true OR auth.uid() = user_id)

CREATE POLICY "非公開レシピ情報取得" ON "public"."Recipe" AS PERMISSIVE FOR
SELECT TO authenticated USING (isPublished = false AND auth.uid() = user_id)

同様に材料や作り方などもポリシーが必要かと思います

Comment on lines +86 to +88
CREATE POLICY "レシピ情報削除" ON "public"."Recipe" AS PERMISSIVE FOR
DELETE
TO authenticated USING ( (auth.uid() = (user_id):: uuid))
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

シェフのレシピは管理者が作成するので管理者権限を持つユーザーも削除できるように以下のように改良する必要があると思います
作成や更新も同様ですかね

Suggested change
CREATE POLICY "レシピ情報削除" ON "public"."Recipe" AS PERMISSIVE FOR
DELETE
TO authenticated USING ( (auth.uid() = (user_id):: uuid))
CREATE POLICY "レシピ情報削除" ON "public"."Recipe" AS PERMISSIVE FOR
DELETE
USING (user.role = 'ADMIN' OR auth.uid() = user_id)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants