@orizm/cli 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -1
- package/dist/agent-Bd30EhQC.mjs +14 -0
- package/dist/agent-Bd30EhQC.mjs.map +1 -0
- package/dist/agent-vC2-9rjt.cjs +14 -0
- package/dist/agent-vC2-9rjt.cjs.map +1 -0
- package/dist/auth-BnXPHgBU.cjs +18 -0
- package/dist/{auth-CNbONZuf.cjs.map → auth-BnXPHgBU.cjs.map} +1 -1
- package/dist/{auth-BGW072BP.mjs → auth-DHVtM0sF.mjs} +4 -4
- package/dist/{auth-BGW072BP.mjs.map → auth-DHVtM0sF.mjs.map} +1 -1
- package/dist/{bucket-mg5QQORh.cjs → bucket-CFaYmimY.cjs} +3 -3
- package/dist/{bucket-mg5QQORh.cjs.map → bucket-CFaYmimY.cjs.map} +1 -1
- package/dist/{bucket-DqW-WEYb.mjs → bucket-D-lu1xgZ.mjs} +3 -3
- package/dist/{bucket-DqW-WEYb.mjs.map → bucket-D-lu1xgZ.mjs.map} +1 -1
- package/dist/cli/main.cjs +14 -12
- package/dist/cli/main.cjs.map +1 -1
- package/dist/cli/main.mjs +14 -13
- package/dist/cli/main.mjs.map +1 -1
- package/dist/{cms-Cnx-lDGu.cjs → cms-CId7jg5l.cjs} +5 -5
- package/dist/cms-CId7jg5l.cjs.map +1 -0
- package/dist/{cms-BJnovGYT.mjs → cms-DLOypcw8.mjs} +5 -5
- package/dist/cms-DLOypcw8.mjs.map +1 -0
- package/dist/{codegen-DZOB4ttR.mjs → codegen-BKE_IYoM.mjs} +3 -3
- package/dist/{codegen-DZOB4ttR.mjs.map → codegen-BKE_IYoM.mjs.map} +1 -1
- package/dist/{codegen-BF5b-u46.cjs → codegen-kbbIwPbb.cjs} +3 -3
- package/dist/{codegen-BF5b-u46.cjs.map → codegen-kbbIwPbb.cjs.map} +1 -1
- package/dist/{confirm-delete-B9o73U7B.cjs → confirm-delete-BX8bJrXZ.cjs} +3 -3
- package/dist/{confirm-delete-B9o73U7B.cjs.map → confirm-delete-BX8bJrXZ.cjs.map} +1 -1
- package/dist/{confirm-delete-CsWkW69-.mjs → confirm-delete-CcKLYuCB.mjs} +2 -2
- package/dist/{confirm-delete-CsWkW69-.mjs.map → confirm-delete-CcKLYuCB.mjs.map} +1 -1
- package/dist/{consumer-C4WiGHWG.mjs → consumer-BAM3E_68.mjs} +4 -4
- package/dist/{consumer-C4WiGHWG.mjs.map → consumer-BAM3E_68.mjs.map} +1 -1
- package/dist/{consumer-pU2HyiyA.mjs → consumer-CqyZdG9v.mjs} +4 -4
- package/dist/consumer-CqyZdG9v.mjs.map +1 -0
- package/dist/consumer-D-Y6KJ8a.cjs +18 -0
- package/dist/{consumer-l-8wUK8E.cjs.map → consumer-D-Y6KJ8a.cjs.map} +1 -1
- package/dist/{consumer-OF6Z_eTP.cjs → consumer-OG6IEJun.cjs} +4 -4
- package/dist/consumer-OG6IEJun.cjs.map +1 -0
- package/dist/content-ClRuLcGq.cjs +20 -0
- package/dist/{content-DMjSwor1.cjs.map → content-ClRuLcGq.cjs.map} +1 -1
- package/dist/content-DWnYo6ad.mjs +20 -0
- package/dist/{content-BOb6NC8M.mjs.map → content-DWnYo6ad.mjs.map} +1 -1
- package/dist/{create-DJY71sp9.cjs → create-B3d4CDel.cjs} +2 -2
- package/dist/{create-DJY71sp9.cjs.map → create-B3d4CDel.cjs.map} +1 -1
- package/dist/{create-CC814ixh.mjs → create-BD6iS4n6.mjs} +2 -2
- package/dist/{create-CC814ixh.mjs.map → create-BD6iS4n6.mjs.map} +1 -1
- package/dist/{create-B-PAOor6.mjs → create-BGV3F44O.mjs} +3 -3
- package/dist/{create-B-PAOor6.mjs.map → create-BGV3F44O.mjs.map} +1 -1
- package/dist/{create-Z-z3LXNW.cjs → create-BYDbsUvw.cjs} +3 -3
- package/dist/{create-Z-z3LXNW.cjs.map → create-BYDbsUvw.cjs.map} +1 -1
- package/dist/{create-Belwettw.mjs → create-BtuS23L3.mjs} +2 -2
- package/dist/{create-Belwettw.mjs.map → create-BtuS23L3.mjs.map} +1 -1
- package/dist/{create-CCsn7yp5.cjs → create-CNDCTpi0.cjs} +3 -3
- package/dist/{create-CCsn7yp5.cjs.map → create-CNDCTpi0.cjs.map} +1 -1
- package/dist/{create-BNYWcyuQ.cjs → create-DzRMGpm_.cjs} +2 -2
- package/dist/{create-BNYWcyuQ.cjs.map → create-DzRMGpm_.cjs.map} +1 -1
- package/dist/{create-B1ZBOqcV.mjs → create-fweRd0UB.mjs} +2 -2
- package/dist/{create-B1ZBOqcV.mjs.map → create-fweRd0UB.mjs.map} +1 -1
- package/dist/{create-D5suBd3J.mjs → create-m5fNBqQE.mjs} +3 -3
- package/dist/{create-D5suBd3J.mjs.map → create-m5fNBqQE.mjs.map} +1 -1
- package/dist/{create-CmOriwGo.cjs → create-tWGEtI3t.cjs} +2 -2
- package/dist/{create-CmOriwGo.cjs.map → create-tWGEtI3t.cjs.map} +1 -1
- package/dist/{delete-DhSU-Lx2.mjs → delete-B8VlzzCj.mjs} +3 -3
- package/dist/{delete-DhSU-Lx2.mjs.map → delete-B8VlzzCj.mjs.map} +1 -1
- package/dist/{delete-DVrafka1.cjs → delete-B9j8c8ln.cjs} +3 -3
- package/dist/{delete-DVrafka1.cjs.map → delete-B9j8c8ln.cjs.map} +1 -1
- package/dist/{delete-ZIifaG0i.mjs → delete-BhJK-8vE.mjs} +3 -3
- package/dist/{delete-ZIifaG0i.mjs.map → delete-BhJK-8vE.mjs.map} +1 -1
- package/dist/{delete-YYh_0khQ.mjs → delete-Bi6UhAhS.mjs} +3 -3
- package/dist/{delete-YYh_0khQ.mjs.map → delete-Bi6UhAhS.mjs.map} +1 -1
- package/dist/{delete-CCTiCYIL.cjs → delete-C_oxZa_p.cjs} +3 -3
- package/dist/{delete-CCTiCYIL.cjs.map → delete-C_oxZa_p.cjs.map} +1 -1
- package/dist/{delete-CSs5Czlo.mjs → delete-Ci7cq3mU.mjs} +3 -3
- package/dist/{delete-CSs5Czlo.mjs.map → delete-Ci7cq3mU.mjs.map} +1 -1
- package/dist/{delete-XWJRhBFs.mjs → delete-CiWkGnog.mjs} +3 -3
- package/dist/{delete-XWJRhBFs.mjs.map → delete-CiWkGnog.mjs.map} +1 -1
- package/dist/{delete-DozSxZQ7.cjs → delete-Cmk80aqF.cjs} +3 -3
- package/dist/{delete-DozSxZQ7.cjs.map → delete-Cmk80aqF.cjs.map} +1 -1
- package/dist/{delete-8yZ3j0vX.cjs → delete-CvtvB2Cr.cjs} +3 -3
- package/dist/{delete-8yZ3j0vX.cjs.map → delete-CvtvB2Cr.cjs.map} +1 -1
- package/dist/{delete-CIYY59v_.cjs → delete-DG825UwK.cjs} +4 -3
- package/dist/{delete-CIYY59v_.cjs.map → delete-DG825UwK.cjs.map} +1 -1
- package/dist/{delete-WpMIIvjj.cjs → delete-DGrSMqOt.cjs} +3 -3
- package/dist/{delete-WpMIIvjj.cjs.map → delete-DGrSMqOt.cjs.map} +1 -1
- package/dist/{delete-BOUObrDw.mjs → delete-Datr3Kqq.mjs} +3 -2
- package/dist/{delete-BOUObrDw.mjs.map → delete-Datr3Kqq.mjs.map} +1 -1
- package/dist/{delete-D4r1ve4v.cjs → delete-TTF4pIKw.cjs} +3 -3
- package/dist/{delete-D4r1ve4v.cjs.map → delete-TTF4pIKw.cjs.map} +1 -1
- package/dist/{delete-BSLIXrAh.mjs → delete-X8iVsETw.mjs} +3 -3
- package/dist/{delete-BSLIXrAh.mjs.map → delete-X8iVsETw.mjs.map} +1 -1
- package/dist/docs/features/cli/authentication.md +93 -0
- package/dist/docs/features/cli/commands/agent.md +49 -0
- package/dist/docs/features/cli/commands/auth.md +36 -0
- package/dist/docs/features/cli/commands/bucket.md +120 -0
- package/dist/docs/features/cli/commands/codegen.md +51 -0
- package/dist/docs/features/cli/commands/content.md +117 -0
- package/dist/docs/features/cli/commands/key.md +155 -0
- package/dist/docs/features/cli/commands/link.md +21 -0
- package/dist/docs/features/cli/commands/org.md +18 -0
- package/dist/docs/features/cli/commands/project-user.md +108 -0
- package/dist/docs/features/cli/commands/project.md +106 -0
- package/dist/docs/features/cli/commands/schema.md +107 -0
- package/dist/docs/features/cli/commands/webhook.md +110 -0
- package/dist/docs/features/cli/commands.md +110 -0
- package/dist/docs/features/cli/configuration.md +70 -0
- package/dist/docs/features/cli/output.md +53 -0
- package/dist/docs/features/cli/project-linking.md +58 -0
- package/dist/docs/features/cli/quickstart.md +83 -0
- package/dist/docs/features/cli.md +56 -0
- package/dist/docs/features/cms-sdk/account.md +122 -0
- package/dist/docs/features/cms-sdk/auth.md +122 -0
- package/dist/docs/features/cms-sdk/bucket.md +113 -0
- package/dist/docs/features/cms-sdk/cli.md +104 -0
- package/dist/docs/features/cms-sdk/fetch-contents.md +608 -0
- package/dist/docs/features/cms-sdk/install.md +98 -0
- package/dist/docs/features/cms-sdk/management-user.md +244 -0
- package/dist/docs/features/cms-sdk/migrate-to-v2.md +152 -0
- package/dist/docs/features/cms-sdk/mutation-contents.md +190 -0
- package/dist/docs/features/console/audit-logs.md +52 -0
- package/dist/docs/features/console/bucket.md +70 -0
- package/dist/docs/features/console/create-project.md +103 -0
- package/dist/docs/features/console/generate-api-key.md +103 -0
- package/dist/docs/features/console/invite-project-users.md +70 -0
- package/dist/docs/features/console/management-tables.md +131 -0
- package/dist/docs/features/console/organization-member-management.md +78 -0
- package/dist/docs/features/console/schema-history.md +29 -0
- package/dist/docs/features/console.md +15 -0
- package/dist/docs/features/consumer-sdk/cli.md +60 -0
- package/dist/docs/features/consumer-sdk/fetch-contents.md +603 -0
- package/dist/docs/features/consumer-sdk/install.md +90 -0
- package/dist/docs/features/consumer-sdk/migrate-to-v2.md +43 -0
- package/dist/docs/features/design-editor/about.md +36 -0
- package/dist/docs/features/design-editor/getting-started.md +244 -0
- package/dist/docs/features/design-editor/install.md +17 -0
- package/dist/docs/features/design-editor/prop-editor.md +83 -0
- package/dist/docs/features/design-editor/schema.md +279 -0
- package/dist/docs/features/draft.md +241 -0
- package/dist/docs/features/form/about.md +83 -0
- package/dist/docs/features/form/editor.md +410 -0
- package/dist/docs/features/form/submission.md +94 -0
- package/dist/docs/features/full-text-search.md +64 -0
- package/dist/docs/features/history.md +152 -0
- package/dist/docs/features/schema/about.md +215 -0
- package/dist/docs/features/schema/authority.md +456 -0
- package/dist/docs/features/schema/bucket.md +142 -0
- package/dist/docs/features/schema/database.md +419 -0
- package/dist/docs/features/schema/table-module.md +140 -0
- package/dist/docs/features/webhook/revalidate-nextjs.md +185 -0
- package/dist/docs/features/webhook.md +295 -0
- package/dist/docs/get-started/add-model-starter.md +124 -0
- package/dist/docs/get-started/get-started-with-starter.md +218 -0
- package/dist/docs/index.md +88 -0
- package/dist/docs/introduction.md +140 -0
- package/dist/docs/manifest.json +6 -0
- package/dist/docs/resources/cli-migration-guide.md +82 -0
- package/dist/docs/resources/cli-v2-to-v3-migration-guide.md +138 -0
- package/dist/docs/resources/deploy-to-vercel.md +62 -0
- package/dist/docs/resources/limits.md +24 -0
- package/dist/docs/resources/private-registry.md +23 -0
- package/dist/docs/resources/status.md +22 -0
- package/dist/docs/resources/user-model.md +38 -0
- package/dist/{download-ogGbb3FU.cjs → download-BkzmfQXD.cjs} +2 -2
- package/dist/{download-ogGbb3FU.cjs.map → download-BkzmfQXD.cjs.map} +1 -1
- package/dist/{download-oFGzg30E.mjs → download-Dx1oyrMg.mjs} +2 -2
- package/dist/{download-oFGzg30E.mjs.map → download-Dx1oyrMg.mjs.map} +1 -1
- package/dist/{erd-zDoF6I_y.mjs → erd-BNv5Th6z.mjs} +2 -2
- package/dist/{erd-zDoF6I_y.mjs.map → erd-BNv5Th6z.mjs.map} +1 -1
- package/dist/{erd-lKC5NB2l.cjs → erd-ByuVMQ5n.cjs} +2 -2
- package/dist/{erd-lKC5NB2l.cjs.map → erd-ByuVMQ5n.cjs.map} +1 -1
- package/dist/{get-CgEgETQa.mjs → get-1TtxSEoT.mjs} +2 -2
- package/dist/{get-CgEgETQa.mjs.map → get-1TtxSEoT.mjs.map} +1 -1
- package/dist/{get-DjRyK0hJ.cjs → get-B5S1GfjR.cjs} +2 -2
- package/dist/{get-DjRyK0hJ.cjs.map → get-B5S1GfjR.cjs.map} +1 -1
- package/dist/{get-DDB89cOs.mjs → get-BLDHE_Zl.mjs} +2 -2
- package/dist/{get-DDB89cOs.mjs.map → get-BLDHE_Zl.mjs.map} +1 -1
- package/dist/{get-KdWfYINc.cjs → get-C5OH05Ka.cjs} +2 -2
- package/dist/{get-KdWfYINc.cjs.map → get-C5OH05Ka.cjs.map} +1 -1
- package/dist/{get-DwtzBjGV.cjs → get-CKZPn669.cjs} +2 -2
- package/dist/{get-DwtzBjGV.cjs.map → get-CKZPn669.cjs.map} +1 -1
- package/dist/{get-IOU__2RP.cjs → get-CdDZkUXV.cjs} +2 -2
- package/dist/{get-IOU__2RP.cjs.map → get-CdDZkUXV.cjs.map} +1 -1
- package/dist/{get-DB80UNSR.mjs → get-Cw4Dw5NG.mjs} +2 -2
- package/dist/{get-DB80UNSR.mjs.map → get-Cw4Dw5NG.mjs.map} +1 -1
- package/dist/{get-C7dKoSIc.mjs → get-Dy3AD4il.mjs} +2 -2
- package/dist/{get-C7dKoSIc.mjs.map → get-Dy3AD4il.mjs.map} +1 -1
- package/dist/{get-BBOKSXkh.cjs → get-PVsUGHBR.cjs} +2 -2
- package/dist/{get-BBOKSXkh.cjs.map → get-PVsUGHBR.cjs.map} +1 -1
- package/dist/{get-B6vBaq_D.mjs → get-Vo3yr12d.mjs} +2 -2
- package/dist/{get-B6vBaq_D.mjs.map → get-Vo3yr12d.mjs.map} +1 -1
- package/dist/{get-jwXRlIBJ.cjs → get-jaN2o0XY.cjs} +2 -2
- package/dist/{get-jwXRlIBJ.cjs.map → get-jaN2o0XY.cjs.map} +1 -1
- package/dist/{get-DBxhbN1G.mjs → get-qOKYAc46.mjs} +2 -2
- package/dist/{get-DBxhbN1G.mjs.map → get-qOKYAc46.mjs.map} +1 -1
- package/dist/init-CPfpVlUN.mjs +372 -0
- package/dist/init-CPfpVlUN.mjs.map +1 -0
- package/dist/init-NaL2N3Go.cjs +374 -0
- package/dist/init-NaL2N3Go.cjs.map +1 -0
- package/dist/{invite-DPygtCoO.cjs → invite-Tw3SMV0Q.cjs} +2 -2
- package/dist/{invite-DPygtCoO.cjs.map → invite-Tw3SMV0Q.cjs.map} +1 -1
- package/dist/{invite-D66DSMvq.mjs → invite-vzajkU2u.mjs} +2 -2
- package/dist/{invite-D66DSMvq.mjs.map → invite-vzajkU2u.mjs.map} +1 -1
- package/dist/{key-C71Ffll9.mjs → key-CyVxu3Uk.mjs} +3 -3
- package/dist/{key-C71Ffll9.mjs.map → key-CyVxu3Uk.mjs.map} +1 -1
- package/dist/{key-DQr7qRL2.cjs → key-tRYRqYNo.cjs} +3 -3
- package/dist/{key-DQr7qRL2.cjs.map → key-tRYRqYNo.cjs.map} +1 -1
- package/dist/{link-BluFyxEL.mjs → link-Bd55x5Zf.mjs} +2 -2
- package/dist/{link-BluFyxEL.mjs.map → link-Bd55x5Zf.mjs.map} +1 -1
- package/dist/{link-DYu1Vjlw.cjs → link-Cz7MX02S.cjs} +2 -2
- package/dist/{link-DYu1Vjlw.cjs.map → link-Cz7MX02S.cjs.map} +1 -1
- package/dist/{list-D5PSDMWw.mjs → list-2otVufvs.mjs} +3 -3
- package/dist/{list-D5PSDMWw.mjs.map → list-2otVufvs.mjs.map} +1 -1
- package/dist/{list-sQk00GV5.mjs → list-BMnBuZMr.mjs} +2 -2
- package/dist/{list-sQk00GV5.mjs.map → list-BMnBuZMr.mjs.map} +1 -1
- package/dist/{list-BwfpuhmJ.cjs → list-Bo8IMFd0.cjs} +2 -2
- package/dist/{list-BwfpuhmJ.cjs.map → list-Bo8IMFd0.cjs.map} +1 -1
- package/dist/{list-B0N4-Q-5.mjs → list-BtgAAUKm.mjs} +2 -2
- package/dist/{list-B0N4-Q-5.mjs.map → list-BtgAAUKm.mjs.map} +1 -1
- package/dist/{list-vbMaOiza.mjs → list-C0lq-gBZ.mjs} +2 -2
- package/dist/{list-vbMaOiza.mjs.map → list-C0lq-gBZ.mjs.map} +1 -1
- package/dist/{list-BsYYq9wT.mjs → list-CGZ3iT6J.mjs} +2 -2
- package/dist/{list-BsYYq9wT.mjs.map → list-CGZ3iT6J.mjs.map} +1 -1
- package/dist/{list-CFwW0G9f.cjs → list-CMWXO4nB.cjs} +2 -2
- package/dist/{list-CFwW0G9f.cjs.map → list-CMWXO4nB.cjs.map} +1 -1
- package/dist/{list-rAn3uOA7.mjs → list-Ccaec0cs.mjs} +2 -2
- package/dist/{list-rAn3uOA7.mjs.map → list-Ccaec0cs.mjs.map} +1 -1
- package/dist/{list-CU42ERNY.cjs → list-Cp_mHwbN.cjs} +2 -2
- package/dist/{list-CU42ERNY.cjs.map → list-Cp_mHwbN.cjs.map} +1 -1
- package/dist/{list-D0-QrWmn.cjs → list-Cs7kbAAi.cjs} +3 -3
- package/dist/{list-D0-QrWmn.cjs.map → list-Cs7kbAAi.cjs.map} +1 -1
- package/dist/{list-DlJssPwy.cjs → list-D5IaYurn.cjs} +2 -2
- package/dist/{list-DlJssPwy.cjs.map → list-D5IaYurn.cjs.map} +1 -1
- package/dist/{list-CbvEh7eA.mjs → list-DcIBInNA.mjs} +2 -2
- package/dist/{list-CbvEh7eA.mjs.map → list-DcIBInNA.mjs.map} +1 -1
- package/dist/{list-BzLraBnA.cjs → list-Dd3veD9Z.cjs} +2 -2
- package/dist/{list-BzLraBnA.cjs.map → list-Dd3veD9Z.cjs.map} +1 -1
- package/dist/{list-DexBclfb.cjs → list-DdVKKaDN.cjs} +2 -2
- package/dist/{list-DexBclfb.cjs.map → list-DdVKKaDN.cjs.map} +1 -1
- package/dist/{list-Br6Cmi9S.cjs → list-E1sjTZLe.cjs} +2 -2
- package/dist/{list-Br6Cmi9S.cjs.map → list-E1sjTZLe.cjs.map} +1 -1
- package/dist/{list-BRh59EqI.cjs → list-KI-7REC_.cjs} +2 -2
- package/dist/{list-BRh59EqI.cjs.map → list-KI-7REC_.cjs.map} +1 -1
- package/dist/{list-ocfd7631.mjs → list-MWD4huKP.mjs} +2 -2
- package/dist/{list-ocfd7631.mjs.map → list-MWD4huKP.mjs.map} +1 -1
- package/dist/{list-57TUfNFd.mjs → list-Pf5aAoaN.mjs} +2 -2
- package/dist/{list-57TUfNFd.mjs.map → list-Pf5aAoaN.mjs.map} +1 -1
- package/dist/{list-BHvURTWd.cjs → list-fG4zo8zz.cjs} +2 -2
- package/dist/{list-BHvURTWd.cjs.map → list-fG4zo8zz.cjs.map} +1 -1
- package/dist/{list-DrZYlidZ.mjs → list-r2UPz1zW.mjs} +2 -2
- package/dist/{list-DrZYlidZ.mjs.map → list-r2UPz1zW.mjs.map} +1 -1
- package/dist/{login-FE_dbWMo.mjs → login-Dq2L3bI7.mjs} +2 -2
- package/dist/{login-FE_dbWMo.mjs.map → login-Dq2L3bI7.mjs.map} +1 -1
- package/dist/{login-2XcHd4wn.cjs → login-M1IF2MdC.cjs} +2 -2
- package/dist/{login-2XcHd4wn.cjs.map → login-M1IF2MdC.cjs.map} +1 -1
- package/dist/{logout-DC5TMJ5_.cjs → logout-BCSfFgPz.cjs} +2 -2
- package/dist/{logout-DC5TMJ5_.cjs.map → logout-BCSfFgPz.cjs.map} +1 -1
- package/dist/{logout-BDbWrGBm.mjs → logout-DFzQCQKe.mjs} +2 -2
- package/dist/{logout-BDbWrGBm.mjs.map → logout-DFzQCQKe.mjs.map} +1 -1
- package/dist/management-C1p-Hm2Z.cjs +19 -0
- package/dist/{management-BGYcZB4c.cjs.map → management-C1p-Hm2Z.cjs.map} +1 -1
- package/dist/{management-DDACMgbU.mjs → management-h4yE09a6.mjs} +5 -5
- package/dist/{management-DDACMgbU.mjs.map → management-h4yE09a6.mjs.map} +1 -1
- package/dist/object-CZDLoc9L.cjs +20 -0
- package/dist/{object-DVqidsEc.cjs.map → object-CZDLoc9L.cjs.map} +1 -1
- package/dist/object-CqMsEkh9.mjs +20 -0
- package/dist/{object-qdBdEghr.mjs.map → object-CqMsEkh9.mjs.map} +1 -1
- package/dist/{org-CPhTRTks.mjs → org-Co-rjfr-.mjs} +2 -2
- package/dist/{org-CPhTRTks.mjs.map → org-Co-rjfr-.mjs.map} +1 -1
- package/dist/{org-C4cVovOM.cjs → org-Drj3VqIm.cjs} +2 -2
- package/dist/{org-C4cVovOM.cjs.map → org-Drj3VqIm.cjs.map} +1 -1
- package/dist/{org-context-Bewx2NEW.cjs → org-context-DKFnPH_o.cjs} +2 -2
- package/dist/{org-context-Bewx2NEW.cjs.map → org-context-DKFnPH_o.cjs.map} +1 -1
- package/dist/{org-context-D0dwWC2M.mjs → org-context-Df5McOiK.mjs} +2 -2
- package/dist/{org-context-D0dwWC2M.mjs.map → org-context-Df5McOiK.mjs.map} +1 -1
- package/dist/project-C7qWFjMV.mjs +20 -0
- package/dist/{project-CaXD3QBs.mjs.map → project-C7qWFjMV.mjs.map} +1 -1
- package/dist/project-Dm7nr5NV.cjs +20 -0
- package/dist/{project-BX7zvWB1.cjs.map → project-Dm7nr5NV.cjs.map} +1 -1
- package/dist/project-user-D9h_QBc0.mjs +20 -0
- package/dist/{project-user-Cp7i6orv.mjs.map → project-user-D9h_QBc0.mjs.map} +1 -1
- package/dist/project-user-wLFnHFwB.cjs +20 -0
- package/dist/{project-user-Dm0qR-sh.cjs.map → project-user-wLFnHFwB.cjs.map} +1 -1
- package/dist/prompt-C-XNDSNE.cjs +42 -0
- package/dist/prompt-C-XNDSNE.cjs.map +1 -0
- package/dist/prompt-Dr2Rkxun.mjs +25 -0
- package/dist/prompt-Dr2Rkxun.mjs.map +1 -0
- package/dist/{push-D7co0keA.mjs → push-54rmb0T0.mjs} +3 -2
- package/dist/{push-D7co0keA.mjs.map → push-54rmb0T0.mjs.map} +1 -1
- package/dist/{push-0u6PDz4E.cjs → push-9fPpd4U8.cjs} +4 -3
- package/dist/{push-0u6PDz4E.cjs.map → push-9fPpd4U8.cjs.map} +1 -1
- package/dist/{run-codegen-DgaFaIQ1.mjs → run-codegen-DjnV60bE.mjs} +3 -3
- package/dist/{run-codegen-DgaFaIQ1.mjs.map → run-codegen-DjnV60bE.mjs.map} +1 -1
- package/dist/{run-codegen-Ceeosw5x.cjs → run-codegen-mclysZuT.cjs} +3 -3
- package/dist/{run-codegen-Ceeosw5x.cjs.map → run-codegen-mclysZuT.cjs.map} +1 -1
- package/dist/{run-with-context-CVhmzAFZ.mjs → run-with-context-B4DyI8Wo.mjs} +6 -26
- package/dist/run-with-context-B4DyI8Wo.mjs.map +1 -0
- package/dist/{run-with-context-DJNnEigg.cjs → run-with-context-D8pSrqD_.cjs} +7 -39
- package/dist/run-with-context-D8pSrqD_.cjs.map +1 -0
- package/dist/{schema-exG250MU.mjs → schema-BL6SlLtH.mjs} +5 -5
- package/dist/{schema-exG250MU.mjs.map → schema-BL6SlLtH.mjs.map} +1 -1
- package/dist/schema-CNSTXsVa.cjs +20 -0
- package/dist/{schema-B3iRqvYK.cjs.map → schema-CNSTXsVa.cjs.map} +1 -1
- package/dist/{status-Dq_NJE71.cjs → status-CqPJTxeK.cjs} +2 -2
- package/dist/{status-Dq_NJE71.cjs.map → status-CqPJTxeK.cjs.map} +1 -1
- package/dist/{status-fWqXzV0P.mjs → status-D7nOW3R3.mjs} +2 -2
- package/dist/{status-fWqXzV0P.mjs.map → status-D7nOW3R3.mjs.map} +1 -1
- package/dist/{token-store--9GYVL7N.cjs → token-store-BgWGhqq0.cjs} +3 -3
- package/dist/{token-store--9GYVL7N.cjs.map → token-store-BgWGhqq0.cjs.map} +1 -1
- package/dist/{token-store-reCGF86F.mjs → token-store-C2r7cFA-.mjs} +2 -2
- package/dist/{token-store-reCGF86F.mjs.map → token-store-C2r7cFA-.mjs.map} +1 -1
- package/dist/{update-B4lv4dAz.mjs → update-8-sHFvNB.mjs} +2 -2
- package/dist/{update-B4lv4dAz.mjs.map → update-8-sHFvNB.mjs.map} +1 -1
- package/dist/{update-Dyo4vuZs.mjs → update-B5hKKw0K.mjs} +3 -3
- package/dist/{update-Dyo4vuZs.mjs.map → update-B5hKKw0K.mjs.map} +1 -1
- package/dist/{update-Do9HHWzs.cjs → update-BVaqURWE.cjs} +2 -2
- package/dist/{update-Do9HHWzs.cjs.map → update-BVaqURWE.cjs.map} +1 -1
- package/dist/{update-DRnN1kiu.cjs → update-BlUwNhLA.cjs} +2 -2
- package/dist/{update-DRnN1kiu.cjs.map → update-BlUwNhLA.cjs.map} +1 -1
- package/dist/{update-Cx_2GkQj.cjs → update-BqhLwuP7.cjs} +2 -2
- package/dist/{update-Cx_2GkQj.cjs.map → update-BqhLwuP7.cjs.map} +1 -1
- package/dist/{update-mEmULIau.mjs → update-DaYjh5VN.mjs} +2 -2
- package/dist/{update-mEmULIau.mjs.map → update-DaYjh5VN.mjs.map} +1 -1
- package/dist/{update-CJgEmSWJ.cjs → update-DcTzR54Z.cjs} +3 -3
- package/dist/{update-CJgEmSWJ.cjs.map → update-DcTzR54Z.cjs.map} +1 -1
- package/dist/{update-CIH6sSVk.cjs → update-Dne7g_0s.cjs} +2 -2
- package/dist/{update-CIH6sSVk.cjs.map → update-Dne7g_0s.cjs.map} +1 -1
- package/dist/{update-CQ4n4Xuf.mjs → update-Dy1BOnTB.mjs} +2 -2
- package/dist/{update-CQ4n4Xuf.mjs.map → update-Dy1BOnTB.mjs.map} +1 -1
- package/dist/{update-rzij1b_o.mjs → update-slz_X0mG.mjs} +2 -2
- package/dist/{update-rzij1b_o.mjs.map → update-slz_X0mG.mjs.map} +1 -1
- package/dist/{upload-DGgJ1TQk.mjs → upload-CDtzV9Wx.mjs} +3 -3
- package/dist/{upload-DGgJ1TQk.mjs.map → upload-CDtzV9Wx.mjs.map} +1 -1
- package/dist/{upload-C43ZXxyb.cjs → upload-DIln1QDA.cjs} +3 -3
- package/dist/{upload-C43ZXxyb.cjs.map → upload-DIln1QDA.cjs.map} +1 -1
- package/dist/webhook-BT3cHrq5.mjs +20 -0
- package/dist/{webhook-CpZ1-Ho5.mjs.map → webhook-BT3cHrq5.mjs.map} +1 -1
- package/dist/webhook-CQeuAqec.cjs +20 -0
- package/dist/{webhook-CbL4QaR5.cjs.map → webhook-CQeuAqec.cjs.map} +1 -1
- package/package.json +6 -5
- package/dist/auth-CNbONZuf.cjs +0 -18
- package/dist/cms-BJnovGYT.mjs.map +0 -1
- package/dist/cms-Cnx-lDGu.cjs.map +0 -1
- package/dist/consumer-OF6Z_eTP.cjs.map +0 -1
- package/dist/consumer-l-8wUK8E.cjs +0 -18
- package/dist/consumer-pU2HyiyA.mjs.map +0 -1
- package/dist/content-BOb6NC8M.mjs +0 -20
- package/dist/content-DMjSwor1.cjs +0 -20
- package/dist/management-BGYcZB4c.cjs +0 -19
- package/dist/object-DVqidsEc.cjs +0 -20
- package/dist/object-qdBdEghr.mjs +0 -20
- package/dist/project-BX7zvWB1.cjs +0 -20
- package/dist/project-CaXD3QBs.mjs +0 -20
- package/dist/project-user-Cp7i6orv.mjs +0 -20
- package/dist/project-user-Dm0qR-sh.cjs +0 -20
- package/dist/run-with-context-CVhmzAFZ.mjs.map +0 -1
- package/dist/run-with-context-DJNnEigg.cjs.map +0 -1
- package/dist/schema-B3iRqvYK.cjs +0 -20
- package/dist/webhook-CbL4QaR5.cjs +0 -20
- package/dist/webhook-CpZ1-Ho5.mjs +0 -20
|
@@ -0,0 +1,456 @@
|
|
|
1
|
+
<!-- source: docs/src/app/features/schema/authority/page.mdx -->
|
|
2
|
+
|
|
3
|
+
# 権限
|
|
4
|
+
|
|
5
|
+
このドキュメントでは、スキーマを通してCMSユーザー(以下、ユーザー)のアクセス権限を定義する方法を説明します。
|
|
6
|
+
|
|
7
|
+
## コンセプト
|
|
8
|
+
|
|
9
|
+
ロール、グループ、ルールの3つの概念を組み合わせることで、柔軟なアクセス制御を実現します。
|
|
10
|
+
|
|
11
|
+
### ロールとグループ
|
|
12
|
+
|
|
13
|
+
権限は **ロール** と **グループ** に紐づきます。ユーザーをロールやグループに所属させることで権限を付与します。
|
|
14
|
+
|
|
15
|
+
例えば、以下のようにロールと権限を紐付けます。
|
|
16
|
+
|
|
17
|
+
- **管理者**: すべてのリソースに対して読み取りと書き込みができる
|
|
18
|
+
- **編集者**: コンテンツのリソースに対して読み取りと書き込みができる
|
|
19
|
+
- **閲覧者**: コンテンツのリソースに対して読み取りができる
|
|
20
|
+
|
|
21
|
+
### グループとマルチテナント
|
|
22
|
+
|
|
23
|
+
ユーザーとデータをグループに紐付けることで、マルチテナントに適したアクセス制御を実現します。
|
|
24
|
+
|
|
25
|
+
異なるグループに属するデータは論理的に分離されます。同じグループに所属するユーザーでなければアクセスできません。
|
|
26
|
+
|
|
27
|
+
例えば、**店舗A**、**店舗B** の2つのグループがあるとします。
|
|
28
|
+
このとき店舗Aに属するデータは、店舗Aに属するユーザーのみアクセスでき、店舗Bに属するユーザーはアクセスできません。全店舗を管理するユーザーには、グループを横断してアクセスできる権限を設定できます。
|
|
29
|
+
|
|
30
|
+
### ルール
|
|
31
|
+
|
|
32
|
+
ルールはどのリソースに対して、どのような操作ができるかを定義します。
|
|
33
|
+
|
|
34
|
+
リソースとは以下を指します。
|
|
35
|
+
|
|
36
|
+
- **テーブル**
|
|
37
|
+
- **バケット**
|
|
38
|
+
|
|
39
|
+
それぞれのリソースに対して、以下の操作を定義できます。
|
|
40
|
+
|
|
41
|
+
- **読み取り権限**: リソースの読み取りができるかどうか
|
|
42
|
+
- **書き込み権限**: リソースの書き込みができるかどうか
|
|
43
|
+
|
|
44
|
+
権限は **許可** と **拒否** の2つの方法で制御できます。
|
|
45
|
+
|
|
46
|
+
## 権限の定義
|
|
47
|
+
|
|
48
|
+
権限を定義する際には、`authorities` プロパティを使用します。
|
|
49
|
+
|
|
50
|
+
以下の例では、`editor` ロールに対して、`blog` テーブルと `photo` バケットに対する読み書きを許可しています。また、ユーザー管理の操作を拒否しています。
|
|
51
|
+
|
|
52
|
+
```ts copy filename="orizm.config.ts" showLineNumbers
|
|
53
|
+
import { defineConfig } from "@orizm/cli/config";
|
|
54
|
+
|
|
55
|
+
export default defineConfig({
|
|
56
|
+
authorities: [
|
|
57
|
+
{
|
|
58
|
+
match: { role: "editor" },
|
|
59
|
+
allowTables: ["blog"],
|
|
60
|
+
allowBuckets: ["photo"],
|
|
61
|
+
denyUserManagement: true,
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
});
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### match
|
|
68
|
+
|
|
69
|
+
`match` プロパティで、グループとロールに対して紐付けます。
|
|
70
|
+
|
|
71
|
+
グループまたはロールのどちらかのみ指定することも、両方を指定することもできます。指定がない場合は、全てのユーザーに対してルールが適用されます。
|
|
72
|
+
|
|
73
|
+
```ts copy
|
|
74
|
+
{
|
|
75
|
+
match: {
|
|
76
|
+
group: "storeA",
|
|
77
|
+
role: "editor",
|
|
78
|
+
},
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### allow / deny
|
|
83
|
+
|
|
84
|
+
`allow(許可)` と `deny(拒否)` プロパティで権限を定義します。使用できるルールは [ルール一覧](#ルール一覧) を参照してください。
|
|
85
|
+
|
|
86
|
+
```ts copy
|
|
87
|
+
{
|
|
88
|
+
allowTables: ["blog"],
|
|
89
|
+
allowBuckets: ["photo"],
|
|
90
|
+
denyUserManagement: true,
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### どのように適用されるか
|
|
95
|
+
|
|
96
|
+
適用される権限は以下のように決まります。
|
|
97
|
+
|
|
98
|
+
#### 同一オブジェクト内では `deny` が優先される
|
|
99
|
+
|
|
100
|
+
同一オブジェクト内で `allow` と `deny` が両方定義されている場合、`deny` が優先されます。
|
|
101
|
+
|
|
102
|
+
例えば以下の例では、最終的に `blog` テーブルへのアクセスは **拒否** されます。
|
|
103
|
+
|
|
104
|
+
```ts copy
|
|
105
|
+
[
|
|
106
|
+
{
|
|
107
|
+
allowTables: ["blog"],
|
|
108
|
+
denyTables: ["blog"],
|
|
109
|
+
},
|
|
110
|
+
];
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
#### 同一オブジェクト内では詳細度の高いルールが優先される
|
|
114
|
+
|
|
115
|
+
テーブルに関するルールを例に挙げると、以下の通り上から順に優先されます。
|
|
116
|
+
|
|
117
|
+
1. `denyReadTables` / `denyWriteTables`
|
|
118
|
+
1. `allowReadTables` / `allowWriteTables`
|
|
119
|
+
1. `denyTables`
|
|
120
|
+
1. `allowTables`
|
|
121
|
+
1. `denyAllTables`
|
|
122
|
+
1. `allowAllTables`
|
|
123
|
+
|
|
124
|
+
以下の例では、最終的に `blog` テーブルへの **読み取り** のみが **許可** されます。
|
|
125
|
+
|
|
126
|
+
```ts copy
|
|
127
|
+
[
|
|
128
|
+
{
|
|
129
|
+
allowReadTables: ["blog"],
|
|
130
|
+
denyWriteTables: ["blog"],
|
|
131
|
+
allowTables: ["blog"],
|
|
132
|
+
denyAllTables: true,
|
|
133
|
+
},
|
|
134
|
+
];
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
#### `authorities` 配列の後で定義されたルールが優先される
|
|
138
|
+
|
|
139
|
+
authorities プロパティの定義は先頭から順に評価されます。後で定義されたルールにマッチした場合、それまでのルールを上書きします。
|
|
140
|
+
|
|
141
|
+
例えば以下の例では、最終的に `blog` テーブルへの読み書きは **許可** されます。
|
|
142
|
+
|
|
143
|
+
```ts copy
|
|
144
|
+
[
|
|
145
|
+
{
|
|
146
|
+
denyTables: ["blog"],
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
allowTables: ["blog"],
|
|
150
|
+
},
|
|
151
|
+
];
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## 権限定義の例
|
|
155
|
+
|
|
156
|
+
### 全ユーザーに全権限を付与
|
|
157
|
+
|
|
158
|
+
```ts copy
|
|
159
|
+
[
|
|
160
|
+
{
|
|
161
|
+
allowAllTables: true,
|
|
162
|
+
allowAllBuckets: true,
|
|
163
|
+
allowUserManagement: true,
|
|
164
|
+
allowAllGroups: true,
|
|
165
|
+
},
|
|
166
|
+
];
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### 読み取りと書き込みのロールを分離
|
|
170
|
+
|
|
171
|
+
```ts copy
|
|
172
|
+
[
|
|
173
|
+
{
|
|
174
|
+
// ロールなしのユーザーはアクセス拒否
|
|
175
|
+
denyAllTables: true,
|
|
176
|
+
denyAllBuckets: true,
|
|
177
|
+
denyUserManagement: true,
|
|
178
|
+
allowAllGroups: true,
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
// 閲覧者ロールは読み込みのみ許可
|
|
182
|
+
match: { role: "viewer" },
|
|
183
|
+
allowReadTables: ["blog"],
|
|
184
|
+
allowReadBuckets: ["photo"],
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
// 編集者ロールは読み込みと書き込みを許可
|
|
188
|
+
match: { role: "editor" },
|
|
189
|
+
allowAllTables: true,
|
|
190
|
+
allowAllBuckets: true,
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
// 管理者ロールは全権限を許可
|
|
194
|
+
match: { role: "admin" },
|
|
195
|
+
allowAllTables: true,
|
|
196
|
+
allowAllBuckets: true,
|
|
197
|
+
allowUserManagement: true,
|
|
198
|
+
},
|
|
199
|
+
];
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### マルチテナント
|
|
203
|
+
|
|
204
|
+
```ts copy
|
|
205
|
+
[
|
|
206
|
+
{
|
|
207
|
+
// ロールなしのユーザーはアクセス拒否
|
|
208
|
+
denyAllTables: true,
|
|
209
|
+
denyAllBuckets: true,
|
|
210
|
+
denyUserManagement: true,
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
// 閲覧者ロール
|
|
214
|
+
// 所属するグループのブログコンテンツの読み込みのみ許可
|
|
215
|
+
match: { role: "viewer" },
|
|
216
|
+
allowReadTables: ["blog"],
|
|
217
|
+
allowReadBuckets: ["photo"],
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
// 編集者ロール
|
|
221
|
+
// 所属するグループのブログコンテンツの読み書きを許可
|
|
222
|
+
match: { role: "editor" },
|
|
223
|
+
allowTables: ["blog"],
|
|
224
|
+
allowBuckets: ["photo"],
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
// テナント管理者
|
|
228
|
+
// 所属するグループのブログコンテンツの読み書きと
|
|
229
|
+
// ユーザー管理を許可
|
|
230
|
+
match: { role: "manager" },
|
|
231
|
+
allowTables: ["blog"],
|
|
232
|
+
allowBuckets: ["photo"],
|
|
233
|
+
allowUserManagement: true,
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
// 全権限を持つ管理者
|
|
237
|
+
match: { group: "admin" },
|
|
238
|
+
allowAllTables: true,
|
|
239
|
+
allowAllBuckets: true,
|
|
240
|
+
allowUserManagement: true,
|
|
241
|
+
allowAllGroups: true,
|
|
242
|
+
},
|
|
243
|
+
];
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## ルール一覧
|
|
247
|
+
|
|
248
|
+
- [allowAllTables](#allowAllTables)
|
|
249
|
+
- [denyAllTables](#denyAllTables)
|
|
250
|
+
- [allowTables](#allowTables)
|
|
251
|
+
- [denyTables](#denyTables)
|
|
252
|
+
- [allowReadTables](#allowReadTables)
|
|
253
|
+
- [denyReadTables](#denyReadTables)
|
|
254
|
+
- [allowWriteTables](#allowWriteTables)
|
|
255
|
+
- [denyWriteTables](#denyWriteTables)
|
|
256
|
+
- [allowAllBuckets](#allowAllBuckets)
|
|
257
|
+
- [denyAllBuckets](#denyAllBuckets)
|
|
258
|
+
- [allowBuckets](#allowBuckets)
|
|
259
|
+
- [denyBuckets](#denyBuckets)
|
|
260
|
+
- [allowReadBuckets](#allowReadBuckets)
|
|
261
|
+
- [denyReadBuckets](#denyReadBuckets)
|
|
262
|
+
- [allowWriteBuckets](#allowWriteBuckets)
|
|
263
|
+
- [denyWriteBuckets](#denyWriteBuckets)
|
|
264
|
+
- [allowUserManagement](#allowUserManagement)
|
|
265
|
+
- [denyUserManagement](#denyUserManagement)
|
|
266
|
+
- [allowAllGroups](#allowAllGroups)
|
|
267
|
+
|
|
268
|
+
### allowAllTables
|
|
269
|
+
|
|
270
|
+
すべてのテーブルに対して **読み取りと書き込み** を **許可** します。
|
|
271
|
+
|
|
272
|
+
```ts copy
|
|
273
|
+
{
|
|
274
|
+
allowAllTables: true,
|
|
275
|
+
}
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### denyAllTables
|
|
279
|
+
|
|
280
|
+
すべてのテーブルに対して **読み取りと書き込み** を **拒否** します。
|
|
281
|
+
|
|
282
|
+
```ts copy
|
|
283
|
+
{
|
|
284
|
+
denyAllTables: true,
|
|
285
|
+
}
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### allowTables
|
|
289
|
+
|
|
290
|
+
指定したテーブルに対して **読み取りと書き込み** を **許可** します。
|
|
291
|
+
|
|
292
|
+
```ts copy
|
|
293
|
+
{
|
|
294
|
+
allowTables: ["blog", "category", "tag"],
|
|
295
|
+
}
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### denyTables
|
|
299
|
+
|
|
300
|
+
指定したテーブルに対して **読み取りと書き込み** を **拒否** します。
|
|
301
|
+
|
|
302
|
+
```ts copy
|
|
303
|
+
{
|
|
304
|
+
denyTables: ["blog", "category", "tag"],
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### allowReadTables
|
|
309
|
+
|
|
310
|
+
指定したテーブルの **読み取り** を **許可** します。
|
|
311
|
+
|
|
312
|
+
```ts copy
|
|
313
|
+
{
|
|
314
|
+
allowReadTables: ["blog", "category", "tag"],
|
|
315
|
+
}
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### denyReadTables
|
|
319
|
+
|
|
320
|
+
指定したテーブルの **読み取り** を **拒否** します。
|
|
321
|
+
|
|
322
|
+
```ts copy
|
|
323
|
+
{
|
|
324
|
+
denyReadTables: ["blog", "category", "tag"],
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### allowWriteTables
|
|
329
|
+
|
|
330
|
+
指定したテーブルの **書き込み** を **許可** します。
|
|
331
|
+
|
|
332
|
+
```ts copy
|
|
333
|
+
{
|
|
334
|
+
allowWriteTables: ["blog", "category", "tag"],
|
|
335
|
+
}
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
### denyWriteTables
|
|
339
|
+
|
|
340
|
+
指定したテーブルの **書き込み** を **拒否** します。
|
|
341
|
+
|
|
342
|
+
```ts copy
|
|
343
|
+
{
|
|
344
|
+
denyWriteTables: ["blog", "category", "tag"],
|
|
345
|
+
}
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### allowAllBuckets
|
|
349
|
+
|
|
350
|
+
すべてのバケットに対して **読み取りと書き込み** を **許可** します。
|
|
351
|
+
|
|
352
|
+
```ts copy
|
|
353
|
+
{
|
|
354
|
+
allowAllBuckets: true,
|
|
355
|
+
}
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
### denyAllBuckets
|
|
359
|
+
|
|
360
|
+
すべてのバケットに対して **読み取りと書き込み** を **拒否** します。
|
|
361
|
+
|
|
362
|
+
```ts copy
|
|
363
|
+
{
|
|
364
|
+
denyAllBuckets: true,
|
|
365
|
+
}
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### allowBuckets
|
|
369
|
+
|
|
370
|
+
指定したバケットに対して **読み取りと書き込み** を **許可** します。
|
|
371
|
+
|
|
372
|
+
```ts copy
|
|
373
|
+
{
|
|
374
|
+
allowBuckets: ["photo", "video", "audio"],
|
|
375
|
+
}
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
### denyBuckets
|
|
379
|
+
|
|
380
|
+
指定したバケットに対して **読み取りと書き込み** を **拒否** します。
|
|
381
|
+
|
|
382
|
+
```ts copy
|
|
383
|
+
{
|
|
384
|
+
denyBuckets: ["photo", "video", "audio"],
|
|
385
|
+
}
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
### allowReadBuckets
|
|
389
|
+
|
|
390
|
+
指定したバケットの **読み取り** を **許可** します。
|
|
391
|
+
|
|
392
|
+
```ts copy
|
|
393
|
+
{
|
|
394
|
+
allowReadBuckets: ["photo", "video", "audio"],
|
|
395
|
+
}
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
### denyReadBuckets
|
|
399
|
+
|
|
400
|
+
指定したバケットの **読み取り** を **拒否** します。
|
|
401
|
+
|
|
402
|
+
```ts copy
|
|
403
|
+
{
|
|
404
|
+
denyReadBuckets: ["photo", "video", "audio"],
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### allowWriteBuckets
|
|
409
|
+
|
|
410
|
+
指定したバケットの **書き込み** を **許可** します。
|
|
411
|
+
|
|
412
|
+
```ts copy
|
|
413
|
+
{
|
|
414
|
+
allowWriteBuckets: ["photo", "video", "audio"],
|
|
415
|
+
}
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### denyWriteBuckets
|
|
419
|
+
|
|
420
|
+
指定したバケットの **書き込み** を **拒否** します。
|
|
421
|
+
|
|
422
|
+
```ts copy
|
|
423
|
+
{
|
|
424
|
+
denyWriteBuckets: ["photo", "video", "audio"],
|
|
425
|
+
}
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
### allowUserManagement
|
|
429
|
+
|
|
430
|
+
ユーザー管理の操作を **許可** します。
|
|
431
|
+
|
|
432
|
+
```ts copy
|
|
433
|
+
{
|
|
434
|
+
allowUserManagement: true,
|
|
435
|
+
}
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
### denyUserManagement
|
|
439
|
+
|
|
440
|
+
ユーザー管理の操作を **拒否** します。
|
|
441
|
+
|
|
442
|
+
```ts copy
|
|
443
|
+
{
|
|
444
|
+
denyUserManagement: true,
|
|
445
|
+
}
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
### allowAllGroups
|
|
449
|
+
|
|
450
|
+
すべてのグループのリソースに対してアクセスを許可します。
|
|
451
|
+
|
|
452
|
+
```ts copy
|
|
453
|
+
{
|
|
454
|
+
allowAllGroups: true,
|
|
455
|
+
}
|
|
456
|
+
```
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
<!-- source: docs/src/app/features/schema/bucket/page.mdx -->
|
|
2
|
+
|
|
3
|
+
# バケット
|
|
4
|
+
|
|
5
|
+
バケットは画像、動画、PDFなどのファイルを保存・配信するためのファイルストレージです。
|
|
6
|
+
|
|
7
|
+
例えば、Webサイトで使用する画像をバケットに保存し、配信することができます。バケットにアップロードすると、アクセスするためのURLが発行されます。WebサイトではこのURLを `<img>` タグの `src` 属性に指定することで画像を表示できます。
|
|
8
|
+
|
|
9
|
+
このドキュメントでは、バケット機能の概要とスキーマを通してバケットを定義する方法を説明します。
|
|
10
|
+
|
|
11
|
+
## バケットの定義
|
|
12
|
+
|
|
13
|
+
バケットを定義するには `buckets` プロパティを使用します。
|
|
14
|
+
|
|
15
|
+
以下の例では、誰でもアクセスできる `publicFiles` バケットと、アクセスに認証が必要な `privateFiles` バケットを定義しています。
|
|
16
|
+
|
|
17
|
+
```ts copy filename="orizm.config.ts" showLineNumbers
|
|
18
|
+
import { defineConfig } from "@orizm/cli/config";
|
|
19
|
+
|
|
20
|
+
export default defineConfig({
|
|
21
|
+
buckets: {
|
|
22
|
+
publicFiles: { accessControl: "public" },
|
|
23
|
+
privateFiles: { accessControl: "private" },
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### accessControl
|
|
29
|
+
|
|
30
|
+
`accessControl` プロパティでバケットのアクセス制御を設定できます。指定しない場合は `public` になります。
|
|
31
|
+
|
|
32
|
+
- **public**: 誰でもアクセスできる(公開バケット)
|
|
33
|
+
- **private**: [署名付きURL](#署名付きurl) を知っているユーザーのみアクセスできる(非公開バケット)
|
|
34
|
+
|
|
35
|
+
## 公開バケットへのアクセス
|
|
36
|
+
|
|
37
|
+
アップロードされたファイルごとに、アクセスするためのURLが生成されます。
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
https://app.orizm.com/buckets/{プロジェクト名}/{バケット名}/{オブジェクトキー}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
このURLを取得するには、CMS SDKでバケットに対して `list()` または `get()` を使用してファイルのメタデータを取得します。
|
|
44
|
+
|
|
45
|
+
```ts copy
|
|
46
|
+
// filesバケットのファイル一覧を取得
|
|
47
|
+
const { contents } = await cmsClient.buckets.files.list();
|
|
48
|
+
|
|
49
|
+
console.log(contents);
|
|
50
|
+
// [
|
|
51
|
+
// {
|
|
52
|
+
// id: 1,
|
|
53
|
+
// key: 'zl9XQ3KeKX89Ttf3.png',
|
|
54
|
+
// size: 25667,
|
|
55
|
+
// type: 'image/png',
|
|
56
|
+
// width: 1024,
|
|
57
|
+
// height: 672,
|
|
58
|
+
// group: null,
|
|
59
|
+
// originalFilename: 'image.png',
|
|
60
|
+
// bucketName: 'files',
|
|
61
|
+
// projectName: 'demo-project',
|
|
62
|
+
// publicUrl: 'https://app.orizm.com/buckets/demo-project/files/zl9XQ3KeKX89Ttf3.png',
|
|
63
|
+
// protectedUrl: 'https://app.orizm.com/buckets-protected/demo-project/files/zl9XQ3KeKX89Ttf3.png?token={トークン}',
|
|
64
|
+
// createdAt: '2025-01-01T00:00:00.000Z',
|
|
65
|
+
// updatedAt: '2025-01-01T00:00:00.000Z'
|
|
66
|
+
// }
|
|
67
|
+
// ]
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
レスポンスされた `publicUrl` プロパティにアクセス用のURLが含まれています。
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
https://app.orizm.com/buckets/demo-project/files/zl9XQ3KeKX89Ttf3.png
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 非公開バケットへのアクセス
|
|
77
|
+
|
|
78
|
+
非公開バケットへアクセスするためのURLを取得するには、CMS SDKでバケットに対して `list()` または `get()` を使用してファイルのメタデータを取得します。
|
|
79
|
+
|
|
80
|
+
```ts copy
|
|
81
|
+
// systemFilesバケットのファイル一覧を取得
|
|
82
|
+
const { contents } = await cmsClient.buckets.systemFiles.list();
|
|
83
|
+
|
|
84
|
+
console.log(contents);
|
|
85
|
+
// [
|
|
86
|
+
// {
|
|
87
|
+
// id: 1,
|
|
88
|
+
// key: 'zl9XQ3KeKX89Ttf3.png',
|
|
89
|
+
// size: 25667,
|
|
90
|
+
// type: 'image/png',
|
|
91
|
+
// width: 1024,
|
|
92
|
+
// height: 672,
|
|
93
|
+
// group: null,
|
|
94
|
+
// originalFilename: 'image.png',
|
|
95
|
+
// bucketName: 'systemFiles',
|
|
96
|
+
// projectName: 'demo-project',
|
|
97
|
+
// publicUrl: 'https://app.orizm.com/buckets/demo-project/systemFiles/zl9XQ3KeKX89Ttf3.png',
|
|
98
|
+
// protectedUrl: 'https://app.orizm.com/buckets-protected/demo-project/systemFiles/zl9XQ3KeKX89Ttf3.png?token={トークン}',
|
|
99
|
+
// createdAt: '2025-01-01T00:00:00.000Z',
|
|
100
|
+
// updatedAt: '2025-01-01T00:00:00.000Z'
|
|
101
|
+
// }
|
|
102
|
+
// ]
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
レスポンスされた `protectedUrl` プロパティにアクセス用のURLが含まれています。
|
|
106
|
+
|
|
107
|
+
このURLは署名付きURLと呼ばれ、アクセスするためのJWTトークンが含まれています。このトークンは `最大15分間有効` です。トークンの期限が切れた場合は、再度 `list()` または `get()` でデータを取得することで新しいURLを取得できます。
|
|
108
|
+
|
|
109
|
+
```
|
|
110
|
+
https://app.orizm.com/buckets-protected/demo-project/systemFiles/zl9XQ3KeKX89Ttf3.png?token={トークン}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
> [!WARNING]
|
|
114
|
+
> `publicUrl`
|
|
115
|
+
> プロパティのURLでアクセスした場合は、認証エラーとしてステータスコード `401`
|
|
116
|
+
> が返されます。
|
|
117
|
+
|
|
118
|
+
## ファイルのアップロード
|
|
119
|
+
|
|
120
|
+
ファイルをアップロードするにはCMS SDKの `upload()` メソッドを使用します。
|
|
121
|
+
|
|
122
|
+
```ts copy
|
|
123
|
+
// 引数 file はFile型オブジェクト
|
|
124
|
+
await cmsClient.buckets.files.upload(file);
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
## ファイルの削除
|
|
128
|
+
|
|
129
|
+
ファイルを削除するにはCMS SDKの `delete()` メソッドを使用します。
|
|
130
|
+
|
|
131
|
+
```ts copy
|
|
132
|
+
const fileKey = "zl9XQ3KeKX89Ttf3.png";
|
|
133
|
+
await cmsClient.buckets.files.delete(fileKey);
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## storage型カラム
|
|
137
|
+
|
|
138
|
+
データベースで使用できる [storage型カラム](./database.md#storage) もファイルストレージとして類似した機能を持っています。
|
|
139
|
+
|
|
140
|
+
storage型カラムとバケットはファイルを扱う点で似ていますが異なる点があります。バケットはシンプルなファイル置き場であるのに対し、storage型カラムはファイルをレコードに紐づけて扱えます。例えば、ブログ記事にサムネイル画像を設定する場合、storage型カラムを使用して画像ファイルをレコードに紐づけることができます。
|
|
141
|
+
|
|
142
|
+
レコードが削除された場合、ファイルは30日後に自動で削除されます。削除前であれば、[編集履歴の管理機能](../history.md) を利用して復元することも可能です。
|