Hook
Є можливість створення хуків. Вони можуть бути корисні для спрощення читаємості коду та викликані під час запиту до функції.
Для додавання (объяви) хука необхідно використати функцію addHook
.
Її можна викликати або у місці виклику самого хука, або у index.js
файлі.
Перелік Hook
- onRequest
- onPageRequest
- onPageData
- onPageMeta
- checkToken
- preInsert -
insertCRUD hook (autofill, etc.)
- preUpdate -
updateCRUD hook
- preTemplate -
table-setting column/filter/form field, site content page custom form etc.
- twoFactorAuth -
login 2fa
- autoFill -
form autofill + script (example - project/road)
- formatPath -
filepath format with hb (example - project/road)
Опис та використання
preInsert
Використовується при виконанні внесенні даних через метод insert
CRUD
module.exports = function init({ funcs }) {
const { addHook } = funcs;
addHook('preInsert', require('./hook/preInsert'));
await funcs.applyHook('preInsert', {
req, db, funcs, body: originalBody, table, schema: formData?.schema, obj,
});
}
preUpdate
Використовується при виконанні оновленні даних через метод update
CRUD
module.exports = function init({ funcs }) {
const { addHook } = funcs;
addHook('preUpdate', require('./hook/preUpdate'));
await funcs.applyHook('preUpdate', {
id, table, body: originalBody,
});
}
preTemplate
За замовчуванням - дозволяє виокристовувати налаштування таблички для формування її вигляду - відображення обраних у налаштуваннях колонок
Приклади використання:
- отримання кастомної форми, наприклад - для сторінок site content
- формування кастомного списку колонок / фільтрів таблиці тощо
module.exports = function init({ funcs }) {
const { addHook } = funcs;
addHook('preTemplate', require('./util/hook/preTemplate'));
await funcs.applyHook('preTemplate', {
db, pg, funcs, name, type: 'table',
});
}
twoFactorAuth
Використовується при виконанні авторизації користувача при увімкненій двофакторній авторизації
module.exports = function init({ funcs }) {
const { addHook } = funcs;
addHook('twoFactorAuth', require('../2fa/hook/twoFactorAuth'));
await applyHook('twoFactorAuth', {
db, pg, user, session,
});
}
autoFill
Використовується для автоматичного заповнення даних при виклику форми
Потребує заповнення налаштувань програми (пункт DEV
- Налаштування завантаження файлів
)
Поле, яке має заповнюватись автоматично, позначається параметром autofill
та, за необхідності - disable
Є можливість також накинути на заповнення даного поля певного крону через параметр script
:
Підготовка налаштувань у формі:
{
"schema": {
"reg_num": {
"disable": true, // disable user edit
"autofill": true, // autofill
"type": "Text",
"ua": "Обліковий номер",
"script": {
"cron": "createDir" // execute cron
}
}
}
}
Виклик хука:
module.exports = function init({ funcs }) {
const { addHook } = funcs;
addHook('autoFill', require('../controller/hook/autoFill'));
await funcs.applyHook('autoFill', {
db, pg, funcs, body,
});
}
formatPath
Використовується для формування строки тексту (шляху до файлу) через handlebars
Потребує заповнення налаштувань програми (пункт DEV
- Налаштування завантаження файлів
)
module.exports = function init({ funcs }) {
const { addHook } = funcs;
addHook('formatPath', require('./controllers/hook/formatPath'));
await applyHook('formatPath', {
req, db, pg, file, funcs,
});
}