all repos — caroster @ 589ba138174504e3663d8e893cf9bdaed9e25d59

[Octree] Group carpool to your event https://caroster.io

backend/src/api/passenger/policies/check-deletion.ts (view raw)

 1import { errors } from "@strapi/utils";
 2
 3export default async (policyContext, _config, { strapi }) => {
 4  const passengerId = policyContext.args?.id;
 5  const passenger = await strapi.entityService.findOne(
 6    "api::passenger.passenger",
 7    passengerId,
 8    {
 9      populate: ["event", "user"],
10    }
11  );
12
13  if (!passenger) throw new errors.NotFoundError("Passenger not found");
14
15  const event = passenger.event;
16
17  if (event.enabled_modules?.includes("caroster-plus")) {
18    const user = policyContext.state.user;
19    if (!user) throw new errors.ForbiddenError();
20    else if (!passenger.user) return true;
21
22    const admins = event.administrators?.split(/, ?/) || [];
23    const isAdmin = [...admins, event.email].includes(user.email);
24    if (isAdmin) {
25      // TODO Create notification to passenger's linked user
26      return true;
27    } else if (passenger.user.id == user.id) return true;
28    else return false;
29  }
30};