Skip to main content

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,
});
}