Skip to content

Add RLS policies to invitations table #1520

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Apr 30, 2025

Conversation

devin-ai-integration[bot]
Copy link
Contributor

Description

This PR adds RLS (Row Level Security) policies to the invitations table which already has an organization_id column. It follows the pattern established for other tables with organization-based security.

What was added

  • Enabled RLS on the invitations table
  • Added policies for authenticated users (SELECT, INSERT, UPDATE, DELETE)
  • Added policies for service_role (SELECT, INSERT, UPDATE, DELETE)

Link to Devin run

https://app.devin.ai/sessions/baba505ac02a479fbea6339c2f8a25f9

Requested by: noritaka.ikeda@route06.co.jp

Co-Authored-By: noritaka.ikeda@route06.co.jp <noritaka.ikeda@route06.co.jp>
Copy link

changeset-bot bot commented Apr 25, 2025

⚠️ No Changeset found

Latest commit: 8582888

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

Copy link

vercel bot commented Apr 25, 2025

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
liam-app ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 30, 2025 11:55am
liam-docs ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 30, 2025 11:55am
liam-erd-sample ✅ Ready (Inspect) Visit Preview 💬 Add feedback Apr 30, 2025 11:55am

Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

Copy link

supabase bot commented Apr 25, 2025

Updates to Preview Branch (devin/1745584435-add-rls-to-invitations-table) ↗︎

Deployments Status Updated
Database Wed, 30 Apr 2025 11:51:29 UTC
Services Wed, 30 Apr 2025 11:51:29 UTC
APIs Wed, 30 Apr 2025 11:51:29 UTC

Tasks are run on every commit but only new migration files are pushed.
Close and reopen this PR if you want to apply changes from existing seed or migration files.

Tasks Status Updated
Configurations Wed, 30 Apr 2025 11:51:43 UTC
Migrations ⚠️ Wed, 30 Apr 2025 11:51:44 UTC
Seeding Wed, 30 Apr 2025 11:51:44 UTC
Edge Functions Wed, 30 Apr 2025 11:51:44 UTC

⚠️ Warning — Applied out-of-order migrations: [frontend/packages/db/supabase/migrations/20250424000000_add_organization_id_to_review_feedback_knowledge_suggestion_mappings.sql frontend/packages/db/supabase/migrations/20250424113759_add_organization_id_to_project_repository_mappings.sql frontend/packages/db/supabase/migrations/20250424113807_add_organization_id_to_migrations.sql frontend/packages/db/supabase/migrations/20250424113811_add_organization_id_to_github_pull_requests.sql frontend/packages/db/supabase/migrations/20250424113905_add_organization_id_to_schema_file_paths.sql frontend/packages/db/supabase/migrations/20250424123000_add_organization_id_to_migration_pull_request_mappings.sql frontend/packages/db/supabase/migrations/20250424124724_add_organization_id_to_github_pull_request_comments.sql frontend/packages/db/supabase/migrations/20250425090250_add_token_to_invite_organization_member.sql frontend/packages/db/supabase/migrations/20250425122500_add_organization_id_to_knowledge_suggestion_doc_mappings.sql frontend/packages/db/supabase/migrations/20250425122820_add_organization_id_to_doc_file_paths.sql frontend/packages/db/supabase/migrations/20250425122828_add_organization_id_to_overall_reviews.sql]


View logs for this Workflow Run ↗︎.
Learn more about Supabase for Git ↗︎.

Copy link
Contributor

qodo-merge-pro-for-open-source bot commented Apr 25, 2025

CI Feedback 🧐

(Feedback updated until commit 1260960)

A test triggered by this PR failed. Here is an AI-generated analysis of the failure:

Action: frontend-ci

Failed stage: Check for diff in generated types and schema.sql [❌]

Failure summary:

The action failed because the generated types and schema.sql files differ from the committed files,
as indicated in line 1790: "Generated types and schema.sql differ from committed files." This
suggests that there are schema changes that were made but not properly committed to the repository.
The log shows SQL policy changes being added (lines 1776-1789) including new policies for service
roles on invitations and knowledge suggestions tables.

Relevant error logs:
1:  ##[group]Operating System
2:  Ubuntu
...

