Skip to content

Commit

Permalink
Merge pull request #245 from genie-design/auth
Browse files Browse the repository at this point in the history
Auth
  • Loading branch information
lane711 authored Mar 11, 2024
2 parents 8afdefe + b5d772c commit 265920e
Showing 1 changed file with 78 additions and 0 deletions.
78 changes: 78 additions & 0 deletions src/cms/admin/auth.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import {
filterReadFieldAccess,
filterUpdateFieldAccess,
getApiAccessControlResult,
getItemReadResult,
getOperationCreateResult,
hasUser
} from '../auth/auth-helpers';
Expand Down Expand Up @@ -46,6 +47,73 @@ const itemAccess = userTableConfig?.access?.item;
const filterAccess = userTableConfig?.access?.filter;
const fieldsAccess = userTableConfig?.access?.fields;

// View user
authAPI.get(`/users`, async (ctx) => {
if (userTableConfig.hooks?.beforeOperation) {
await userTableConfig.hooks?.beforeOperation(ctx, 'read');
}
let { includeContentType, source, ...params } = ctx.req.query();
const accessControlResult = await getApiAccessControlResult(
operationAccess?.read || true,
filterAccess?.read || true,
true,
ctx,
undefined,
'users'
);

if (typeof accessControlResult === 'object') {
params = { ...params, ...accessControlResult };
}

if (!accessControlResult) {
return ctx.text('Unauthorized', 401);
}
const start = Date.now();

try {
params.limit = params.limit ?? '1000';
ctx.env.D1DATA = ctx.env.D1DATA ?? ctx.env.__D1_BETA__D1DATA;
let data = await getRecords(
ctx,
'users',
params,
ctx.req.url,
'fastest',
undefined
);

if (itemAccess?.read) {
const accessControlResult = await getItemReadResult(
itemAccess.read,
ctx,
data
);
if (!accessControlResult) {
return ctx.text('Unauthorized', 401);
}
}
data.data = await filterReadFieldAccess(fieldsAccess, ctx, data.data);

if (userTableConfig?.hooks?.afterOperation) {
await userTableConfig.hooks.afterOperation(
ctx,
'read',
params.id,
null,
data
);
}
const end = Date.now();
const executionTime = end - start;

return ctx.json({ ...data, executionTime });
} catch (error) {
console.log(error);
return ctx.text(error);
}
});

// View user
authAPI.get(`/users/:id`, async (ctx) => {
const id = ctx.req.param('id');
Expand Down Expand Up @@ -88,6 +156,16 @@ authAPI.get(`/users/:id`, async (ctx) => {
undefined
);

if (itemAccess?.read) {
const accessControlResult = await getItemReadResult(
itemAccess.read,
ctx,
data
);
if (!accessControlResult) {
return ctx.text('Unauthorized', 401);
}
}
data.data = await filterReadFieldAccess(fieldsAccess, ctx, data.data);

if (includeContentType !== undefined) {
Expand Down

0 comments on commit 265920e

Please sign in to comment.