Skip to content

Commit 5809930

Browse files
committed
chore: Implement access control for collections
1 parent 9167015 commit 5809930

File tree

8 files changed

+40
-0
lines changed

8 files changed

+40
-0
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { ROLE_ADMIN, ROLE_EDITOR } from "./roles";
2+
3+
const isAdminOrEditor = ({ req: { user } }) => {
4+
// Return true or false based on if the user has an admin or editor role
5+
return (
6+
Boolean(user?.roles?.includes(ROLE_ADMIN)) ||
7+
Boolean(user?.roles?.includes(ROLE_EDITOR))
8+
);
9+
};
10+
11+
export default isAdminOrEditor;

apps/civicsignalblog/src/payload/collections/Main/MediaData.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { slateEditor } from "@payloadcms/richtext-slate";
22

33
import canRead from "#civicsignalblog/payload/access/applications/main";
4+
import isAdminOrEditor from "#civicsignalblog/payload/access/isAdminOrEditor";
45
import document from "#civicsignalblog/payload/fields/document";
56
import image from "#civicsignalblog/payload/fields/image";
67
import richText from "#civicsignalblog/payload/fields/richText";
@@ -9,6 +10,9 @@ const MediaData = {
910
slug: "media-data",
1011
access: {
1112
read: canRead,
13+
update: isAdminOrEditor,
14+
create: isAdminOrEditor,
15+
delete: isAdminOrEditor,
1216
},
1317
admin: {
1418
defaultColumns: ["title", "updatedAt"],

apps/civicsignalblog/src/payload/collections/Main/Pages.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import canRead from "#civicsignalblog/payload/access/applications/main";
2+
import isAdminOrEditor from "#civicsignalblog/payload/access/isAdminOrEditor";
23
import PageHeader from "#civicsignalblog/payload/blocks/PageHeader";
34
import { MAIN } from "#civicsignalblog/payload/lib/data/common/applications";
45
import pages from "#civicsignalblog/payload/utils/createPagesCollection";
@@ -11,6 +12,9 @@ const Pages = pages({
1112
blocks: [PageHeader],
1213
access: {
1314
read: canRead,
15+
update: isAdminOrEditor,
16+
create: isAdminOrEditor,
17+
delete: isAdminOrEditor,
1418
},
1519
});
1620

apps/civicsignalblog/src/payload/collections/Research/Authors.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
11
import canRead from "#civicsignalblog/payload/access/applications/research";
2+
import isAdminOrEditor from "#civicsignalblog/payload/access/isAdminOrEditor";
23

34
const Authors = {
45
slug: "author",
56
access: {
67
read: canRead,
8+
update: isAdminOrEditor,
9+
create: isAdminOrEditor,
10+
delete: isAdminOrEditor,
711
},
812
admin: {
913
defaultColumns: ["fullName", "updatedAt"],

apps/civicsignalblog/src/payload/collections/Research/Media.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import isAdminOrEditor from "#civicsignalblog/payload/access/isAdminOrEditor";
2+
13
const Media = {
24
slug: "media",
35
admin: {
@@ -8,6 +10,9 @@ const Media = {
810
},
911
access: {
1012
read: () => true, // Everyone can read Media
13+
update: isAdminOrEditor,
14+
create: isAdminOrEditor,
15+
delete: isAdminOrEditor,
1116
},
1217
upload: {
1318
staticURL: "/media",

apps/civicsignalblog/src/payload/collections/Research/Pages.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import canRead from "#civicsignalblog/payload/access/applications/research";
2+
import isAdminOrEditor from "#civicsignalblog/payload/access/isAdminOrEditor";
23
import CustomPageHeader from "#civicsignalblog/payload/blocks/CustomPageHeader";
34
import Error from "#civicsignalblog/payload/blocks/Error";
45
import FeaturedStories from "#civicsignalblog/payload/blocks/FeaturedStories";
@@ -23,6 +24,9 @@ const Pages = pages({
2324
],
2425
access: {
2526
read: canRead,
27+
update: isAdminOrEditor,
28+
create: isAdminOrEditor,
29+
delete: isAdminOrEditor,
2630
},
2731
adminOptions: {
2832
description: "Research",

apps/civicsignalblog/src/payload/collections/Research/Posts.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import canRead from "#civicsignalblog/payload/access/applications/research";
2+
import isAdminOrEditor from "#civicsignalblog/payload/access/isAdminOrEditor";
23
import authors from "#civicsignalblog/payload/fields/authors";
34
import content from "#civicsignalblog/payload/fields/content";
45
import image from "#civicsignalblog/payload/fields/image";
@@ -19,6 +20,9 @@ const Posts = {
1920
},
2021
access: {
2122
read: canRead,
23+
update: isAdminOrEditor,
24+
create: isAdminOrEditor,
25+
delete: isAdminOrEditor,
2226
},
2327
admin: {
2428
defaultColumns: ["title", "authors", "publishedOn"],

apps/civicsignalblog/src/payload/collections/Research/Tags.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import canRead from "#civicsignalblog/payload/access/applications/research";
2+
import isAdminOrEditor from "#civicsignalblog/payload/access/isAdminOrEditor";
23
import slug from "#civicsignalblog/payload/fields/slug/index";
34

45
const Tags = {
@@ -11,6 +12,9 @@ const Tags = {
1112
},
1213
access: {
1314
read: canRead,
15+
update: isAdminOrEditor,
16+
create: isAdminOrEditor,
17+
delete: isAdminOrEditor,
1418
},
1519
fields: [
1620
{

0 commit comments

Comments
 (0)