Use revisions for permissions

This commit is contained in:
rijkvanzanten
2020-07-09 12:51:35 -04:00
parent 24b801582f
commit ea7647355e
3 changed files with 40 additions and 43 deletions

View File

@@ -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();

View File

@@ -42,7 +42,7 @@ export const createItem = async (
collection: string,
data: Record<string, any>,
accountability?: Accountability
) => {
): Promise<string | number> => {
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<string, any>,
accountability?: Accountability
) => {
): Promise<string | number> => {
let payload = await PayloadService.processValues('update', collection, data);
payload = await PayloadService.processM2O(collection, payload);

View File

@@ -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<string, any>, query: Query) => {
const primaryKey = await ItemsService.createItem('directus_permissions', data);
return await ItemsService.readItem('directus_permissions', primaryKey, query);
export const createPermission = async (
data: Record<string, any>,
accountability: Accountability
): Promise<number> => {
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<string, any>,
query: Query
) => {
const primaryKey = await ItemsService.updateItem('directus_permissions', pk, data);
return await ItemsService.readItem('directus_permissions', primaryKey, query);
accountability: Accountability
): Promise<number> => {
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);
};