156:  �[36;1mpnpm install --frozen-lockfile --prefer-offline�[0m
157:  shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
158:  env:
159:  PNPM_HOME: /home/runner/setup-pnpm/node_modules/.bin
160:  ##[endgroup]
161:  Scope: all 17 workspace projects
162:  Lockfile is up to date, resolution step is skipped
163:  Progress: resolved 1, reused 0, downloaded 0, added 0
164:  Packages: +1566
165:  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
166:  Progress: resolved 1566, reused 1258, downloaded 0, added 0
167:  Progress: resolved 1566, reused 1561, downloaded 0, added 534
168:  Progress: resolved 1566, reused 1561, downloaded 0, added 1109
169:  Progress: resolved 1566, reused 1561, downloaded 0, added 1565
170:  Progress: resolved 1566, reused 1561, downloaded 0, added 1566, done
171:  WARN  Failed to create bin at /home/runner/work/liam/liam/frontend/apps/erd-sample/node_modules/.bin/liam. ENOENT: no such file or directory, open '/home/runner/work/liam/liam/frontend/packages/cli/dist-cli/bin/cli.js'
172:  devDependencies:
...

185:  │                                                                              │
186:  │   Ignored build scripts: @biomejs/biome, @bundled-es-modules/glob,           │
187:  │   @depot/cli, @prisma/client, @prisma/engines, @sentry/cli, core-js-pure,    │
188:  │   esbuild, protobufjs, sharp, style-dictionary.                              │
189:  │   Run "pnpm approve-builds" to pick which dependencies should be allowed     │
190:  │   to run scripts.                                                            │
191:  │                                                                              │
192:  ╰──────────────────────────────────────────────────────────────────────────────╯
193:  frontend/apps/docs postinstall$ fumadocs-mdx
194:  frontend/packages/jobs postinstall$ cp ../db-structure/node_modules/@ruby/prism/src/prism.wasm prism.wasm
195:  frontend/packages/jobs postinstall: Done
196:  frontend/apps/docs postinstall: [MDX] types generated
197:  frontend/apps/docs postinstall: Done
198:  frontend/apps/app postinstall$ cp ../../packages/db-structure/node_modules/@ruby/prism/src/prism.wasm prism.wasm
199:  frontend/apps/app postinstall: Done
200:  WARN  Failed to create bin at /home/runner/work/liam/liam/frontend/apps/erd-sample/node_modules/.bin/liam. ENOENT: no such file or directory, open '/home/runner/work/liam/liam/frontend/apps/erd-sample/node_modules/@liam-hq/cli/dist-cli/bin/cli.js'
201:  Done in 6.4s using pnpm v10.8.1
...

711:  e474be2ddfca: Verifying Checksum
712:  e474be2ddfca: Download complete
713:  126586508cfc: Verifying Checksum
714:  126586508cfc: Download complete
715:  146f98566145: Verifying Checksum
716:  146f98566145: Download complete
717:  6e909acdb790: Pull complete
718:  8a05c7f45a2f: Pull complete
719:  3956f985b675: Pull complete
720:  e474be2ddfca: Pull complete
721:  146f98566145: Pull complete
722:  126586508cfc: Pull complete
723:  Digest: sha256:358930e39ff36e0130c3afe3808a5c8f8322f7ff9c42624406dacce859ed0e24
724:  Status: Downloaded newer image for public.ecr.aws/supabase/edge-runtime:v1.67.4
725:  v0.88.9: Pulling from supabase/postgres-meta
726:  failed to display json stream: toomanyrequests: Rate exceeded
727:  Retrying after 4s: public.ecr.aws/supabase/postgres-meta:v0.88.9
...

945:  > @liam-hq/db@0.0.0 build /home/runner/work/liam/liam/frontend/packages/db
946:  > tsc
947:  ##[endgroup]
948:  ##[group]@liam-hq/erd-core:gen
949:  cache miss, executing 13b77f17012f2d10
950:  > @liam-hq/erd-core@0.1.7 gen /home/runner/work/liam/liam/frontend/packages/erd-core
951:  > concurrently "pnpm:gen:*"
952:  [css] 
953:  [css] > @liam-hq/erd-core@0.1.7 gen:css /home/runner/work/liam/liam/frontend/packages/erd-core
954:  [css] > tcm src
955:  [css] 
956:  [css] Wrote /home/runner/work/liam/liam/frontend/packages/erd-core/src/features/erd/components/ERDContent/ERDContent.module.css.d.ts
957:  [css] Wrote /home/runner/work/liam/liam/frontend/packages/erd-core/src/features/erd/components/ERDRenderer/ERDRenderer.module.css.d.ts
958:  [css] Wrote /home/runner/work/liam/liam/frontend/packages/erd-core/src/features/erd/components/ERDRenderer/RelationshipEdgeParticleMarker/RelationshipEdgeParticleMarker.module.css.d.ts
959:  [css] Wrote /home/runner/work/liam/liam/frontend/packages/erd-core/src/styles/variables.css.d.ts
960:  [css] Wrote /home/runner/work/liam/liam/frontend/packages/erd-core/src/features/erd/components/ERDRenderer/ErrorDisplay/ParseErrorDisplay.module.css.d.ts
961:  [css] Wrote /home/runner/work/liam/liam/frontend/packages/erd-core/src/features/erd/components/ERDRenderer/LeftPane/LeftPane.module.css.d.ts
962:  [css] Wrote /home/runner/work/liam/liam/frontend/packages/erd-core/src/features/erd/components/ERDRenderer/ErrorDisplay/NetworkErrorDisplay.module.css.d.ts
963:  [css] Wrote /home/runner/work/liam/liam/frontend/packages/erd-core/src/features/erd/components/ERDRenderer/ErrorDisplay/ErrorDisplay.module.css.d.ts
964:  [css] Wrote /home/runner/work/liam/liam/frontend/packages/erd-core/src/features/erd/components/ERDRenderer/CardinalityMarkers/CardinalityMarkers.module.css.d.ts
...

1133:  �[22m�[39mNo schema path found for project 100: {"code":"22P02","details":null,"hint":null,"message":"invalid input syntax for type uuid: \"100\""}
1134:  �[90mstderr�[2m | app/api/webhook/github/utils/__tests__/checkSchemaChanges.test.ts�[2m > �[22m�[2mcheckSchemaChanges�[2m > �[22m�[2mshould return false if no files match the schema paths
1135:  �[22m�[39mNo schema path found for project 100: {"code":"22P02","details":null,"hint":null,"message":"invalid input syntax for type uuid: \"100\""}
1136:  �[32m✓�[39m app/api/webhook/github/utils/__tests__/checkSchemaChanges.test.ts �[2m(�[22m�[2m3 tests�[22m�[2m | �[22m�[33m1 skipped�[39m�[2m)�[22m�[32m 142�[2mms�[22m�[39m
1137:  �[2m�[90m↓�[39m�[22m features/projects/pages/ProjectsPage/getProjects.test.ts �[2m(�[22m�[2m1 test�[22m�[2m | �[22m�[33m1 skipped�[39m�[2m)�[22m
1138:  �[2m Test Files �[22m �[1m�[32m3 passed�[39m�[22m�[2m | �[22m�[33m1 skipped�[39m�[90m (4)�[39m
1139:  �[2m      Tests �[22m �[1m�[32m4 passed�[39m�[22m�[2m | �[22m�[33m4 skipped�[39m�[90m (8)�[39m
1140:  �[2m   Start at �[22m 12:43:54
1141:  �[2m   Duration �[22m 2.92s�[2m (transform 630ms, setup 336ms, collect 2.55s, tests 445ms, environment 1ms, prepare 1.64s)�[22m
1142:  ##[endgroup]
1143:  ##[group]@liam-hq/prompt-test:test
1144:  cache miss, executing 436de44e0510f3e9
1145:  > @liam-hq/prompt-test@0.1.0 test /home/runner/work/liam/liam/frontend/packages/prompt-test
1146:  > tsx src/index.ts
1147:  Langfuse secret key was not passed to constructor or not set as 'LANGFUSE_SECRET_KEY' environment variable. No observability data will be sent to Langfuse.
1148:  [Langfuse SDK] 401: Unauthorized. Please check your public/private host settings. Refer to our installation and setup guide: https://langfuse.com/docs/sdk/typescript/guide for details on SDK configuration. Make sure to keep your SDK updated, refer to https://www.npmjs.com/package/langfuse for details. Error details: LangfuseFetchHttpError: HTTP error while fetching Langfuse: 401 and body: {"message":"Invalid authorization header"}
1149:  [Langfuse SDK] 401: Unauthorized. Please check your public/private host settings. Refer to our installation and setup guide: https://langfuse.com/docs/sdk/typescript/guide for details on SDK configuration. Make sure to keep your SDK updated, refer to https://www.npmjs.com/package/langfuse for details. Error details: LangfuseFetchHttpError: HTTP error while fetching Langfuse: 401 and body: {"message":"Invalid authorization header"}
1150:  TypeError: itemsResponse.data is not iterable (cannot read property undefined)
1151:  at Langfuse.getDataset (/home/runner/work/liam/liam/node_modules/.pnpm/langfuse-core@3.37.2/node_modules/langfuse-core/src/index.ts:1432:13)
...

1160:  �[32m✓�[39m src/parser/tbls/index.test.ts �[2m(�[22m�[2m20 tests�[22m�[2m)�[22m�[32m 66�[2mms�[22m�[39m
1161:  (node:7725) ExperimentalWarning: WASI is an experimental feature and might change at any time
1162:  (Use `node --trace-warnings ...` to show where the warning was created)
1163:  �[32m✓�[39m src/parser/prisma/index.test.ts �[2m(�[22m�[2m21 tests�[22m�[2m)�[22m�[33m 385�[2mms�[22m�[39m
1164:  �[32m✓�[39m src/parser/schemarb/index.test.ts �[2m(�[22m�[2m18 tests�[22m�[2m)�[22m�[33m 440�[2mms�[22m�[39m
1165:  �[32m✓�[39m src/schema/overrideSchema.test.ts �[2m(�[22m�[2m6 tests�[22m�[2m)�[22m�[32m 20�[2mms�[22m�[39m
1166:  �[32m✓�[39m src/parser/sql/postgresql/processSQLInChunks.test.ts �[2m(�[22m�[2m6 tests�[22m�[2m)�[22m�[32m 19�[2mms�[22m�[39m
1167:  �[32m✓�[39m src/parser/tbls/schema.generated.test.ts �[2m(�[22m�[2m5 tests�[22m�[2m)�[22m�[32m 21�[2mms�[22m�[39m
1168:  �[32m✓�[39m src/parser/schemarb/singularize.test.ts �[2m(�[22m�[2m18 tests�[22m�[2m)�[22m�[32m 37�[2mms�[22m�[39m
1169:  �[32m✓�[39m src/parser/supportedFormat/detectFormat.test.ts �[2m(�[22m�[2m10 tests�[22m�[2m)�[22m�[32m 9�[2mms�[22m�[39m
1170:  (node:8095) ExperimentalWarning: WASI is an experimental feature and might change at any time
1171:  (Use `node --trace-warnings ...` to show where the warning was created)
1172:  �[32m✓�[39m src/parser/index.test.ts �[2m(�[22m�[2m2 tests�[22m�[2m)�[22m�[33m 338�[2mms�[22m�[39m
1173:  �[32m✓�[39m src/parser/sql/postgresql/index.test.ts �[2m(�[22m�[2m19 tests�[22m�[2m | �[22m�[33m1 skipped�[39m�[2m)�[22m�[33m 44710�[2mms�[22m�[39m
1174:  �[33m�[2m✓�[22m�[39m processor�[2m > �[22mshould parse CREATE TABLE statement correctly�[2m > �[22mtable comment �[33m 329�[2mms�[22m�[39m
1175:  �[33m�[2m✓�[22m�[39m processor�[2m > �[22mLong "create table" statement (exceeds 500 lines, surpassing CHUNK_SIZE)�[2m > �[22mparses without errors �[33m 22011�[2mms�[22m�[39m
1176:  �[33m�[2m✓�[22m�[39m processor�[2m > �[22mLong "create function" statement (exceeds 500 lines, surpassing CHUNK_SIZE)�[2m > �[22mparses without errors �[33m 21624�[2mms�[22m�[39m
1177:  �[2m Test Files �[22m �[1m�[32m10 passed�[39m�[22m�[90m (10)�[39m
...

1207:  [vite]  * [new branch]        add-playwright           -> origin/add-playwright
1208:  [vite]  * [new branch]        add-schema-meta          -> origin/add-schema-meta
1209:  [vite]  * [new branch]        add_script_to_gen_schema -> origin/add_script_to_gen_schema
1210:  [vite]  * [new branch]        add_script_to_gen_schema_json -> origin/add_script_to_gen_schema_json
1211:  [vite]  * [new branch]        add_test_table           -> origin/add_test_table
1212:  [vite]  * [new branch]        avoid-cp-for-windows-actions -> origin/avoid-cp-for-windows-actions
1213:  [vite]  * [new branch]        avoid-semicolon-logic-2  -> origin/avoid-semicolon-logic-2
1214:  [vite]  * [new branch]        avoid-semicolon-logic-test -> origin/avoid-semicolon-logic-test
1215:  [vite]  * [new branch]        before-promptfoo-experiment -> origin/before-promptfoo-experiment
1216:  [vite]  * [new branch]        changeset-invest1        -> origin/changeset-invest1
1217:  [vite]  * [new branch]        changeset-invest3        -> origin/changeset-invest3
1218:  [vite]  * [new branch]        changeset-release/changeset-invest1 -> origin/changeset-release/changeset-invest1
1219:  [vite]  * [new branch]        check-github-action      -> origin/check-github-action
1220:  [vite]  * [new branch]        chore/install-renovate   -> origin/chore/install-renovate
1221:  [vite]  * [new branch]        cli-schema-json-for-local -> origin/cli-schema-json-for-local
1222:  [vite]  * [new branch]        console-error-1-draft    -> origin/console-error-1-draft
1223:  [vite]  * [new branch]        delete-docs-vercel-deploy-erd-yml -> origin/delete-docs-vercel-deploy-erd-yml
1224:  [vite]  * [new branch]        devin/1738820244-add-init-command-tests -> origin/devin/1738820244-add-init-command-tests
1225:  [vite]  * [new branch]        devin/1738828298-add-multiline-comment-support -> origin/devin/1738828298-add-multiline-comment-support
1226:  [vite]  * [new branch]        devin/1739501885-improve-navigation-test-waits -> origin/devin/1739501885-improve-navigation-test-waits
1227:  [vite]  * [new branch]        devin/1740113652-update-changeset-docs -> origin/devin/1740113652-update-changeset-docs
1228:  [vite]  * [new branch]        devin/1741661851-optimize-github-config-validation -> origin/devin/1741661851-optimize-github-config-validation
1229:  [vite]  * [new branch]        devin/1741663537-github-env-validation-at-boot -> origin/devin/1741663537-github-env-validation-at-boot
1230:  [vite]  * [new branch]        devin/1741825670-postgresql-parser-test -> origin/devin/1741825670-postgresql-parser-test
1231:  [vite]  * [new branch]        devin/1743062004-investigate-issue-1005 -> origin/devin/1743062004-investigate-issue-1005
1232:  [vite]  * [new branch]        devin/1744202861-add-organization-ui -> origin/devin/1744202861-add-organization-ui
1233:  [vite]  * [new branch]        devin/1745381489-fix-supabase-auth-security -> origin/devin/1745381489-fix-supabase-auth-security
1234:  [vite]  * [new branch]        devin/1745404272-fix-appbar-hydration-error -> origin/devin/1745404272-fix-appbar-hydration-error
1235:  [vite]  * [new branch]        devin/1745494672-add-organization-id-to-project-repository-mappings -> origin/devin/1745494672-add-organization-id-to-project-repository-mappings
...

1243:  [vite]  * [new branch]        devin/1745499053-add-organization-id-review-feedback-knowledge-suggestion-mappings -> origin/devin/1745499053-add-organization-id-review-feedback-knowledge-suggestion-mappings
1244:  [vite]  * [new branch]        devin/1745548711-remove-try-catch -> origin/devin/1745548711-remove-try-catch
1245:  [vite]  * [new branch]        devin/1745583922-add-organization-id-to-doc-file-paths -> origin/devin/1745583922-add-organization-id-to-doc-file-paths
1246:  [vite]  * [new branch]        devin/1745584099-add-organization-id-overall-reviews -> origin/devin/1745584099-add-organization-id-overall-reviews
1247:  [vite]  * [new branch]        devin/1745584123-add-organization-id-to-knowledge-suggestion-doc-mappings -> origin/devin/1745584123-add-organization-id-to-knowledge-suggestion-doc-mappings
1248:  [vite]  * [new branch]        devin/1745584404-add-organization-id-rls -> origin/devin/1745584404-add-organization-id-rls
1249:  [vite]  * [new branch]        devin/1745584428-add-organization-id-rls -> origin/devin/1745584428-add-organization-id-rls
1250:  [vite]  * [new branch]        devin/1745584435-add-rls-to-invitations-table -> origin/devin/1745584435-add-rls-to-invitations-table
1251:  [vite]  * [new branch]        devin/1745584509-add-rls-to-organizations-table -> origin/devin/1745584509-add-rls-to-organizations-table
1252:  [vite]  * [new branch]        emu-pr-1033-base         -> origin/emu-pr-1033-base
1253:  [vite]  * [new branch]        emu-pr-1033-feature      -> origin/emu-pr-1033-feature
1254:  [vite]  * [new branch]        emu-pr-1081-base         -> origin/emu-pr-1081-base
1255:  [vite]  * [new branch]        emu-pr-1081-feature      -> origin/emu-pr-1081-feature
1256:  [vite]  * [new branch]        enhance-login-with-return-to -> origin/enhance-login-with-return-to
1257:  [vite]  * [new branch]        enhance-the-highlighting-of-related-table-nodes-when-hovering-usememo-1 -> origin/enhance-the-highlighting-of-related-table-nodes-when-hovering-usememo-1
1258:  [vite]  * [new branch]        error-message-erd-network-error -> origin/error-message-erd-network-error
1259:  [vite]  * [new branch]        feat-related-posts       -> origin/feat-related-posts
...

1296:  [vite]  * [new branch]        promptfoo-go-1           -> origin/promptfoo-go-1
1297:  [vite]  * [new branch]        re-export-create-knowledge-suggestion-task -> origin/re-export-create-knowledge-suggestion-task
1298:  [vite]  * [new branch]        reduce-set-node-calling-chance-3 -> origin/reduce-set-node-calling-chance-3
1299:  [vite]  * [new branch]        refactor-installation-selector -> origin/refactor-installation-selector
1300:  [vite]  * [new branch]        refactor-to-testcases    -> origin/refactor-to-testcases
1301:  [vite]  * [new branch]        refactor/separate-project-layouts -> origin/refactor/separate-project-layouts
1302:  [vite]  * [new branch]        refactor_edge_cardinality_by_using_custom_mark -> origin/refactor_edge_cardinality_by_using_custom_mark
1303:  [vite]  * [new branch]        refactor_hidden_node_handle -> origin/refactor_hidden_node_handle
1304:  [vite]  * [new branch]        release-debug-branch     -> origin/release-debug-branch
1305:  [vite]  * [new branch]        ren-a-table              -> origin/ren-a-table
1306:  [vite]  * [new branch]        renovate-pnpm-10.x-2     -> origin/renovate-pnpm-10.x-2
1307:  [vite]  * [new branch]        renovate/major-react-monorepo -> origin/renovate/major-react-monorepo
1308:  [vite]  * [new branch]        renovate/node-22.x       -> origin/renovate/node-22.x
1309:  [vite]  * [new branch]        renovate/playwright-monorepo -> origin/renovate/playwright-monorepo
1310:  [vite]  * [new branch]        renovate/pnpm-10.x       -> origin/renovate/pnpm-10.x
1311:  [vite]  * [new branch]        revert-435-error-message-erd -> origin/revert-435-error-message-erd
1312:  [vite]  * [new branch]        review-suggestion-patch-suggestion-2 -> origin/review-suggestion-patch-suggestion-2
...

1447:  * [new branch]        add-playwright           -> origin/add-playwright
1448:  * [new branch]        add-schema-meta          -> origin/add-schema-meta
1449:  * [new branch]        add_script_to_gen_schema -> origin/add_script_to_gen_schema
1450:  * [new branch]        add_script_to_gen_schema_json -> origin/add_script_to_gen_schema_json
1451:  * [new branch]        add_test_table           -> origin/add_test_table
1452:  * [new branch]        avoid-cp-for-windows-actions -> origin/avoid-cp-for-windows-actions
1453:  * [new branch]        avoid-semicolon-logic-2  -> origin/avoid-semicolon-logic-2
1454:  * [new branch]        avoid-semicolon-logic-test -> origin/avoid-semicolon-logic-test
1455:  * [new branch]        before-promptfoo-experiment -> origin/before-promptfoo-experiment
1456:  * [new branch]        changeset-invest1        -> origin/changeset-invest1
1457:  * [new branch]        changeset-invest3        -> origin/changeset-invest3
1458:  * [new branch]        changeset-release/changeset-invest1 -> origin/changeset-release/changeset-invest1
1459:  * [new branch]        check-github-action      -> origin/check-github-action
1460:  * [new branch]        chore/install-renovate   -> origin/chore/install-renovate
1461:  * [new branch]        cli-schema-json-for-local -> origin/cli-schema-json-for-local
1462:  * [new branch]        console-error-1-draft    -> origin/console-error-1-draft
1463:  * [new branch]        delete-docs-vercel-deploy-erd-yml -> origin/delete-docs-vercel-deploy-erd-yml
1464:  * [new branch]        devin/1738820244-add-init-command-tests -> origin/devin/1738820244-add-init-command-tests
1465:  * [new branch]        devin/1738828298-add-multiline-comment-support -> origin/devin/1738828298-add-multiline-comment-support
1466:  * [new branch]        devin/1739501885-improve-navigation-test-waits -> origin/devin/1739501885-improve-navigation-test-waits
1467:  * [new branch]        devin/1740113652-update-changeset-docs -> origin/devin/1740113652-update-changeset-docs
1468:  * [new branch]        devin/1741661851-optimize-github-config-validation -> origin/devin/1741661851-optimize-github-config-validation
1469:  * [new branch]        devin/1741663537-github-env-validation-at-boot -> origin/devin/1741663537-github-env-validation-at-boot
1470:  * [new branch]        devin/1741825670-postgresql-parser-test -> origin/devin/1741825670-postgresql-parser-test
1471:  * [new branch]        devin/1743062004-investigate-issue-1005 -> origin/devin/1743062004-investigate-issue-1005
1472:  * [new branch]        devin/1744202861-add-organization-ui -> origin/devin/1744202861-add-organization-ui
1473:  * [new branch]        devin/1745381489-fix-supabase-auth-security -> origin/devin/1745381489-fix-supabase-auth-security
1474:  * [new branch]        devin/1745404272-fix-appbar-hydration-error -> origin/devin/1745404272-fix-appbar-hydration-error
1475:  * [new branch]        devin/1745494672-add-organization-id-to-project-repository-mappings -> origin/devin/1745494672-add-organization-id-to-project-repository-mappings
...

1483:  * [new branch]        devin/1745499053-add-organization-id-review-feedback-knowledge-suggestion-mappings -> origin/devin/1745499053-add-organization-id-review-feedback-knowledge-suggestion-mappings
1484:  * [new branch]        devin/1745548711-remove-try-catch -> origin/devin/1745548711-remove-try-catch
1485:  * [new branch]        devin/1745583922-add-organization-id-to-doc-file-paths -> origin/devin/1745583922-add-organization-id-to-doc-file-paths
1486:  * [new branch]        devin/1745584099-add-organization-id-overall-reviews -> origin/devin/1745584099-add-organization-id-overall-reviews
1487:  * [new branch]        devin/1745584123-add-organization-id-to-knowledge-suggestion-doc-mappings -> origin/devin/1745584123-add-organization-id-to-knowledge-suggestion-doc-mappings
1488:  * [new branch]        devin/1745584404-add-organization-id-rls -> origin/devin/1745584404-add-organization-id-rls
1489:  * [new branch]        devin/1745584428-add-organization-id-rls -> origin/devin/1745584428-add-organization-id-rls
1490:  * [new branch]        devin/1745584435-add-rls-to-invitations-table -> origin/devin/1745584435-add-rls-to-invitations-table
1491:  * [new branch]        devin/1745584509-add-rls-to-organizations-table -> origin/devin/1745584509-add-rls-to-organizations-table
1492:  * [new branch]        emu-pr-1033-base         -> origin/emu-pr-1033-base
1493:  * [new branch]        emu-pr-1033-feature      -> origin/emu-pr-1033-feature
1494:  * [new branch]        emu-pr-1081-base         -> origin/emu-pr-1081-base
1495:  * [new branch]        emu-pr-1081-feature      -> origin/emu-pr-1081-feature
1496:  * [new branch]        enhance-login-with-return-to -> origin/enhance-login-with-return-to
1497:  * [new branch]        enhance-the-highlighting-of-related-table-nodes-when-hovering-usememo-1 -> origin/enhance-the-highlighting-of-related-table-nodes-when-hovering-usememo-1
1498:  * [new branch]        error-message-erd-network-error -> origin/error-message-erd-network-error
1499:  * [new branch]        feat-related-posts       -> origin/feat-related-posts
...

1536:  * [new branch]        promptfoo-go-1           -> origin/promptfoo-go-1
1537:  * [new branch]        re-export-create-knowledge-suggestion-task -> origin/re-export-create-knowledge-suggestion-task
1538:  * [new branch]        reduce-set-node-calling-chance-3 -> origin/reduce-set-node-calling-chance-3
1539:  * [new branch]        refactor-installation-selector -> origin/refactor-installation-selector
1540:  * [new branch]        refactor-to-testcases    -> origin/refactor-to-testcases
1541:  * [new branch]        refactor/separate-project-layouts -> origin/refactor/separate-project-layouts
1542:  * [new branch]        refactor_edge_cardinality_by_using_custom_mark -> origin/refactor_edge_cardinality_by_using_custom_mark
1543:  * [new branch]        refactor_hidden_node_handle -> origin/refactor_hidden_node_handle
1544:  * [new branch]        release-debug-branch     -> origin/release-debug-branch
1545:  * [new branch]        ren-a-table              -> origin/ren-a-table
1546:  * [new branch]        renovate-pnpm-10.x-2     -> origin/renovate-pnpm-10.x-2
1547:  * [new branch]        renovate/major-react-monorepo -> origin/renovate/major-react-monorepo
1548:  * [new branch]        renovate/node-22.x       -> origin/renovate/node-22.x
1549:  * [new branch]        renovate/playwright-monorepo -> origin/renovate/playwright-monorepo
1550:  * [new branch]        renovate/pnpm-10.x       -> origin/renovate/pnpm-10.x
1551:  * [new branch]        revert-435-error-message-erd -> origin/revert-435-error-message-erd
1552:  * [new branch]        review-suggestion-patch-suggestion-2 -> origin/review-suggestion-patch-suggestion-2
...

1647:  * [new tag]           @liam-hq/ui@0.0.14       -> @liam-hq/ui@0.0.14
1648:  * [new tag]           @liam-hq/ui@0.0.15       -> @liam-hq/ui@0.0.15
1649:  * [new tag]           @liam-hq/ui@0.0.16       -> @liam-hq/ui@0.0.16
1650:  �[1m�[46m RUN �[49m�[22m �[36mv3.1.2 �[39m�[90m/home/runner/work/liam/liam/frontend/packages/cli�[39m
1651:  �[32m✓�[39m src/cli/erdCommand/getInputContent.test.ts �[2m(�[22m�[2m8 tests�[22m�[2m)�[22m�[32m 116�[2mms�[22m�[39m
1652:  (node:9099) ExperimentalWarning: WASI is an experimental feature and might change at any time
1653:  (Use `node --trace-warnings ...` to show where the warning was created)
1654:  (node:9183) ExperimentalWarning: WASI is an experimental feature and might change at any time
1655:  (Use `node --trace-warnings ...` to show where the warning was created)
1656:  �[32m✓�[39m src/cli/erdCommand/runPreprocess.test.ts �[2m(�[22m�[2m4 tests�[22m�[2m)�[22m�[33m 638�[2mms�[22m�[39m
1657:  �[32m✓�[39m src/cli/index.test.ts �[2m(�[22m�[2m3 tests�[22m�[2m)�[22m�[32m 6�[2mms�[22m�[39m
1658:  (node:9299) ExperimentalWarning: WASI is an experimental feature and might change at any time
1659:  (Use `node --trace-warnings ...` to show where the warning was created)
1660:  �[32m✓�[39m src/cli/erdCommand/index.test.ts �[2m(�[22m�[2m3 tests�[22m�[2m)�[22m�[32m 19�[2mms�[22m�[39m
1661:  �[32m✓�[39m src/cli/smoke.test.ts �[2m(�[22m�[2m2 tests�[22m�[2m)�[22m�[33m 42313�[2mms�[22m�[39m
1662:  �[33m�[2m✓�[22m�[39m CLI Smoke Test�[2m > �[22mshould run the CLI command without errors: `erd` �[33m 3249�[2mms�[22m�[39m
1663:  �[33m�[2m✓�[22m�[39m CLI Smoke Test�[2m > �[22mshould run the CLI command without errors: `erd build` �[33m 4642�[2mms�[22m�[39m
1664:  �[2m Test Files �[22m �[1m�[32m5 passed�[39m�[22m�[90m (5)�[39m
...

1776:  +
1777:  CREATE POLICY "service_role_can_insert_all_knowledge_suggestions" ON "public"."knowledge_suggestions" FOR INSERT TO "service_role" WITH CHECK (true);
1778:  @@ -1131,6 +1168,10 @@ COMMENT ON POLICY "service_role_can_insert_all_projects" ON "public"."projects"
1779:  +CREATE POLICY "service_role_can_select_all_invitations" ON "public"."invitations" FOR SELECT TO "service_role" USING (true);
1780:  +
1781:  +
1782:  +
1783:  CREATE POLICY "service_role_can_select_all_knowledge_suggestions" ON "public"."knowledge_suggestions" FOR SELECT TO "service_role" USING (true);
1784:  @@ -1143,6 +1184,10 @@ COMMENT ON POLICY "service_role_can_select_all_projects" ON "public"."projects"
1785:  +CREATE POLICY "service_role_can_update_all_invitations" ON "public"."invitations" FOR UPDATE TO "service_role" USING (true) WITH CHECK (true);
1786:  +
1787:  +
1788:  +
1789:  CREATE POLICY "service_role_can_update_all_knowledge_suggestions" ON "public"."knowledge_suggestions" FOR UPDATE TO "service_role" USING (true) WITH CHECK (true);
1790:  Generated types and schema.sql differ from committed files.
1791:  ##[error]Process completed with exit code 1.
1792:  Post job cleanup.

Co-Authored-By: noritaka.ikeda@route06.co.jp <noritaka.ikeda@route06.co.jp>
ALTER TABLE "public"."invitations" ENABLE ROW LEVEL SECURITY;

-- Policies for authenticated users
CREATE POLICY "authenticated_users_can_select_org_invitations"
Copy link
Member

Choose a reason for hiding this comment

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

  • Authenticated users can view, create, update, and delete invitations only within organizations they are members of.
  • Service role can fully manage invitations without restriction.
    Currently, broader permissions are granted because full feature implementation is still in progress.
    If you're curious where this table is used, try grepping for .from('invitations') in the codebase.

@NoritakaIkeda NoritakaIkeda marked this pull request as ready for review April 28, 2025 08:01
@NoritakaIkeda NoritakaIkeda requested a review from a team as a code owner April 28, 2025 08:01
@NoritakaIkeda NoritakaIkeda requested review from hoshinotsuyoshi, FunamaYukina, junkisai, MH4GF and NoritakaIkeda and removed request for a team April 28, 2025 08:01
Copy link
Contributor

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪 No relevant tests
🔒 No security concerns identified
⚡ Recommended focus areas for review

Duplicate Policies

The same RLS policies are defined in both schema.sql and the migration file. This duplication could lead to confusion or errors if one file is updated but not the other.

CREATE POLICY "authenticated_users_can_delete_org_invitations" ON "public"."invitations" FOR DELETE TO "authenticated" USING (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"()))));



CREATE POLICY "authenticated_users_can_delete_org_projects" ON "public"."projects" FOR DELETE TO "authenticated" USING (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"()))));



COMMENT ON POLICY "authenticated_users_can_delete_org_projects" ON "public"."projects" IS 'Authenticated users can only delete projects in organizations they are members of';



CREATE POLICY "authenticated_users_can_insert_org_invitations" ON "public"."invitations" FOR INSERT TO "authenticated" WITH CHECK (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"()))));



CREATE POLICY "authenticated_users_can_insert_org_knowledge_suggestions" ON "public"."knowledge_suggestions" FOR INSERT TO "authenticated" WITH CHECK (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"()))));



COMMENT ON POLICY "authenticated_users_can_insert_org_knowledge_suggestions" ON "public"."knowledge_suggestions" IS 'Authenticated users can only create knowledge suggestions in organizations they are members of';



CREATE POLICY "authenticated_users_can_insert_projects" ON "public"."projects" FOR INSERT TO "authenticated" WITH CHECK (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"()))));



COMMENT ON POLICY "authenticated_users_can_insert_projects" ON "public"."projects" IS 'Authenticated users can create any project';



CREATE POLICY "authenticated_users_can_select_org_invitations" ON "public"."invitations" FOR SELECT TO "authenticated" USING (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"()))));



CREATE POLICY "authenticated_users_can_select_org_knowledge_suggestions" ON "public"."knowledge_suggestions" FOR SELECT TO "authenticated" USING (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"()))));



COMMENT ON POLICY "authenticated_users_can_select_org_knowledge_suggestions" ON "public"."knowledge_suggestions" IS 'Authenticated users can only view knowledge suggestions belonging to organizations they are members of';



CREATE POLICY "authenticated_users_can_select_org_overall_review_knowledge_sug" ON "public"."overall_review_knowledge_suggestion_mappings" FOR SELECT TO "authenticated" USING (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"()))));



COMMENT ON POLICY "authenticated_users_can_select_org_overall_review_knowledge_sug" ON "public"."overall_review_knowledge_suggestion_mappings" IS 'Authenticated users can only view mappings belonging to organizations they are members of';



CREATE POLICY "authenticated_users_can_select_org_projects" ON "public"."projects" FOR SELECT TO "authenticated" USING (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"()))));



COMMENT ON POLICY "authenticated_users_can_select_org_projects" ON "public"."projects" IS 'Authenticated users can only view projects belonging to organizations they are members of';



CREATE POLICY "authenticated_users_can_update_org_invitations" ON "public"."invitations" FOR UPDATE TO "authenticated" USING (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"())))) WITH CHECK (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"()))));



CREATE POLICY "authenticated_users_can_update_org_knowledge_suggestions" ON "public"."knowledge_suggestions" FOR UPDATE TO "authenticated" USING (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"())))) WITH CHECK (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"()))));



COMMENT ON POLICY "authenticated_users_can_update_org_knowledge_suggestions" ON "public"."knowledge_suggestions" IS 'Authenticated users can only update knowledge suggestions in organizations they are members of';



CREATE POLICY "authenticated_users_can_update_org_projects" ON "public"."projects" FOR UPDATE TO "authenticated" USING (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"())))) WITH CHECK (("organization_id" IN ( SELECT "organization_members"."organization_id"
   FROM "public"."organization_members"
  WHERE ("organization_members"."user_id" = "auth"."uid"()))));



COMMENT ON POLICY "authenticated_users_can_update_org_projects" ON "public"."projects" IS 'Authenticated users can only update projects in organizations they are members of';



ALTER TABLE "public"."invitations" ENABLE ROW LEVEL SECURITY;


ALTER TABLE "public"."knowledge_suggestions" ENABLE ROW LEVEL SECURITY;


ALTER TABLE "public"."overall_review_knowledge_suggestion_mappings" ENABLE ROW LEVEL SECURITY;


ALTER TABLE "public"."projects" ENABLE ROW LEVEL SECURITY;


CREATE POLICY "service_role_can_delete_all_invitations" ON "public"."invitations" FOR DELETE TO "service_role" USING (true);



CREATE POLICY "service_role_can_delete_all_knowledge_suggestions" ON "public"."knowledge_suggestions" FOR DELETE TO "service_role" USING (true);



CREATE POLICY "service_role_can_delete_all_projects" ON "public"."projects" FOR DELETE TO "service_role" USING (true);



COMMENT ON POLICY "service_role_can_delete_all_projects" ON "public"."projects" IS 'Service role can delete any project (for jobs)';



CREATE POLICY "service_role_can_insert_all_invitations" ON "public"."invitations" FOR INSERT TO "service_role" WITH CHECK (true);



CREATE POLICY "service_role_can_insert_all_knowledge_suggestions" ON "public"."knowledge_suggestions" FOR INSERT TO "service_role" WITH CHECK (true);



CREATE POLICY "service_role_can_insert_all_overall_review_knowledge_suggestion" ON "public"."overall_review_knowledge_suggestion_mappings" FOR INSERT TO "service_role" WITH CHECK (true);



CREATE POLICY "service_role_can_insert_all_projects" ON "public"."projects" FOR INSERT TO "service_role" WITH CHECK (true);



COMMENT ON POLICY "service_role_can_insert_all_projects" ON "public"."projects" IS 'Service role can create any project (for jobs)';



CREATE POLICY "service_role_can_select_all_invitations" ON "public"."invitations" FOR SELECT TO "service_role" USING (true);



CREATE POLICY "service_role_can_select_all_knowledge_suggestions" ON "public"."knowledge_suggestions" FOR SELECT TO "service_role" USING (true);



CREATE POLICY "service_role_can_select_all_projects" ON "public"."projects" FOR SELECT TO "service_role" USING (true);



COMMENT ON POLICY "service_role_can_select_all_projects" ON "public"."projects" IS 'Service role can view all projects (for jobs)';



CREATE POLICY "service_role_can_update_all_invitations" ON "public"."invitations" FOR UPDATE TO "service_role" USING (true) WITH CHECK (true);

Copy link
Contributor

qodo-merge-pro-for-open-source bot commented Apr 28, 2025

PR Code Suggestions ✨

Explore these optional code suggestions:

CategorySuggestion                                                                                                                                    Impact
Possible issue
Allow viewing personal invitations

Consider adding a policy to allow users to view invitations where they are the
invitee. Currently, users can only see invitations for organizations they're
already members of, but they need to see invitations sent to them before
joining.

frontend/packages/db/schema/schema.sql [1055-1057]

-CREATE POLICY "authenticated_users_can_select_org_invitations" ON "public"."invitations" FOR SELECT TO "authenticated" USING (("organization_id" IN ( SELECT "organization_members"."organization_id"
+CREATE POLICY "authenticated_users_can_select_org_invitations" ON "public"."invitations" FOR SELECT TO "authenticated" USING ((("organization_id" IN ( SELECT "organization_members"."organization_id"
    FROM "public"."organization_members"
-  WHERE ("organization_members"."user_id" = "auth"."uid"()))));
+  WHERE ("organization_members"."user_id" = "auth"."uid"()))) OR ("email" = (SELECT "email" FROM "auth"."users" WHERE "id" = "auth"."uid"()))));
  • Apply this suggestion
Suggestion importance[1-10]: 9

__

Why: The suggestion correctly identifies a potential functional gap in the SELECT policy for invitations. The current policy only allows viewing invitations within organizations the user is already a member of, potentially preventing users from seeing invitations sent directly to them before joining. The proposed change addresses this important use case.

High
  • Update

Copy link

liam-migration-preview bot commented Apr 28, 2025

This migration adds RLS policies for the invitations table with both authenticated and service_role roles, but duplicates are visible between the schema file and a dedicated migration file. The primary concern is migration safety and potential data integrity issues due to duplicate policy definitions and lack of explicit transaction wrapping, which could lead to runtime conflicts and performance slowdowns. On the positive side, the new policies follow naming conventions and enhance security controls, reinforcing organization-based access as per project guidelines.

Migration URL: https://liam-app-git-staging-route-06-core.vercel.app/app/projects/9d777f64-400a-42f3-a60e-98a59fc97279/ref/devin%2F1745584435-add-rls-to-invitations-table/migrations/4b1e7e2a-9c14-483c-9398-aa1b27ff99c8

ER Diagram:

Copy link
Member

@hoshinotsuyoshi hoshinotsuyoshi left a comment

Choose a reason for hiding this comment

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

👍

Copy link
Member

@MH4GF MH4GF left a comment

Choose a reason for hiding this comment

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

👍🏻

@NoritakaIkeda NoritakaIkeda added this pull request to the merge queue Apr 30, 2025
Merged via the queue into main with commit a4e43f1 Apr 30, 2025
20 checks passed
@NoritakaIkeda NoritakaIkeda deleted the devin/1745584435-add-rls-to-invitations-table branch April 30, 2025 12:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants