From ea7647355edb15bce63679cc7f5ab69e8d07da4c Mon Sep 17 00:00:00 2001 From: rijkvanzanten Date: Thu, 9 Jul 2020 12:51:35 -0400 Subject: [PATCH] Use revisions for permissions --- src/routes/permissions.ts | 49 +++++++++++++++---------------------- src/services/items.ts | 4 +-- src/services/permissions.ts | 30 ++++++++++++++--------- 3 files changed, 40 insertions(+), 43 deletions(-) diff --git a/src/routes/permissions.ts b/src/routes/permissions.ts index ab20962e9a..17b6f5cf0d 100644 --- a/src/routes/permissions.ts +++ b/src/routes/permissions.ts @@ -3,7 +3,6 @@ import asyncHandler from 'express-async-handler'; import sanitizeQuery from '../middleware/sanitize-query'; import validateQuery from '../middleware/validate-query'; import * as PermissionsService from '../services/permissions'; -import * as ActivityService from '../services/activity'; import useCollection from '../middleware/use-collection'; const router = express.Router(); @@ -12,17 +11,14 @@ router.post( '/', useCollection('directus_permissions'), asyncHandler(async (req, res) => { - const item = await PermissionsService.createPermission(req.body, req.sanitizedQuery); - - ActivityService.createActivity({ - action: ActivityService.Action.CREATE, - collection: req.collection, - item: item.id, + const primaryKey = await PermissionsService.createPermission(req.body, { ip: req.ip, - user_agent: req.get('user-agent'), - action_by: req.user, + userAgent: req.get('user-agent'), + user: req.user, }); + const item = await PermissionsService.readPermission(primaryKey, req.sanitizedQuery); + return res.json({ data: item }); }) ); @@ -44,7 +40,10 @@ router.get( sanitizeQuery, validateQuery, asyncHandler(async (req, res) => { - const record = await PermissionsService.readPermission(req.params.pk, req.sanitizedQuery); + const record = await PermissionsService.readPermission( + Number(req.params.pk), + req.sanitizedQuery + ); return res.json({ data: record }); }) ); @@ -53,20 +52,17 @@ router.patch( '/:pk', useCollection('directus_permissions'), asyncHandler(async (req, res) => { - const item = await PermissionsService.updatePermission( - req.params.pk, + const primaryKey = await PermissionsService.updatePermission( + Number(req.params.pk), req.body, - req.sanitizedQuery + { + ip: req.ip, + userAgent: req.get('user-agent'), + user: req.user, + } ); - ActivityService.createActivity({ - action: ActivityService.Action.UPDATE, - collection: req.collection, - item: item.id, - ip: req.ip, - user_agent: req.get('user-agent'), - action_by: req.user, - }); + const item = await PermissionsService.readPermission(primaryKey, req.sanitizedQuery); return res.json({ data: item }); }) @@ -76,15 +72,10 @@ router.delete( '/:pk', useCollection('directus_permissions'), asyncHandler(async (req, res) => { - await PermissionsService.deletePermission(req.params.pk); - - ActivityService.createActivity({ - action: ActivityService.Action.DELETE, - collection: req.collection, - item: req.params.pk, + await PermissionsService.deletePermission(Number(req.params.pk), { ip: req.ip, - user_agent: req.get('user-agent'), - action_by: req.user, + userAgent: req.get('user-agent'), + user: req.user, }); return res.status(200).end(); diff --git a/src/services/items.ts b/src/services/items.ts index 420452be48..c87436e121 100644 --- a/src/services/items.ts +++ b/src/services/items.ts @@ -42,7 +42,7 @@ export const createItem = async ( collection: string, data: Record, accountability?: Accountability -) => { +): Promise => { let payload = await PayloadService.processValues('create', collection, data); payload = await PayloadService.processM2O(collection, payload); @@ -118,7 +118,7 @@ export const updateItem = async ( pk: number | string, data: Record, accountability?: Accountability -) => { +): Promise => { let payload = await PayloadService.processValues('update', collection, data); payload = await PayloadService.processM2O(collection, payload); diff --git a/src/services/permissions.ts b/src/services/permissions.ts index 737b75db08..877c74275b 100644 --- a/src/services/permissions.ts +++ b/src/services/permissions.ts @@ -1,28 +1,34 @@ -import { Query } from '../types/query'; +import { Accountability, Query } from '../types'; import * as ItemsService from './items'; -export const createPermission = async (data: Record, query: Query) => { - const primaryKey = await ItemsService.createItem('directus_permissions', data); - return await ItemsService.readItem('directus_permissions', primaryKey, query); +export const createPermission = async ( + data: Record, + accountability: Accountability +): Promise => { + return (await ItemsService.createItem('directus_permissions', data, accountability)) as number; }; export const readPermissions = async (query: Query) => { return await ItemsService.readItems('directus_permissions', query); }; -export const readPermission = async (pk: string | number, query: Query) => { +export const readPermission = async (pk: number, query: Query) => { return await ItemsService.readItem('directus_permissions', pk, query); }; export const updatePermission = async ( - pk: string | number, + pk: number, data: Record, - query: Query -) => { - const primaryKey = await ItemsService.updateItem('directus_permissions', pk, data); - return await ItemsService.readItem('directus_permissions', primaryKey, query); + accountability: Accountability +): Promise => { + return (await ItemsService.updateItem( + 'directus_permissions', + pk, + data, + accountability + )) as number; }; -export const deletePermission = async (pk: string | number) => { - await ItemsService.deleteItem('directus_permissions', pk); +export const deletePermission = async (pk: number, accountability: Accountability) => { + await ItemsService.deleteItem('directus_permissions', pk, accountability); };