refactor: pull all base fields out of collection sanitize
This commit is contained in:
53
src/fields/baseFields/baseAPIKeyFields.js
Normal file
53
src/fields/baseFields/baseAPIKeyFields.js
Normal 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;
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
];
|
||||
13
src/fields/baseFields/baseAccountLockFields.js
Normal file
13
src/fields/baseFields/baseAccountLockFields.js
Normal file
@@ -0,0 +1,13 @@
|
||||
module.exports = [
|
||||
{
|
||||
name: 'loginAttempts',
|
||||
type: 'number',
|
||||
hidden: true,
|
||||
defaultValue: 0,
|
||||
},
|
||||
{
|
||||
name: 'lockUntil',
|
||||
type: 'date',
|
||||
hidden: true,
|
||||
},
|
||||
];
|
||||
23
src/fields/baseFields/baseFields.js
Normal file
23
src/fields/baseFields/baseFields.js
Normal 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,
|
||||
},
|
||||
];
|
||||
78
src/fields/baseFields/baseImageUploadFields.js
Normal file
78
src/fields/baseFields/baseImageUploadFields.js
Normal 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,
|
||||
},
|
||||
},
|
||||
],
|
||||
})),
|
||||
},
|
||||
];
|
||||
41
src/fields/baseFields/baseUploadFields.js
Normal file
41
src/fields/baseFields/baseUploadFields.js
Normal 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,
|
||||
},
|
||||
},
|
||||
];
|
||||
19
src/fields/baseFields/baseVerificationFields.js
Normal file
19
src/fields/baseFields/baseVerificationFields.js
Normal 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,
|
||||
},
|
||||
];
|
||||
Reference in New Issue
Block a user