refactor: pull all base fields out of collection sanitize

This commit is contained in:
Elliot DeNolf
2020-11-17 14:39:10 -05:00
parent 1de5ac8cba
commit fe536f0628
6 changed files with 120 additions and 1 deletions

View File

@@ -0,0 +1,53 @@
const crypto = require('crypto');
const encryptKey = ({ req, value }) => (value ? req.payload.encrypt(value) : undefined);
const decryptKey = ({ req, value }) => (value ? req.payload.decrypt(value) : undefined);
module.exports = [
{
name: 'enableAPIKey',
type: 'checkbox',
defaultValue: false,
admin: {
disabled: true,
},
},
{
name: 'apiKey',
type: 'text',
admin: {
disabled: true,
},
hooks: {
beforeChange: [
encryptKey,
],
afterRead: [
decryptKey,
],
},
},
{
name: 'apiKeyIndex',
type: 'text',
hidden: true,
admin: {
disabled: true,
},
hooks: {
beforeValidate: [
async ({ data, req, value }) => {
if (data.apiKey) {
return crypto.createHmac('sha1', req.payload.config.secret)
.update(data.apiKey)
.digest('hex');
}
if (data.enableAPIKey === false) {
return null;
}
return value;
},
],
},
},
];

View File

@@ -0,0 +1,13 @@
module.exports = [
{
name: 'loginAttempts',
type: 'number',
hidden: true,
defaultValue: 0,
},
{
name: 'lockUntil',
type: 'date',
hidden: true,
},
];

View File

@@ -0,0 +1,23 @@
const validations = require('../validations');
module.exports = [
{
name: 'email',
label: 'Email',
type: 'email',
validate: validations.email,
admin: {
disabled: true,
},
},
{
name: 'resetPasswordToken',
type: 'text',
hidden: true,
},
{
name: 'resetPasswordExpiration',
type: 'date',
hidden: true,
},
];

View File

@@ -0,0 +1,78 @@
module.exports = (imageSizes) => [
{
name: 'width',
label: 'Width',
type: 'number',
admin: {
readOnly: true,
disabled: true,
},
}, {
name: 'height',
label: 'Height',
type: 'number',
admin: {
readOnly: true,
disabled: true,
},
},
{
name: 'sizes',
label: 'Sizes',
type: 'group',
admin: {
disabled: true,
},
fields: imageSizes.map((size) => ({
label: size.name,
name: size.name,
type: 'group',
admin: {
disabled: true,
},
fields: [
{
name: 'width',
label: 'Width',
type: 'number',
admin: {
readOnly: true,
disabled: true,
},
}, {
name: 'height',
label: 'Height',
type: 'number',
admin: {
readOnly: true,
disabled: true,
},
}, {
name: 'mimeType',
label: 'MIME Type',
type: 'text',
admin: {
readOnly: true,
disabled: true,
},
}, {
name: 'filesize',
label: 'File Size',
type: 'number',
admin: {
readOnly: true,
disabled: true,
},
}, {
name: 'filename',
label: 'File Name',
type: 'text',
admin: {
readOnly: true,
disabled: true,
},
},
],
})),
},
];

View File

@@ -0,0 +1,41 @@
module.exports = [
{
name: 'filename',
label: 'Filename',
hooks: {
beforeChange: [
({ req, operation, value }) => {
if (operation === 'create') {
const file = (req.files && req.files.file) ? req.files.file : req.file;
return file.name;
}
return value;
},
],
},
type: 'text',
required: true,
unique: true,
admin: {
disabled: true,
readOnly: true,
},
}, {
name: 'mimeType',
label: 'MIME Type',
type: 'text',
admin: {
readOnly: true,
disabled: true,
},
}, {
name: 'filesize',
label: 'File Size',
type: 'number',
admin: {
readOnly: true,
disabled: true,
},
},
];

View File

@@ -0,0 +1,19 @@
module.exports = [
{
name: '_verified',
type: 'checkbox',
access: {
create: () => false,
update: ({ req: { user } }) => Boolean(user),
read: ({ req: { user } }) => Boolean(user),
},
admin: {
disabled: true,
},
},
{
name: '_verificationToken',
type: 'text',
hidden: true,
},
];