Skip to content

Commit c74d91d

Browse files
authored
templates: ecommerce add missing access control on collections (#15744)
Adds some missing access control on various collections in the template to ensure only admin can do these updates.
1 parent 08226db commit c74d91d

7 files changed

Lines changed: 29 additions & 1 deletion

File tree

templates/ecommerce/src/app/(app)/next/seed/route.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import { seed } from '@/endpoints/seed'
33
import config from '@payload-config'
44
import { headers } from 'next/headers'
55

6+
import { checkRole } from '@/access/utilities'
7+
68
export const maxDuration = 300 // This function can run for a maximum of 300 seconds
79

810
export async function POST(): Promise<Response> {
@@ -12,7 +14,7 @@ export async function POST(): Promise<Response> {
1214
// Authenticate by passing request headers
1315
const { user } = await payload.auth({ headers: requestHeaders })
1416

15-
if (!user) {
17+
if (!user || !checkRole(['admin'], user)) {
1618
return new Response('Action forbidden.', { status: 403 })
1719
}
1820

templates/ecommerce/src/collections/Categories.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
import { slugField } from 'payload'
22
import type { CollectionConfig } from 'payload'
33

4+
import { adminOnly } from '@/access/adminOnly'
5+
46
export const Categories: CollectionConfig = {
57
slug: 'categories',
68
access: {
9+
create: adminOnly,
10+
delete: adminOnly,
711
read: () => true,
12+
update: adminOnly,
813
},
914
admin: {
1015
useAsTitle: 'title',

templates/ecommerce/src/collections/Media.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import {
88
import path from 'path'
99
import { fileURLToPath } from 'url'
1010

11+
import { adminOnly } from '@/access/adminOnly'
12+
1113
const filename = fileURLToPath(import.meta.url)
1214
const dirname = path.dirname(filename)
1315

@@ -17,7 +19,10 @@ export const Media: CollectionConfig = {
1719
},
1820
slug: 'media',
1921
access: {
22+
create: adminOnly,
23+
delete: adminOnly,
2024
read: () => true,
25+
update: adminOnly,
2126
},
2227
fields: [
2328
{

templates/ecommerce/src/collections/Users/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export const Users: CollectionConfig = {
1515
create: publicAccess,
1616
delete: adminOnly,
1717
read: adminOrSelf,
18+
unlock: adminOnly,
1819
update: adminOrSelf,
1920
},
2021
admin: {

templates/ecommerce/src/globals/Footer.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import type { GlobalConfig } from 'payload'
22

3+
import { adminOnly } from '@/access/adminOnly'
34
import { link } from '@/fields/link'
45

56
export const Footer: GlobalConfig = {
67
slug: 'footer',
78
access: {
89
read: () => true,
10+
update: adminOnly,
911
},
1012
fields: [
1113
{

templates/ecommerce/src/globals/Header.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import type { GlobalConfig } from 'payload'
22

3+
import { adminOnly } from '@/access/adminOnly'
34
import { link } from '@/fields/link'
45

56
export const Header: GlobalConfig = {
67
slug: 'header',
78
access: {
89
read: () => true,
10+
update: adminOnly,
911
},
1012
fields: [
1113
{

templates/ecommerce/src/plugins/index.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,22 @@ export const plugins: Plugin[] = [
3636
payment: false,
3737
},
3838
formSubmissionOverrides: {
39+
access: {
40+
delete: isAdmin,
41+
read: isAdmin,
42+
update: isAdmin,
43+
},
3944
admin: {
4045
group: 'Content',
4146
},
4247
},
4348
formOverrides: {
49+
access: {
50+
delete: isAdmin,
51+
read: isAdmin,
52+
update: isAdmin,
53+
create: isAdmin,
54+
},
4455
admin: {
4556
group: 'Content',
4657
},

0 commit comments

Comments
 (0)