fix(missions): enforce access control on missions pages
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
parent
8654eb40fa
commit
486fdca2a0
3 changed files with 18 additions and 5 deletions
|
|
@ -70,11 +70,18 @@ export default async function MissionDetailPage({ params }: MissionDetailPagePro
|
||||||
const { id } = await params;
|
const { id } = await params;
|
||||||
const payload = await getPayload({ config });
|
const payload = await getPayload({ config });
|
||||||
|
|
||||||
|
const { user: currentUser } = await payload.auth({
|
||||||
|
headers: await nextHeaders(),
|
||||||
|
canSetHeaders: false,
|
||||||
|
});
|
||||||
|
|
||||||
const mission = await payload
|
const mission = await payload
|
||||||
.findByID({
|
.findByID({
|
||||||
collection: "missions",
|
collection: "missions",
|
||||||
id: Number(id),
|
id: Number(id),
|
||||||
depth: 2,
|
depth: 2,
|
||||||
|
user: currentUser,
|
||||||
|
overrideAccess: false,
|
||||||
})
|
})
|
||||||
.catch(() => null);
|
.catch(() => null);
|
||||||
|
|
||||||
|
|
@ -127,6 +134,8 @@ export default async function MissionDetailPage({ params }: MissionDetailPagePro
|
||||||
sort: "-classification.startDateTime",
|
sort: "-classification.startDateTime",
|
||||||
limit: 5,
|
limit: 5,
|
||||||
depth: 0,
|
depth: 0,
|
||||||
|
user: currentUser,
|
||||||
|
overrideAccess: false,
|
||||||
select: {
|
select: {
|
||||||
name: true,
|
name: true,
|
||||||
codeName: true,
|
codeName: true,
|
||||||
|
|
@ -139,11 +148,6 @@ export default async function MissionDetailPage({ params }: MissionDetailPagePro
|
||||||
|
|
||||||
const siblingMissions = siblingMissionsRes.docs;
|
const siblingMissions = siblingMissionsRes.docs;
|
||||||
|
|
||||||
const { user: currentUser } = await payload.auth({
|
|
||||||
headers: await nextHeaders(),
|
|
||||||
canSetHeaders: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
const canManage = currentUser
|
const canManage = currentUser
|
||||||
? await hasPermission(payload, currentUser, "missions:update")
|
? await hasPermission(payload, currentUser, "missions:update")
|
||||||
: false;
|
: false;
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,8 @@ export default async function FridayCalendarPage() {
|
||||||
sort: "classification.startDateTime",
|
sort: "classification.startDateTime",
|
||||||
depth: 1,
|
depth: 1,
|
||||||
limit: 200,
|
limit: 200,
|
||||||
|
user,
|
||||||
|
overrideAccess: false,
|
||||||
select: {
|
select: {
|
||||||
name: true,
|
name: true,
|
||||||
codeName: true,
|
codeName: true,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import config from "@payload-config";
|
import config from "@payload-config";
|
||||||
import { getPayload } from "payload";
|
import { getPayload } from "payload";
|
||||||
|
import { headers as nextHeaders } from "next/headers";
|
||||||
import type { Campaign, Mission } from "@/payload-types";
|
import type { Campaign, Mission } from "@/payload-types";
|
||||||
import { CrosshairIcon } from "lucide-react";
|
import { CrosshairIcon } from "lucide-react";
|
||||||
import { MissionsList } from "@/components/frontend/intelligence/MissionsList";
|
import { MissionsList } from "@/components/frontend/intelligence/MissionsList";
|
||||||
|
|
@ -10,6 +11,10 @@ export const metadata = {
|
||||||
|
|
||||||
export default async function MissionsPage() {
|
export default async function MissionsPage() {
|
||||||
const payload = await getPayload({ config });
|
const payload = await getPayload({ config });
|
||||||
|
const { user } = await payload.auth({
|
||||||
|
headers: await nextHeaders(),
|
||||||
|
canSetHeaders: false,
|
||||||
|
});
|
||||||
|
|
||||||
const missionsRes = await payload
|
const missionsRes = await payload
|
||||||
.find({
|
.find({
|
||||||
|
|
@ -17,6 +22,8 @@ export default async function MissionsPage() {
|
||||||
sort: "-classification.startDateTime",
|
sort: "-classification.startDateTime",
|
||||||
limit: 500,
|
limit: 500,
|
||||||
depth: 2,
|
depth: 2,
|
||||||
|
user,
|
||||||
|
overrideAccess: false,
|
||||||
})
|
})
|
||||||
.catch(() => ({ docs: [] }));
|
.catch(() => ({ docs: [] }));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue