@loadspark/core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +71 -0
- package/README.md +628 -0
- package/dist/access/accessors.d.ts +22 -0
- package/dist/access/accessors.d.ts.map +1 -0
- package/dist/access/accessors.js +20 -0
- package/dist/access/accessors.js.map +1 -0
- package/dist/access/builders.d.ts +4 -0
- package/dist/access/builders.d.ts.map +1 -0
- package/dist/access/builders.js +26 -0
- package/dist/access/builders.js.map +1 -0
- package/dist/access/index.d.ts +4 -0
- package/dist/access/index.d.ts.map +1 -0
- package/dist/access/index.js +5 -0
- package/dist/access/index.js.map +1 -0
- package/dist/access/roles.d.ts +38 -0
- package/dist/access/roles.d.ts.map +1 -0
- package/dist/access/roles.js +33 -0
- package/dist/access/roles.js.map +1 -0
- package/dist/collections/users/access.d.ts +30 -0
- package/dist/collections/users/access.d.ts.map +1 -0
- package/dist/collections/users/access.js +96 -0
- package/dist/collections/users/access.js.map +1 -0
- package/dist/collections/users/config.d.ts +9 -0
- package/dist/collections/users/config.d.ts.map +1 -0
- package/dist/collections/users/config.js +55 -0
- package/dist/collections/users/config.js.map +1 -0
- package/dist/collections/users/fields.d.ts +4 -0
- package/dist/collections/users/fields.d.ts.map +1 -0
- package/dist/collections/users/fields.js +97 -0
- package/dist/collections/users/fields.js.map +1 -0
- package/dist/collections/users/hooks.d.ts +25 -0
- package/dist/collections/users/hooks.d.ts.map +1 -0
- package/dist/collections/users/hooks.js +50 -0
- package/dist/collections/users/hooks.js.map +1 -0
- package/dist/collections/users/types.d.ts +18 -0
- package/dist/collections/users/types.d.ts.map +1 -0
- package/dist/collections/users/types.js +8 -0
- package/dist/collections/users/types.js.map +1 -0
- package/dist/constants.d.ts +45 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +46 -0
- package/dist/constants.js.map +1 -0
- package/dist/exports/access/index.d.ts +2 -0
- package/dist/exports/access/index.d.ts.map +1 -0
- package/dist/exports/access/index.js +3 -0
- package/dist/exports/access/index.js.map +1 -0
- package/dist/exports/fields/AlertBox/client.d.ts +2 -0
- package/dist/exports/fields/AlertBox/client.d.ts.map +1 -0
- package/dist/exports/fields/AlertBox/client.js +3 -0
- package/dist/exports/fields/AlertBox/client.js.map +1 -0
- package/dist/exports/fields/AlertBox/index.d.ts +2 -0
- package/dist/exports/fields/AlertBox/index.d.ts.map +1 -0
- package/dist/exports/fields/AlertBox/index.js +3 -0
- package/dist/exports/fields/AlertBox/index.js.map +1 -0
- package/dist/exports/fields/ColourText/client.d.ts +2 -0
- package/dist/exports/fields/ColourText/client.d.ts.map +1 -0
- package/dist/exports/fields/ColourText/client.js +3 -0
- package/dist/exports/fields/ColourText/client.js.map +1 -0
- package/dist/exports/fields/ColourText/index.d.ts +2 -0
- package/dist/exports/fields/ColourText/index.d.ts.map +1 -0
- package/dist/exports/fields/ColourText/index.js +3 -0
- package/dist/exports/fields/ColourText/index.js.map +1 -0
- package/dist/exports/fields/Combo/client.d.ts +2 -0
- package/dist/exports/fields/Combo/client.d.ts.map +1 -0
- package/dist/exports/fields/Combo/client.js +3 -0
- package/dist/exports/fields/Combo/client.js.map +1 -0
- package/dist/exports/fields/Combo/index.d.ts +2 -0
- package/dist/exports/fields/Combo/index.d.ts.map +1 -0
- package/dist/exports/fields/Combo/index.js +3 -0
- package/dist/exports/fields/Combo/index.js.map +1 -0
- package/dist/exports/fields/Countries/index.d.ts +2 -0
- package/dist/exports/fields/Countries/index.d.ts.map +1 -0
- package/dist/exports/fields/Countries/index.js +3 -0
- package/dist/exports/fields/Countries/index.js.map +1 -0
- package/dist/exports/fields/Number/client.d.ts +2 -0
- package/dist/exports/fields/Number/client.d.ts.map +1 -0
- package/dist/exports/fields/Number/client.js +3 -0
- package/dist/exports/fields/Number/client.js.map +1 -0
- package/dist/exports/fields/Number/index.d.ts +2 -0
- package/dist/exports/fields/Number/index.d.ts.map +1 -0
- package/dist/exports/fields/Number/index.js +3 -0
- package/dist/exports/fields/Number/index.js.map +1 -0
- package/dist/exports/fields/OpeningHours/client.d.ts +2 -0
- package/dist/exports/fields/OpeningHours/client.d.ts.map +1 -0
- package/dist/exports/fields/OpeningHours/client.js +3 -0
- package/dist/exports/fields/OpeningHours/client.js.map +1 -0
- package/dist/exports/fields/OpeningHours/index.d.ts +2 -0
- package/dist/exports/fields/OpeningHours/index.d.ts.map +1 -0
- package/dist/exports/fields/OpeningHours/index.js +3 -0
- package/dist/exports/fields/OpeningHours/index.js.map +1 -0
- package/dist/exports/fields/Pattern/client.d.ts +2 -0
- package/dist/exports/fields/Pattern/client.d.ts.map +1 -0
- package/dist/exports/fields/Pattern/client.js +3 -0
- package/dist/exports/fields/Pattern/client.js.map +1 -0
- package/dist/exports/fields/Pattern/index.d.ts +2 -0
- package/dist/exports/fields/Pattern/index.d.ts.map +1 -0
- package/dist/exports/fields/Pattern/index.js +3 -0
- package/dist/exports/fields/Pattern/index.js.map +1 -0
- package/dist/exports/fields/Range/client.d.ts +2 -0
- package/dist/exports/fields/Range/client.d.ts.map +1 -0
- package/dist/exports/fields/Range/client.js +3 -0
- package/dist/exports/fields/Range/client.js.map +1 -0
- package/dist/exports/fields/Range/index.d.ts +2 -0
- package/dist/exports/fields/Range/index.d.ts.map +1 -0
- package/dist/exports/fields/Range/index.js +3 -0
- package/dist/exports/fields/Range/index.js.map +1 -0
- package/dist/exports/fields/Telephone/client.d.ts +2 -0
- package/dist/exports/fields/Telephone/client.d.ts.map +1 -0
- package/dist/exports/fields/Telephone/client.js +3 -0
- package/dist/exports/fields/Telephone/client.js.map +1 -0
- package/dist/exports/fields/Telephone/index.d.ts +2 -0
- package/dist/exports/fields/Telephone/index.d.ts.map +1 -0
- package/dist/exports/fields/Telephone/index.js +3 -0
- package/dist/exports/fields/Telephone/index.js.map +1 -0
- package/dist/exports/fields/client.d.ts +2 -0
- package/dist/exports/fields/client.d.ts.map +1 -0
- package/dist/exports/fields/client.js +2 -0
- package/dist/exports/fields/client.js.map +1 -0
- package/dist/exports/fields/index.d.ts +10 -0
- package/dist/exports/fields/index.d.ts.map +1 -0
- package/dist/exports/fields/index.js +11 -0
- package/dist/exports/fields/index.js.map +1 -0
- package/dist/exports/translations/index.d.ts +2 -0
- package/dist/exports/translations/index.d.ts.map +1 -0
- package/dist/exports/translations/index.js +3 -0
- package/dist/exports/translations/index.js.map +1 -0
- package/dist/exports/users/index.d.ts +4 -0
- package/dist/exports/users/index.d.ts.map +1 -0
- package/dist/exports/users/index.js +5 -0
- package/dist/exports/users/index.js.map +1 -0
- package/dist/exports/validations/index.d.ts +4 -0
- package/dist/exports/validations/index.d.ts.map +1 -0
- package/dist/exports/validations/index.js +5 -0
- package/dist/exports/validations/index.js.map +1 -0
- package/dist/fields/AlertBox/Component.d.ts +14 -0
- package/dist/fields/AlertBox/Component.d.ts.map +1 -0
- package/dist/fields/AlertBox/Component.js +32 -0
- package/dist/fields/AlertBox/Component.js.map +1 -0
- package/dist/fields/AlertBox/icons/AlertIcon.d.ts +3 -0
- package/dist/fields/AlertBox/icons/AlertIcon.d.ts.map +1 -0
- package/dist/fields/AlertBox/icons/AlertIcon.js +27 -0
- package/dist/fields/AlertBox/icons/AlertIcon.js.map +1 -0
- package/dist/fields/AlertBox/icons/ErrorIcon.d.ts +3 -0
- package/dist/fields/AlertBox/icons/ErrorIcon.d.ts.map +1 -0
- package/dist/fields/AlertBox/icons/ErrorIcon.js +35 -0
- package/dist/fields/AlertBox/icons/ErrorIcon.js.map +1 -0
- package/dist/fields/AlertBox/icons/InfoIcon.d.ts +3 -0
- package/dist/fields/AlertBox/icons/InfoIcon.d.ts.map +1 -0
- package/dist/fields/AlertBox/icons/InfoIcon.js +29 -0
- package/dist/fields/AlertBox/icons/InfoIcon.js.map +1 -0
- package/dist/fields/AlertBox/index.d.ts +76 -0
- package/dist/fields/AlertBox/index.d.ts.map +1 -0
- package/dist/fields/AlertBox/index.js +64 -0
- package/dist/fields/AlertBox/index.js.map +1 -0
- package/dist/fields/AlertBox/styles.css +42 -0
- package/dist/fields/ColourText/Component.d.ts +8 -0
- package/dist/fields/ColourText/Component.d.ts.map +1 -0
- package/dist/fields/ColourText/Component.js +102 -0
- package/dist/fields/ColourText/Component.js.map +1 -0
- package/dist/fields/ColourText/index.d.ts +35 -0
- package/dist/fields/ColourText/index.d.ts.map +1 -0
- package/dist/fields/ColourText/index.js +41 -0
- package/dist/fields/ColourText/index.js.map +1 -0
- package/dist/fields/ColourText/styles.css +21 -0
- package/dist/fields/ColourText/validate.d.ts +3 -0
- package/dist/fields/ColourText/validate.d.ts.map +1 -0
- package/dist/fields/ColourText/validate.js +30 -0
- package/dist/fields/ColourText/validate.js.map +1 -0
- package/dist/fields/Combo/Component.d.ts +16 -0
- package/dist/fields/Combo/Component.d.ts.map +1 -0
- package/dist/fields/Combo/Component.js +105 -0
- package/dist/fields/Combo/Component.js.map +1 -0
- package/dist/fields/Combo/beforeValidate.d.ts +4 -0
- package/dist/fields/Combo/beforeValidate.d.ts.map +1 -0
- package/dist/fields/Combo/beforeValidate.js +30 -0
- package/dist/fields/Combo/beforeValidate.js.map +1 -0
- package/dist/fields/Combo/index.d.ts +58 -0
- package/dist/fields/Combo/index.d.ts.map +1 -0
- package/dist/fields/Combo/index.js +74 -0
- package/dist/fields/Combo/index.js.map +1 -0
- package/dist/fields/Countries/index.d.ts +49 -0
- package/dist/fields/Countries/index.d.ts.map +1 -0
- package/dist/fields/Countries/index.js +59 -0
- package/dist/fields/Countries/index.js.map +1 -0
- package/dist/fields/Number/Component.d.ts +14 -0
- package/dist/fields/Number/Component.d.ts.map +1 -0
- package/dist/fields/Number/Component.js +108 -0
- package/dist/fields/Number/Component.js.map +1 -0
- package/dist/fields/Number/index.d.ts +64 -0
- package/dist/fields/Number/index.d.ts.map +1 -0
- package/dist/fields/Number/index.js +66 -0
- package/dist/fields/Number/index.js.map +1 -0
- package/dist/fields/Number/styles.css +0 -0
- package/dist/fields/OpeningHours/Component.d.ts +7 -0
- package/dist/fields/OpeningHours/Component.d.ts.map +1 -0
- package/dist/fields/OpeningHours/Component.js +161 -0
- package/dist/fields/OpeningHours/Component.js.map +1 -0
- package/dist/fields/OpeningHours/index.d.ts +51 -0
- package/dist/fields/OpeningHours/index.d.ts.map +1 -0
- package/dist/fields/OpeningHours/index.js +49 -0
- package/dist/fields/OpeningHours/index.js.map +1 -0
- package/dist/fields/OpeningHours/styles.css +124 -0
- package/dist/fields/OpeningHours/validate.d.ts +3 -0
- package/dist/fields/OpeningHours/validate.d.ts.map +1 -0
- package/dist/fields/OpeningHours/validate.js +39 -0
- package/dist/fields/OpeningHours/validate.js.map +1 -0
- package/dist/fields/Pattern/Component.d.ts +14 -0
- package/dist/fields/Pattern/Component.d.ts.map +1 -0
- package/dist/fields/Pattern/Component.js +88 -0
- package/dist/fields/Pattern/Component.js.map +1 -0
- package/dist/fields/Pattern/index.d.ts +59 -0
- package/dist/fields/Pattern/index.d.ts.map +1 -0
- package/dist/fields/Pattern/index.js +55 -0
- package/dist/fields/Pattern/index.js.map +1 -0
- package/dist/fields/Pattern/styles.css +34 -0
- package/dist/fields/Range/Component.d.ts +13 -0
- package/dist/fields/Range/Component.d.ts.map +1 -0
- package/dist/fields/Range/Component.js +138 -0
- package/dist/fields/Range/Component.js.map +1 -0
- package/dist/fields/Range/index.d.ts +82 -0
- package/dist/fields/Range/index.d.ts.map +1 -0
- package/dist/fields/Range/index.js +63 -0
- package/dist/fields/Range/index.js.map +1 -0
- package/dist/fields/Range/range.scss +138 -0
- package/dist/fields/Range/types.d.ts +5 -0
- package/dist/fields/Range/types.d.ts.map +1 -0
- package/dist/fields/Range/types.js +3 -0
- package/dist/fields/Range/types.js.map +1 -0
- package/dist/fields/Telephone/Component.d.ts +13 -0
- package/dist/fields/Telephone/Component.d.ts.map +1 -0
- package/dist/fields/Telephone/Component.js +92 -0
- package/dist/fields/Telephone/Component.js.map +1 -0
- package/dist/fields/Telephone/index.d.ts +99 -0
- package/dist/fields/Telephone/index.d.ts.map +1 -0
- package/dist/fields/Telephone/index.js +59 -0
- package/dist/fields/Telephone/index.js.map +1 -0
- package/dist/fields/Telephone/validate.d.ts +3 -0
- package/dist/fields/Telephone/validate.d.ts.map +1 -0
- package/dist/fields/Telephone/validate.js +13 -0
- package/dist/fields/Telephone/validate.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/translations/index.d.ts +6 -0
- package/dist/translations/index.d.ts.map +1 -0
- package/dist/translations/index.js +92 -0
- package/dist/translations/index.js.map +1 -0
- package/dist/translations/languages/ar.d.ts +576 -0
- package/dist/translations/languages/ar.d.ts.map +1 -0
- package/dist/translations/languages/ar.js +329 -0
- package/dist/translations/languages/ar.js.map +1 -0
- package/dist/translations/languages/az.d.ts +576 -0
- package/dist/translations/languages/az.d.ts.map +1 -0
- package/dist/translations/languages/az.js +329 -0
- package/dist/translations/languages/az.js.map +1 -0
- package/dist/translations/languages/bg.d.ts +576 -0
- package/dist/translations/languages/bg.d.ts.map +1 -0
- package/dist/translations/languages/bg.js +329 -0
- package/dist/translations/languages/bg.js.map +1 -0
- package/dist/translations/languages/bnBd.d.ts +576 -0
- package/dist/translations/languages/bnBd.d.ts.map +1 -0
- package/dist/translations/languages/bnBd.js +329 -0
- package/dist/translations/languages/bnBd.js.map +1 -0
- package/dist/translations/languages/bnIn.d.ts +576 -0
- package/dist/translations/languages/bnIn.d.ts.map +1 -0
- package/dist/translations/languages/bnIn.js +329 -0
- package/dist/translations/languages/bnIn.js.map +1 -0
- package/dist/translations/languages/ca.d.ts +576 -0
- package/dist/translations/languages/ca.d.ts.map +1 -0
- package/dist/translations/languages/ca.js +329 -0
- package/dist/translations/languages/ca.js.map +1 -0
- package/dist/translations/languages/cs.d.ts +576 -0
- package/dist/translations/languages/cs.d.ts.map +1 -0
- package/dist/translations/languages/cs.js +329 -0
- package/dist/translations/languages/cs.js.map +1 -0
- package/dist/translations/languages/da.d.ts +576 -0
- package/dist/translations/languages/da.d.ts.map +1 -0
- package/dist/translations/languages/da.js +329 -0
- package/dist/translations/languages/da.js.map +1 -0
- package/dist/translations/languages/de.d.ts +576 -0
- package/dist/translations/languages/de.d.ts.map +1 -0
- package/dist/translations/languages/de.js +329 -0
- package/dist/translations/languages/de.js.map +1 -0
- package/dist/translations/languages/en.d.ts +576 -0
- package/dist/translations/languages/en.d.ts.map +1 -0
- package/dist/translations/languages/en.js +329 -0
- package/dist/translations/languages/en.js.map +1 -0
- package/dist/translations/languages/es.d.ts +576 -0
- package/dist/translations/languages/es.d.ts.map +1 -0
- package/dist/translations/languages/es.js +329 -0
- package/dist/translations/languages/es.js.map +1 -0
- package/dist/translations/languages/et.d.ts +576 -0
- package/dist/translations/languages/et.d.ts.map +1 -0
- package/dist/translations/languages/et.js +329 -0
- package/dist/translations/languages/et.js.map +1 -0
- package/dist/translations/languages/fa.d.ts +576 -0
- package/dist/translations/languages/fa.d.ts.map +1 -0
- package/dist/translations/languages/fa.js +329 -0
- package/dist/translations/languages/fa.js.map +1 -0
- package/dist/translations/languages/fr.d.ts +576 -0
- package/dist/translations/languages/fr.d.ts.map +1 -0
- package/dist/translations/languages/fr.js +329 -0
- package/dist/translations/languages/fr.js.map +1 -0
- package/dist/translations/languages/he.d.ts +576 -0
- package/dist/translations/languages/he.d.ts.map +1 -0
- package/dist/translations/languages/he.js +329 -0
- package/dist/translations/languages/he.js.map +1 -0
- package/dist/translations/languages/hr.d.ts +576 -0
- package/dist/translations/languages/hr.d.ts.map +1 -0
- package/dist/translations/languages/hr.js +329 -0
- package/dist/translations/languages/hr.js.map +1 -0
- package/dist/translations/languages/hu.d.ts +576 -0
- package/dist/translations/languages/hu.d.ts.map +1 -0
- package/dist/translations/languages/hu.js +329 -0
- package/dist/translations/languages/hu.js.map +1 -0
- package/dist/translations/languages/hy.d.ts +576 -0
- package/dist/translations/languages/hy.d.ts.map +1 -0
- package/dist/translations/languages/hy.js +329 -0
- package/dist/translations/languages/hy.js.map +1 -0
- package/dist/translations/languages/id.d.ts +576 -0
- package/dist/translations/languages/id.d.ts.map +1 -0
- package/dist/translations/languages/id.js +329 -0
- package/dist/translations/languages/id.js.map +1 -0
- package/dist/translations/languages/is.d.ts +576 -0
- package/dist/translations/languages/is.d.ts.map +1 -0
- package/dist/translations/languages/is.js +329 -0
- package/dist/translations/languages/is.js.map +1 -0
- package/dist/translations/languages/it.d.ts +576 -0
- package/dist/translations/languages/it.d.ts.map +1 -0
- package/dist/translations/languages/it.js +329 -0
- package/dist/translations/languages/it.js.map +1 -0
- package/dist/translations/languages/ja.d.ts +576 -0
- package/dist/translations/languages/ja.d.ts.map +1 -0
- package/dist/translations/languages/ja.js +329 -0
- package/dist/translations/languages/ja.js.map +1 -0
- package/dist/translations/languages/ko.d.ts +576 -0
- package/dist/translations/languages/ko.d.ts.map +1 -0
- package/dist/translations/languages/ko.js +329 -0
- package/dist/translations/languages/ko.js.map +1 -0
- package/dist/translations/languages/lt.d.ts +576 -0
- package/dist/translations/languages/lt.d.ts.map +1 -0
- package/dist/translations/languages/lt.js +329 -0
- package/dist/translations/languages/lt.js.map +1 -0
- package/dist/translations/languages/lv.d.ts +576 -0
- package/dist/translations/languages/lv.d.ts.map +1 -0
- package/dist/translations/languages/lv.js +329 -0
- package/dist/translations/languages/lv.js.map +1 -0
- package/dist/translations/languages/my.d.ts +576 -0
- package/dist/translations/languages/my.d.ts.map +1 -0
- package/dist/translations/languages/my.js +329 -0
- package/dist/translations/languages/my.js.map +1 -0
- package/dist/translations/languages/nb.d.ts +576 -0
- package/dist/translations/languages/nb.d.ts.map +1 -0
- package/dist/translations/languages/nb.js +329 -0
- package/dist/translations/languages/nb.js.map +1 -0
- package/dist/translations/languages/nl.d.ts +576 -0
- package/dist/translations/languages/nl.d.ts.map +1 -0
- package/dist/translations/languages/nl.js +329 -0
- package/dist/translations/languages/nl.js.map +1 -0
- package/dist/translations/languages/pl.d.ts +576 -0
- package/dist/translations/languages/pl.d.ts.map +1 -0
- package/dist/translations/languages/pl.js +329 -0
- package/dist/translations/languages/pl.js.map +1 -0
- package/dist/translations/languages/pt.d.ts +576 -0
- package/dist/translations/languages/pt.d.ts.map +1 -0
- package/dist/translations/languages/pt.js +329 -0
- package/dist/translations/languages/pt.js.map +1 -0
- package/dist/translations/languages/ro.d.ts +576 -0
- package/dist/translations/languages/ro.d.ts.map +1 -0
- package/dist/translations/languages/ro.js +329 -0
- package/dist/translations/languages/ro.js.map +1 -0
- package/dist/translations/languages/rs.d.ts +576 -0
- package/dist/translations/languages/rs.d.ts.map +1 -0
- package/dist/translations/languages/rs.js +329 -0
- package/dist/translations/languages/rs.js.map +1 -0
- package/dist/translations/languages/rsLatin.d.ts +576 -0
- package/dist/translations/languages/rsLatin.d.ts.map +1 -0
- package/dist/translations/languages/rsLatin.js +329 -0
- package/dist/translations/languages/rsLatin.js.map +1 -0
- package/dist/translations/languages/ru.d.ts +576 -0
- package/dist/translations/languages/ru.d.ts.map +1 -0
- package/dist/translations/languages/ru.js +329 -0
- package/dist/translations/languages/ru.js.map +1 -0
- package/dist/translations/languages/sk.d.ts +576 -0
- package/dist/translations/languages/sk.d.ts.map +1 -0
- package/dist/translations/languages/sk.js +329 -0
- package/dist/translations/languages/sk.js.map +1 -0
- package/dist/translations/languages/sl.d.ts +576 -0
- package/dist/translations/languages/sl.d.ts.map +1 -0
- package/dist/translations/languages/sl.js +329 -0
- package/dist/translations/languages/sl.js.map +1 -0
- package/dist/translations/languages/sv.d.ts +576 -0
- package/dist/translations/languages/sv.d.ts.map +1 -0
- package/dist/translations/languages/sv.js +329 -0
- package/dist/translations/languages/sv.js.map +1 -0
- package/dist/translations/languages/ta.d.ts +576 -0
- package/dist/translations/languages/ta.d.ts.map +1 -0
- package/dist/translations/languages/ta.js +329 -0
- package/dist/translations/languages/ta.js.map +1 -0
- package/dist/translations/languages/th.d.ts +576 -0
- package/dist/translations/languages/th.d.ts.map +1 -0
- package/dist/translations/languages/th.js +329 -0
- package/dist/translations/languages/th.js.map +1 -0
- package/dist/translations/languages/tr.d.ts +576 -0
- package/dist/translations/languages/tr.d.ts.map +1 -0
- package/dist/translations/languages/tr.js +329 -0
- package/dist/translations/languages/tr.js.map +1 -0
- package/dist/translations/languages/uk.d.ts +576 -0
- package/dist/translations/languages/uk.d.ts.map +1 -0
- package/dist/translations/languages/uk.js +329 -0
- package/dist/translations/languages/uk.js.map +1 -0
- package/dist/translations/languages/vi.d.ts +576 -0
- package/dist/translations/languages/vi.d.ts.map +1 -0
- package/dist/translations/languages/vi.js +329 -0
- package/dist/translations/languages/vi.js.map +1 -0
- package/dist/translations/languages/zh.d.ts +576 -0
- package/dist/translations/languages/zh.d.ts.map +1 -0
- package/dist/translations/languages/zh.js +329 -0
- package/dist/translations/languages/zh.js.map +1 -0
- package/dist/translations/languages/zhTw.d.ts +576 -0
- package/dist/translations/languages/zhTw.d.ts.map +1 -0
- package/dist/translations/languages/zhTw.js +329 -0
- package/dist/translations/languages/zhTw.js.map +1 -0
- package/dist/types.d.ts +269 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +257 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +32 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +82 -0
- package/dist/utils.js.map +1 -0
- package/dist/validations/dates.d.ts +230 -0
- package/dist/validations/dates.d.ts.map +1 -0
- package/dist/validations/dates.js +254 -0
- package/dist/validations/dates.js.map +1 -0
- package/dist/validations/numbers.d.ts +118 -0
- package/dist/validations/numbers.d.ts.map +1 -0
- package/dist/validations/numbers.js +151 -0
- package/dist/validations/numbers.js.map +1 -0
- package/dist/validations/relationLinkedUser.d.ts +43 -0
- package/dist/validations/relationLinkedUser.d.ts.map +1 -0
- package/dist/validations/relationLinkedUser.js +54 -0
- package/dist/validations/relationLinkedUser.js.map +1 -0
- package/package.json +228 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { anyone, buildUserLinkedAccess } from './builders.js';
|
|
2
|
+
import { hasAdminRole, hasSuperAdminRole } from './roles.js';
|
|
3
|
+
/**
|
|
4
|
+
* Allows access to all resources if the user is a super-admin or admin but if the user is a regular user, it will only allow access to their own resources.
|
|
5
|
+
*/ export const userLinkedAccess = buildUserLinkedAccess;
|
|
6
|
+
/**
|
|
7
|
+
* Allows access to all resources, regardless of authentication status.
|
|
8
|
+
*/ export const hasPublicAccess = anyone;
|
|
9
|
+
/**
|
|
10
|
+
* Grants access to the field if the user is a super-admin.
|
|
11
|
+
* @param ctx
|
|
12
|
+
* @returns
|
|
13
|
+
*/ export const hasSuperAdminFieldLevelAccess = (ctx)=>hasSuperAdminRole(ctx.req.user);
|
|
14
|
+
/**
|
|
15
|
+
* Grants access to the field if the user is an admin or super-admin.
|
|
16
|
+
* @param ctx
|
|
17
|
+
* @returns
|
|
18
|
+
*/ export const hasAdminFieldLevelAccess = (ctx)=>hasSuperAdminRole(ctx.req.user) || hasAdminRole(ctx.req.user);
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=accessors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/access/accessors.ts"],"sourcesContent":["import type { Access, FieldAccess } from 'payload'\n\nimport { anyone, buildUserLinkedAccess } from './builders.js'\nimport { hasAdminRole, hasSuperAdminRole } from './roles.js'\n\n/**\n * Allows access to all resources if the user is a super-admin or admin but if the user is a regular user, it will only allow access to their own resources.\n */\nexport const userLinkedAccess = buildUserLinkedAccess\n\n/**\n * Allows access to all resources, regardless of authentication status.\n */\nexport const hasPublicAccess: Access = anyone\n\n/**\n * Grants access to the field if the user is a super-admin.\n * @param ctx\n * @returns\n */\nexport const hasSuperAdminFieldLevelAccess: FieldAccess = (ctx) => hasSuperAdminRole(ctx.req.user)\n\n/**\n * Grants access to the field if the user is an admin or super-admin.\n * @param ctx\n * @returns\n */\nexport const hasAdminFieldLevelAccess: FieldAccess = (ctx) =>\n hasSuperAdminRole(ctx.req.user) || hasAdminRole(ctx.req.user)\n"],"names":["anyone","buildUserLinkedAccess","hasAdminRole","hasSuperAdminRole","userLinkedAccess","hasPublicAccess","hasSuperAdminFieldLevelAccess","ctx","req","user","hasAdminFieldLevelAccess"],"mappings":"AAEA,SAASA,MAAM,EAAEC,qBAAqB,QAAQ,gBAAe;AAC7D,SAASC,YAAY,EAAEC,iBAAiB,QAAQ,aAAY;AAE5D;;CAEC,GACD,OAAO,MAAMC,mBAAmBH,sBAAqB;AAErD;;CAEC,GACD,OAAO,MAAMI,kBAA0BL,OAAM;AAE7C;;;;CAIC,GACD,OAAO,MAAMM,gCAA6C,CAACC,MAAQJ,kBAAkBI,IAAIC,GAAG,CAACC,IAAI,EAAC;AAElG;;;;CAIC,GACD,OAAO,MAAMC,2BAAwC,CAACH,MACpDJ,kBAAkBI,IAAIC,GAAG,CAACC,IAAI,KAAKP,aAAaK,IAAIC,GAAG,CAACC,IAAI,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/access/builders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAI5C,eAAO,MAAM,qBAAqB,UACxB,KAAK,KAAG,MAsBf,CAAA;AAEH,eAAO,MAAM,MAAM,EAAE,MAAmB,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { hasAdminRole, hasSuperAdminRole, isAuthenticated } from './roles.js';
|
|
2
|
+
export const buildUserLinkedAccess = (opts)=>(ctx)=>{
|
|
3
|
+
const user = ctx.req.user ?? null;
|
|
4
|
+
if (!isAuthenticated(user)) {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
if (hasSuperAdminRole(user) || hasAdminRole(user)) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
if (!opts) {
|
|
11
|
+
return {
|
|
12
|
+
user: {
|
|
13
|
+
equals: user.id
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
user: {
|
|
19
|
+
equals: user.id
|
|
20
|
+
},
|
|
21
|
+
...opts
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export const anyone = ()=>true;
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=builders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/access/builders.ts"],"sourcesContent":["import type { Access, Where } from 'payload'\n\nimport { hasAdminRole, hasSuperAdminRole, isAuthenticated } from './roles.js'\n\nexport const buildUserLinkedAccess =\n (opts?: Where): Access =>\n (ctx) => {\n const user = ctx.req.user ?? null\n\n if (!isAuthenticated(user)) {\n return false\n }\n\n if (hasSuperAdminRole(user) || hasAdminRole(user)) {\n return true\n }\n\n if (!opts) {\n return {\n user: { equals: user!.id },\n } satisfies Where\n }\n\n return {\n user: { equals: user!.id },\n ...opts,\n } satisfies Where\n }\n\nexport const anyone: Access = () => true\n"],"names":["hasAdminRole","hasSuperAdminRole","isAuthenticated","buildUserLinkedAccess","opts","ctx","user","req","equals","id","anyone"],"mappings":"AAEA,SAASA,YAAY,EAAEC,iBAAiB,EAAEC,eAAe,QAAQ,aAAY;AAE7E,OAAO,MAAMC,wBACX,CAACC,OACD,CAACC;QACC,MAAMC,OAAOD,IAAIE,GAAG,CAACD,IAAI,IAAI;QAE7B,IAAI,CAACJ,gBAAgBI,OAAO;YAC1B,OAAO;QACT;QAEA,IAAIL,kBAAkBK,SAASN,aAAaM,OAAO;YACjD,OAAO;QACT;QAEA,IAAI,CAACF,MAAM;YACT,OAAO;gBACLE,MAAM;oBAAEE,QAAQF,KAAMG,EAAE;gBAAC;YAC3B;QACF;QAEA,OAAO;YACLH,MAAM;gBAAEE,QAAQF,KAAMG,EAAE;YAAC;YACzB,GAAGL,IAAI;QACT;IACF,EAAC;AAEH,OAAO,MAAMM,SAAiB,IAAM,KAAI"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/access/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/access/index.ts"],"sourcesContent":["export * from './accessors.js'\nexport * from './builders.js'\nexport * from './roles.js'\n"],"names":[],"mappings":"AAAA,cAAc,iBAAgB;AAC9B,cAAc,gBAAe;AAC7B,cAAc,aAAY"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { TypedUser } from 'payload';
|
|
2
|
+
import { UserRole } from '../collections/users/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Type-safe version of `user?.role`
|
|
5
|
+
*
|
|
6
|
+
* @param user
|
|
7
|
+
* @returns UserRole | undefined
|
|
8
|
+
*/
|
|
9
|
+
export declare const getRole: (user?: null | TypedUser) => undefined | UserRole;
|
|
10
|
+
/**
|
|
11
|
+
* Checks if the user is a super-admin
|
|
12
|
+
*
|
|
13
|
+
* @param user
|
|
14
|
+
* @returns boolean
|
|
15
|
+
*/
|
|
16
|
+
export declare const hasSuperAdminRole: (user: null | TypedUser | undefined) => boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Checks if the user is an admin
|
|
19
|
+
*
|
|
20
|
+
* @param user
|
|
21
|
+
* @returns boolean
|
|
22
|
+
*/
|
|
23
|
+
export declare const hasAdminRole: (user: null | TypedUser | undefined) => boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Checks if the user is a regular user
|
|
26
|
+
*
|
|
27
|
+
* @param user
|
|
28
|
+
* @returns boolean
|
|
29
|
+
*/
|
|
30
|
+
export declare const hasUserRole: (user: null | TypedUser | undefined) => boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Checks if the user is authenticated
|
|
33
|
+
*
|
|
34
|
+
* @param user
|
|
35
|
+
* @returns boolean
|
|
36
|
+
*/
|
|
37
|
+
export declare const isAuthenticated: (user: null | TypedUser | undefined) => boolean;
|
|
38
|
+
//# sourceMappingURL=roles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/access/roles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,OAAO,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AAExD;;;;;GAKG;AACH,eAAO,MAAM,OAAO,UAAW,IAAI,GAAG,SAAS,KAAG,SAAS,GAAG,QAAmC,CAAA;AAEjG;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,SAAU,IAAI,GAAG,SAAS,GAAG,SAAS,YAChC,CAAA;AAEpC;;;;;GAKG;AACH,eAAO,MAAM,YAAY,SAAU,IAAI,GAAG,SAAS,GAAG,SAAS,YAAkC,CAAA;AAEjG;;;;;GAKG;AACH,eAAO,MAAM,WAAW,SAAU,IAAI,GAAG,SAAS,GAAG,SAAS,YAAiC,CAAA;AAE/F;;;;;GAKG;AACH,eAAO,MAAM,eAAe,SAAU,IAAI,GAAG,SAAS,GAAG,SAAS,YAAkB,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { UserRole } from '../collections/users/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Type-safe version of `user?.role`
|
|
4
|
+
*
|
|
5
|
+
* @param user
|
|
6
|
+
* @returns UserRole | undefined
|
|
7
|
+
*/ export const getRole = (user)=>user?.role ?? undefined;
|
|
8
|
+
/**
|
|
9
|
+
* Checks if the user is a super-admin
|
|
10
|
+
*
|
|
11
|
+
* @param user
|
|
12
|
+
* @returns boolean
|
|
13
|
+
*/ export const hasSuperAdminRole = (user)=>user?.role === UserRole.SuperAdmin;
|
|
14
|
+
/**
|
|
15
|
+
* Checks if the user is an admin
|
|
16
|
+
*
|
|
17
|
+
* @param user
|
|
18
|
+
* @returns boolean
|
|
19
|
+
*/ export const hasAdminRole = (user)=>user?.role === UserRole.Admin;
|
|
20
|
+
/**
|
|
21
|
+
* Checks if the user is a regular user
|
|
22
|
+
*
|
|
23
|
+
* @param user
|
|
24
|
+
* @returns boolean
|
|
25
|
+
*/ export const hasUserRole = (user)=>user?.role === UserRole.User;
|
|
26
|
+
/**
|
|
27
|
+
* Checks if the user is authenticated
|
|
28
|
+
*
|
|
29
|
+
* @param user
|
|
30
|
+
* @returns boolean
|
|
31
|
+
*/ export const isAuthenticated = (user)=>Boolean(user);
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=roles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/access/roles.ts"],"sourcesContent":["import type { TypedUser } from 'payload'\n\nimport { UserRole } from '../collections/users/types.js'\n\n/**\n * Type-safe version of `user?.role`\n *\n * @param user\n * @returns UserRole | undefined\n */\nexport const getRole = (user?: null | TypedUser): undefined | UserRole => user?.role ?? undefined\n\n/**\n * Checks if the user is a super-admin\n *\n * @param user\n * @returns boolean\n */\nexport const hasSuperAdminRole = (user: null | TypedUser | undefined) =>\n user?.role === UserRole.SuperAdmin\n\n/**\n * Checks if the user is an admin\n *\n * @param user\n * @returns boolean\n */\nexport const hasAdminRole = (user: null | TypedUser | undefined) => user?.role === UserRole.Admin\n\n/**\n * Checks if the user is a regular user\n *\n * @param user\n * @returns boolean\n */\nexport const hasUserRole = (user: null | TypedUser | undefined) => user?.role === UserRole.User\n\n/**\n * Checks if the user is authenticated\n *\n * @param user\n * @returns boolean\n */\nexport const isAuthenticated = (user: null | TypedUser | undefined) => Boolean(user)\n"],"names":["UserRole","getRole","user","role","undefined","hasSuperAdminRole","SuperAdmin","hasAdminRole","Admin","hasUserRole","User","isAuthenticated","Boolean"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,gCAA+B;AAExD;;;;;CAKC,GACD,OAAO,MAAMC,UAAU,CAACC,OAAkDA,MAAMC,QAAQC,UAAS;AAEjG;;;;;CAKC,GACD,OAAO,MAAMC,oBAAoB,CAACH,OAChCA,MAAMC,SAASH,SAASM,UAAU,CAAA;AAEpC;;;;;CAKC,GACD,OAAO,MAAMC,eAAe,CAACL,OAAuCA,MAAMC,SAASH,SAASQ,KAAK,CAAA;AAEjG;;;;;CAKC,GACD,OAAO,MAAMC,cAAc,CAACP,OAAuCA,MAAMC,SAASH,SAASU,IAAI,CAAA;AAE/F;;;;;CAKC,GACD,OAAO,MAAMC,kBAAkB,CAACT,OAAuCU,QAAQV,MAAK"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Access } from 'payload';
|
|
2
|
+
/**
|
|
3
|
+
* Super-admins and admins can create users
|
|
4
|
+
*
|
|
5
|
+
* @param ctx
|
|
6
|
+
*/
|
|
7
|
+
export declare const createUserAccess: Access;
|
|
8
|
+
/**
|
|
9
|
+
* Super-admins can read all users
|
|
10
|
+
* Admins and regular users can read all users except super-admins
|
|
11
|
+
*
|
|
12
|
+
* @param ctx
|
|
13
|
+
*/
|
|
14
|
+
export declare const readUserAccess: Access;
|
|
15
|
+
/**
|
|
16
|
+
* Super-admins can update all users
|
|
17
|
+
* Admins can update all users except super-admins
|
|
18
|
+
* Regular users can only update themselves
|
|
19
|
+
*
|
|
20
|
+
* @param ctx
|
|
21
|
+
*/
|
|
22
|
+
export declare const updateUserAccess: Access;
|
|
23
|
+
/**
|
|
24
|
+
* Super-admins can delete all users
|
|
25
|
+
* Admins can delete all users except super-admins
|
|
26
|
+
*
|
|
27
|
+
* @param ctx
|
|
28
|
+
*/
|
|
29
|
+
export declare const deleteUserAccess: Access;
|
|
30
|
+
//# sourceMappingURL=access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../src/collections/users/access.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,SAAS,CAAA;AAU5C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAU9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,MAgB5B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAsB9B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAoB9B,CAAA"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { hasAdminRole, hasSuperAdminRole, hasUserRole, isAuthenticated } from '../../access/index.js';
|
|
2
|
+
import { UserRole } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Super-admins and admins can create users
|
|
5
|
+
*
|
|
6
|
+
* @param ctx
|
|
7
|
+
*/ export const createUserAccess = (ctx)=>{
|
|
8
|
+
if (!isAuthenticated(ctx.req.user)) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
if (hasSuperAdminRole(ctx.req.user) || hasAdminRole(ctx.req.user)) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
return false;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Super-admins can read all users
|
|
18
|
+
* Admins and regular users can read all users except super-admins
|
|
19
|
+
*
|
|
20
|
+
* @param ctx
|
|
21
|
+
*/ export const readUserAccess = (ctx)=>{
|
|
22
|
+
if (!isAuthenticated(ctx.req.user)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
if (hasSuperAdminRole(ctx.req.user)) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
if (hasAdminRole(ctx.req.user) || hasUserRole(ctx.req.user)) {
|
|
29
|
+
return {
|
|
30
|
+
role: {
|
|
31
|
+
not_equals: UserRole.SuperAdmin
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Super-admins can update all users
|
|
39
|
+
* Admins can update all users except super-admins
|
|
40
|
+
* Regular users can only update themselves
|
|
41
|
+
*
|
|
42
|
+
* @param ctx
|
|
43
|
+
*/ export const updateUserAccess = (ctx)=>{
|
|
44
|
+
if (!isAuthenticated(ctx.req.user)) {
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
if (hasSuperAdminRole(ctx.req.user)) {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
if (hasAdminRole(ctx.req.user)) {
|
|
51
|
+
return {
|
|
52
|
+
role: {
|
|
53
|
+
not_equals: UserRole.SuperAdmin
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (hasUserRole(ctx.req.user)) {
|
|
58
|
+
return {
|
|
59
|
+
id: {
|
|
60
|
+
equals: ctx.req.user.id
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Super-admins can delete all users
|
|
68
|
+
* Admins can delete all users except super-admins
|
|
69
|
+
*
|
|
70
|
+
* @param ctx
|
|
71
|
+
*/ export const deleteUserAccess = (ctx)=>{
|
|
72
|
+
if (!isAuthenticated(ctx.req.user)) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
if (hasSuperAdminRole(ctx.req.user)) {
|
|
76
|
+
// Super-admins should never be able to delete themselves.
|
|
77
|
+
return {
|
|
78
|
+
id: {
|
|
79
|
+
not_equals: ctx.req.user.id
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
if (hasAdminRole(ctx.req.user)) {
|
|
84
|
+
return {
|
|
85
|
+
id: {
|
|
86
|
+
not_equals: ctx.req.user.id
|
|
87
|
+
},
|
|
88
|
+
role: {
|
|
89
|
+
not_equals: UserRole.SuperAdmin
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
return false;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
//# sourceMappingURL=access.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/users/access.ts"],"sourcesContent":["import type { Access, Where } from 'payload'\n\nimport {\n hasAdminRole,\n hasSuperAdminRole,\n hasUserRole,\n isAuthenticated,\n} from '../../access/index.js'\nimport { UserRole } from './types.js'\n\n/**\n * Super-admins and admins can create users\n *\n * @param ctx\n */\nexport const createUserAccess: Access = (ctx) => {\n if (!isAuthenticated(ctx.req.user)) {\n return false\n }\n\n if (hasSuperAdminRole(ctx.req.user) || hasAdminRole(ctx.req.user)) {\n return true\n }\n\n return false\n}\n\n/**\n * Super-admins can read all users\n * Admins and regular users can read all users except super-admins\n *\n * @param ctx\n */\nexport const readUserAccess: Access = (ctx) => {\n if (!isAuthenticated(ctx.req.user)) {\n return false\n }\n\n if (hasSuperAdminRole(ctx.req.user)) {\n return true\n }\n\n if (hasAdminRole(ctx.req.user) || hasUserRole(ctx.req.user)) {\n return {\n role: { not_equals: UserRole.SuperAdmin },\n } as Where\n }\n\n return false\n}\n\n/**\n * Super-admins can update all users\n * Admins can update all users except super-admins\n * Regular users can only update themselves\n *\n * @param ctx\n */\nexport const updateUserAccess: Access = (ctx) => {\n if (!isAuthenticated(ctx.req.user)) {\n return false\n }\n\n if (hasSuperAdminRole(ctx.req.user)) {\n return true\n }\n\n if (hasAdminRole(ctx.req.user)) {\n return {\n role: { not_equals: UserRole.SuperAdmin },\n } as Where\n }\n\n if (hasUserRole(ctx.req.user)) {\n return {\n id: { equals: ctx.req.user!.id },\n } as Where\n }\n\n return false\n}\n\n/**\n * Super-admins can delete all users\n * Admins can delete all users except super-admins\n *\n * @param ctx\n */\nexport const deleteUserAccess: Access = (ctx) => {\n if (!isAuthenticated(ctx.req.user)) {\n return false\n }\n\n if (hasSuperAdminRole(ctx.req.user)) {\n // Super-admins should never be able to delete themselves.\n return {\n id: { not_equals: ctx.req.user!.id },\n } as Where\n }\n\n if (hasAdminRole(ctx.req.user)) {\n return {\n id: { not_equals: ctx.req.user!.id },\n role: { not_equals: UserRole.SuperAdmin },\n } as Where\n }\n\n return false\n}\n"],"names":["hasAdminRole","hasSuperAdminRole","hasUserRole","isAuthenticated","UserRole","createUserAccess","ctx","req","user","readUserAccess","role","not_equals","SuperAdmin","updateUserAccess","id","equals","deleteUserAccess"],"mappings":"AAEA,SACEA,YAAY,EACZC,iBAAiB,EACjBC,WAAW,EACXC,eAAe,QACV,wBAAuB;AAC9B,SAASC,QAAQ,QAAQ,aAAY;AAErC;;;;CAIC,GACD,OAAO,MAAMC,mBAA2B,CAACC;IACvC,IAAI,CAACH,gBAAgBG,IAAIC,GAAG,CAACC,IAAI,GAAG;QAClC,OAAO;IACT;IAEA,IAAIP,kBAAkBK,IAAIC,GAAG,CAACC,IAAI,KAAKR,aAAaM,IAAIC,GAAG,CAACC,IAAI,GAAG;QACjE,OAAO;IACT;IAEA,OAAO;AACT,EAAC;AAED;;;;;CAKC,GACD,OAAO,MAAMC,iBAAyB,CAACH;IACrC,IAAI,CAACH,gBAAgBG,IAAIC,GAAG,CAACC,IAAI,GAAG;QAClC,OAAO;IACT;IAEA,IAAIP,kBAAkBK,IAAIC,GAAG,CAACC,IAAI,GAAG;QACnC,OAAO;IACT;IAEA,IAAIR,aAAaM,IAAIC,GAAG,CAACC,IAAI,KAAKN,YAAYI,IAAIC,GAAG,CAACC,IAAI,GAAG;QAC3D,OAAO;YACLE,MAAM;gBAAEC,YAAYP,SAASQ,UAAU;YAAC;QAC1C;IACF;IAEA,OAAO;AACT,EAAC;AAED;;;;;;CAMC,GACD,OAAO,MAAMC,mBAA2B,CAACP;IACvC,IAAI,CAACH,gBAAgBG,IAAIC,GAAG,CAACC,IAAI,GAAG;QAClC,OAAO;IACT;IAEA,IAAIP,kBAAkBK,IAAIC,GAAG,CAACC,IAAI,GAAG;QACnC,OAAO;IACT;IAEA,IAAIR,aAAaM,IAAIC,GAAG,CAACC,IAAI,GAAG;QAC9B,OAAO;YACLE,MAAM;gBAAEC,YAAYP,SAASQ,UAAU;YAAC;QAC1C;IACF;IAEA,IAAIV,YAAYI,IAAIC,GAAG,CAACC,IAAI,GAAG;QAC7B,OAAO;YACLM,IAAI;gBAAEC,QAAQT,IAAIC,GAAG,CAACC,IAAI,CAAEM,EAAE;YAAC;QACjC;IACF;IAEA,OAAO;AACT,EAAC;AAED;;;;;CAKC,GACD,OAAO,MAAME,mBAA2B,CAACV;IACvC,IAAI,CAACH,gBAAgBG,IAAIC,GAAG,CAACC,IAAI,GAAG;QAClC,OAAO;IACT;IAEA,IAAIP,kBAAkBK,IAAIC,GAAG,CAACC,IAAI,GAAG;QACnC,0DAA0D;QAC1D,OAAO;YACLM,IAAI;gBAAEH,YAAYL,IAAIC,GAAG,CAACC,IAAI,CAAEM,EAAE;YAAC;QACrC;IACF;IAEA,IAAId,aAAaM,IAAIC,GAAG,CAACC,IAAI,GAAG;QAC9B,OAAO;YACLM,IAAI;gBAAEH,YAAYL,IAAIC,GAAG,CAACC,IAAI,CAAEM,EAAE;YAAC;YACnCJ,MAAM;gBAAEC,YAAYP,SAASQ,UAAU;YAAC;QAC1C;IACF;IAEA,OAAO;AACT,EAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type CollectionConfig } from 'payload';
|
|
2
|
+
import type { UserOverrides } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Default config for the Users Collection
|
|
5
|
+
*
|
|
6
|
+
* @param overrides
|
|
7
|
+
*/
|
|
8
|
+
export declare const getUsersConfig: (overrides: UserOverrides) => CollectionConfig;
|
|
9
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/collections/users/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,gBAAgB,EAAa,MAAM,SAAS,CAAA;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAM/C;;;;GAIG;AACH,eAAO,MAAM,cAAc,cAAe,aAAa,KAAG,gBA0CzD,CAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { deepMerge } from 'payload';
|
|
2
|
+
import { createUserAccess, deleteUserAccess, readUserAccess, updateUserAccess } from './access.js';
|
|
3
|
+
import { getUserFields } from './fields.js';
|
|
4
|
+
import { firstUserIsAdmin, usersBeforeCreateOperation } from './hooks.js';
|
|
5
|
+
/**
|
|
6
|
+
* Default config for the Users Collection
|
|
7
|
+
*
|
|
8
|
+
* @param overrides
|
|
9
|
+
*/ export const getUsersConfig = (overrides)=>{
|
|
10
|
+
const config = deepMerge({
|
|
11
|
+
slug: 'users',
|
|
12
|
+
access: {
|
|
13
|
+
create: createUserAccess,
|
|
14
|
+
delete: deleteUserAccess,
|
|
15
|
+
read: readUserAccess,
|
|
16
|
+
update: updateUserAccess
|
|
17
|
+
},
|
|
18
|
+
admin: {
|
|
19
|
+
defaultColumns: [
|
|
20
|
+
'email',
|
|
21
|
+
'role'
|
|
22
|
+
],
|
|
23
|
+
group: {
|
|
24
|
+
de: 'Benutzer Verwaltung',
|
|
25
|
+
en: 'User Management'
|
|
26
|
+
},
|
|
27
|
+
useAsTitle: 'email'
|
|
28
|
+
},
|
|
29
|
+
auth: true,
|
|
30
|
+
fields: [
|
|
31
|
+
...getUserFields(overrides.fieldOverrides),
|
|
32
|
+
...overrides?.additionalFields ?? []
|
|
33
|
+
],
|
|
34
|
+
hooks: {
|
|
35
|
+
beforeOperation: [
|
|
36
|
+
usersBeforeCreateOperation
|
|
37
|
+
],
|
|
38
|
+
beforeValidate: [
|
|
39
|
+
firstUserIsAdmin
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
labels: {
|
|
43
|
+
plural: ({ t })=>{
|
|
44
|
+
return t('loadspark-core:users:labels:plural');
|
|
45
|
+
},
|
|
46
|
+
singular: ({ t })=>{
|
|
47
|
+
return t('loadspark-core:users:labels:singular');
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
timestamps: true
|
|
51
|
+
}, overrides.collectionOverrides ?? {});
|
|
52
|
+
return config;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/users/config.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\nimport type { loadsparkCoreTranslationsKeys } from 'src/translations/index.js'\n\nimport { type CollectionConfig, deepMerge } from 'payload'\n\nimport type { UserOverrides } from './types.js'\n\nimport { createUserAccess, deleteUserAccess, readUserAccess, updateUserAccess } from './access.js'\nimport { getUserFields } from './fields.js'\nimport { firstUserIsAdmin, usersBeforeCreateOperation } from './hooks.js'\n\n/**\n * Default config for the Users Collection\n *\n * @param overrides\n */\nexport const getUsersConfig = (overrides: UserOverrides): CollectionConfig => {\n const config = deepMerge<CollectionConfig, UserOverrides['collectionOverrides']>(\n {\n slug: 'users',\n access: {\n create: createUserAccess,\n delete: deleteUserAccess,\n read: readUserAccess,\n update: updateUserAccess,\n },\n admin: {\n defaultColumns: ['email', 'role'],\n group: {\n de: 'Benutzer Verwaltung',\n en: 'User Management',\n },\n useAsTitle: 'email',\n },\n auth: true,\n fields: [...getUserFields(overrides.fieldOverrides), ...(overrides?.additionalFields ?? [])],\n hooks: {\n beforeOperation: [usersBeforeCreateOperation],\n beforeValidate: [firstUserIsAdmin],\n },\n labels: {\n plural: ({ t }) => {\n return (t as TFunction<loadsparkCoreTranslationsKeys>)(\n 'loadspark-core:users:labels:plural',\n )\n },\n singular: ({ t }) => {\n return (t as TFunction<loadsparkCoreTranslationsKeys>)(\n 'loadspark-core:users:labels:singular',\n )\n },\n },\n timestamps: true,\n },\n overrides.collectionOverrides ?? {},\n )\n\n return config\n}\n"],"names":["deepMerge","createUserAccess","deleteUserAccess","readUserAccess","updateUserAccess","getUserFields","firstUserIsAdmin","usersBeforeCreateOperation","getUsersConfig","overrides","config","slug","access","create","delete","read","update","admin","defaultColumns","group","de","en","useAsTitle","auth","fields","fieldOverrides","additionalFields","hooks","beforeOperation","beforeValidate","labels","plural","t","singular","timestamps","collectionOverrides"],"mappings":"AAGA,SAAgCA,SAAS,QAAQ,UAAS;AAI1D,SAASC,gBAAgB,EAAEC,gBAAgB,EAAEC,cAAc,EAAEC,gBAAgB,QAAQ,cAAa;AAClG,SAASC,aAAa,QAAQ,cAAa;AAC3C,SAASC,gBAAgB,EAAEC,0BAA0B,QAAQ,aAAY;AAEzE;;;;CAIC,GACD,OAAO,MAAMC,iBAAiB,CAACC;IAC7B,MAAMC,SAASV,UACb;QACEW,MAAM;QACNC,QAAQ;YACNC,QAAQZ;YACRa,QAAQZ;YACRa,MAAMZ;YACNa,QAAQZ;QACV;QACAa,OAAO;YACLC,gBAAgB;gBAAC;gBAAS;aAAO;YACjCC,OAAO;gBACLC,IAAI;gBACJC,IAAI;YACN;YACAC,YAAY;QACd;QACAC,MAAM;QACNC,QAAQ;eAAInB,cAAcI,UAAUgB,cAAc;eAAOhB,WAAWiB,oBAAoB,EAAE;SAAE;QAC5FC,OAAO;YACLC,iBAAiB;gBAACrB;aAA2B;YAC7CsB,gBAAgB;gBAACvB;aAAiB;QACpC;QACAwB,QAAQ;YACNC,QAAQ,CAAC,EAAEC,CAAC,EAAE;gBACZ,OAAO,AAACA,EACN;YAEJ;YACAC,UAAU,CAAC,EAAED,CAAC,EAAE;gBACd,OAAO,AAACA,EACN;YAEJ;QACF;QACAE,YAAY;IACd,GACAzB,UAAU0B,mBAAmB,IAAI,CAAC;IAGpC,OAAOzB;AACT,EAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fields.d.ts","sourceRoot":"","sources":["../../../src/collections/users/fields.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,KAAK,EAA8C,MAAM,SAAS,CAAA;AAG3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAKpD,eAAO,MAAM,aAAa,eAAgB,kBAAkB,KAAG,KAAK,EAiHnE,CAAA"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { deepMerge } from 'payload';
|
|
2
|
+
import { hasAdminRole, hasSuperAdminRole } from '../../access/index.js';
|
|
3
|
+
import { UserRole } from './types.js';
|
|
4
|
+
export const getUserFields = (overrides)=>{
|
|
5
|
+
const roleField = deepMerge({
|
|
6
|
+
name: 'role',
|
|
7
|
+
type: 'select',
|
|
8
|
+
access: {
|
|
9
|
+
create: (ctx)=>{
|
|
10
|
+
if (!ctx.data?.role) {
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
if (hasSuperAdminRole(ctx.req.user)) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
if (hasAdminRole(ctx.req.user)) {
|
|
17
|
+
return ctx.data.role === UserRole.User;
|
|
18
|
+
}
|
|
19
|
+
return false;
|
|
20
|
+
},
|
|
21
|
+
update: (ctx)=>{
|
|
22
|
+
if (!ctx.doc) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
if (!hasSuperAdminRole(ctx.req.user)) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
// Super-admins should never be able to update their own role.
|
|
29
|
+
if (ctx.doc.id === ctx.req.user?.id) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
defaultValue: 'user',
|
|
36
|
+
label: ({ t })=>{
|
|
37
|
+
return t('loadspark-core:users:roles:label');
|
|
38
|
+
},
|
|
39
|
+
options: [
|
|
40
|
+
{
|
|
41
|
+
label: ({ t })=>t('loadspark-core:users:roles:options:user'),
|
|
42
|
+
value: UserRole.User
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
label: ({ t })=>t('loadspark-core:users:roles:options:admin'),
|
|
46
|
+
value: UserRole.Admin
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
label: ({ t })=>t('loadspark-core:users:roles:options:superAdmin'),
|
|
50
|
+
value: UserRole.SuperAdmin
|
|
51
|
+
}
|
|
52
|
+
],
|
|
53
|
+
required: true
|
|
54
|
+
}, overrides?.roleOverrides ?? {});
|
|
55
|
+
const generalTab = deepMerge({
|
|
56
|
+
custom: {
|
|
57
|
+
loadspark: {
|
|
58
|
+
core: {
|
|
59
|
+
users: {
|
|
60
|
+
wrapper: {
|
|
61
|
+
isTab: true,
|
|
62
|
+
tabName: 'general'
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
fields: [],
|
|
69
|
+
label: {
|
|
70
|
+
de: 'Allgemein',
|
|
71
|
+
en: 'General'
|
|
72
|
+
}
|
|
73
|
+
}, overrides?.generalTabOverrides ?? {});
|
|
74
|
+
const loadsparkTabField = deepMerge({
|
|
75
|
+
type: 'tabs',
|
|
76
|
+
custom: {
|
|
77
|
+
loadspark: {
|
|
78
|
+
core: {
|
|
79
|
+
users: {
|
|
80
|
+
wrapper: {
|
|
81
|
+
isWrapper: true
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
},
|
|
87
|
+
tabs: [
|
|
88
|
+
generalTab
|
|
89
|
+
]
|
|
90
|
+
}, overrides?.tabOverrides ?? {});
|
|
91
|
+
return [
|
|
92
|
+
roleField,
|
|
93
|
+
loadsparkTabField
|
|
94
|
+
];
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
//# sourceMappingURL=fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/users/fields.ts"],"sourcesContent":["import type { TFunction } from '@payloadcms/translations'\n\nimport { deepMerge, type Field, type SelectField, type Tab, type TabsField } from 'payload'\n\nimport type { loadsparkCoreTranslationsKeys } from '../../translations/index.js'\nimport type { UserFieldOverrides } from './types.js'\n\nimport { hasAdminRole, hasSuperAdminRole } from '../../access/index.js'\nimport { UserRole } from './types.js'\n\nexport const getUserFields = (overrides?: UserFieldOverrides): Field[] => {\n const roleField = deepMerge<SelectField, UserFieldOverrides['roleOverrides']>(\n {\n name: 'role',\n type: 'select',\n access: {\n create: (ctx) => {\n if (!ctx.data?.role) {\n return false\n }\n\n if (hasSuperAdminRole(ctx.req.user)) {\n return true\n }\n\n if (hasAdminRole(ctx.req.user)) {\n return ctx.data.role === UserRole.User\n }\n\n return false\n },\n update: (ctx) => {\n if (!ctx.doc) {\n return false\n }\n\n if (!hasSuperAdminRole(ctx.req.user)) {\n return false\n }\n\n // Super-admins should never be able to update their own role.\n if (ctx.doc.id === ctx.req.user?.id) {\n return false\n }\n\n return true\n },\n },\n defaultValue: 'user',\n label: ({ t }) => {\n return (t as TFunction<loadsparkCoreTranslationsKeys>)('loadspark-core:users:roles:label')\n },\n options: [\n {\n label: ({ t }) =>\n (t as TFunction<loadsparkCoreTranslationsKeys>)(\n 'loadspark-core:users:roles:options:user',\n ),\n value: UserRole.User,\n },\n {\n label: ({ t }) =>\n (t as TFunction<loadsparkCoreTranslationsKeys>)(\n 'loadspark-core:users:roles:options:admin',\n ),\n value: UserRole.Admin,\n },\n {\n label: ({ t }) =>\n (t as TFunction<loadsparkCoreTranslationsKeys>)(\n 'loadspark-core:users:roles:options:superAdmin',\n ),\n value: UserRole.SuperAdmin,\n },\n ],\n required: true,\n },\n overrides?.roleOverrides ?? {},\n )\n\n const generalTab: Tab = deepMerge<Tab, UserFieldOverrides['generalTabOverrides']>(\n {\n custom: {\n loadspark: {\n core: {\n users: {\n wrapper: {\n isTab: true,\n tabName: 'general',\n },\n },\n },\n },\n },\n fields: [],\n label: {\n de: 'Allgemein',\n en: 'General',\n },\n },\n overrides?.generalTabOverrides ?? {},\n )\n\n const loadsparkTabField: TabsField = deepMerge<TabsField, UserFieldOverrides['tabOverrides']>(\n {\n type: 'tabs',\n custom: {\n loadspark: {\n core: {\n users: {\n wrapper: {\n isWrapper: true,\n },\n },\n },\n },\n },\n tabs: [generalTab],\n },\n overrides?.tabOverrides ?? {},\n )\n\n return [roleField, loadsparkTabField]\n}\n"],"names":["deepMerge","hasAdminRole","hasSuperAdminRole","UserRole","getUserFields","overrides","roleField","name","type","access","create","ctx","data","role","req","user","User","update","doc","id","defaultValue","label","t","options","value","Admin","SuperAdmin","required","roleOverrides","generalTab","custom","loadspark","core","users","wrapper","isTab","tabName","fields","de","en","generalTabOverrides","loadsparkTabField","isWrapper","tabs","tabOverrides"],"mappings":"AAEA,SAASA,SAAS,QAAgE,UAAS;AAK3F,SAASC,YAAY,EAAEC,iBAAiB,QAAQ,wBAAuB;AACvE,SAASC,QAAQ,QAAQ,aAAY;AAErC,OAAO,MAAMC,gBAAgB,CAACC;IAC5B,MAAMC,YAAYN,UAChB;QACEO,MAAM;QACNC,MAAM;QACNC,QAAQ;YACNC,QAAQ,CAACC;gBACP,IAAI,CAACA,IAAIC,IAAI,EAAEC,MAAM;oBACnB,OAAO;gBACT;gBAEA,IAAIX,kBAAkBS,IAAIG,GAAG,CAACC,IAAI,GAAG;oBACnC,OAAO;gBACT;gBAEA,IAAId,aAAaU,IAAIG,GAAG,CAACC,IAAI,GAAG;oBAC9B,OAAOJ,IAAIC,IAAI,CAACC,IAAI,KAAKV,SAASa,IAAI;gBACxC;gBAEA,OAAO;YACT;YACAC,QAAQ,CAACN;gBACP,IAAI,CAACA,IAAIO,GAAG,EAAE;oBACZ,OAAO;gBACT;gBAEA,IAAI,CAAChB,kBAAkBS,IAAIG,GAAG,CAACC,IAAI,GAAG;oBACpC,OAAO;gBACT;gBAEA,8DAA8D;gBAC9D,IAAIJ,IAAIO,GAAG,CAACC,EAAE,KAAKR,IAAIG,GAAG,CAACC,IAAI,EAAEI,IAAI;oBACnC,OAAO;gBACT;gBAEA,OAAO;YACT;QACF;QACAC,cAAc;QACdC,OAAO,CAAC,EAAEC,CAAC,EAAE;YACX,OAAO,AAACA,EAA+C;QACzD;QACAC,SAAS;YACP;gBACEF,OAAO,CAAC,EAAEC,CAAC,EAAE,GACX,AAACA,EACC;gBAEJE,OAAOrB,SAASa,IAAI;YACtB;YACA;gBACEK,OAAO,CAAC,EAAEC,CAAC,EAAE,GACX,AAACA,EACC;gBAEJE,OAAOrB,SAASsB,KAAK;YACvB;YACA;gBACEJ,OAAO,CAAC,EAAEC,CAAC,EAAE,GACX,AAACA,EACC;gBAEJE,OAAOrB,SAASuB,UAAU;YAC5B;SACD;QACDC,UAAU;IACZ,GACAtB,WAAWuB,iBAAiB,CAAC;IAG/B,MAAMC,aAAkB7B,UACtB;QACE8B,QAAQ;YACNC,WAAW;gBACTC,MAAM;oBACJC,OAAO;wBACLC,SAAS;4BACPC,OAAO;4BACPC,SAAS;wBACX;oBACF;gBACF;YACF;QACF;QACAC,QAAQ,EAAE;QACVhB,OAAO;YACLiB,IAAI;YACJC,IAAI;QACN;IACF,GACAlC,WAAWmC,uBAAuB,CAAC;IAGrC,MAAMC,oBAA+BzC,UACnC;QACEQ,MAAM;QACNsB,QAAQ;YACNC,WAAW;gBACTC,MAAM;oBACJC,OAAO;wBACLC,SAAS;4BACPQ,WAAW;wBACb;oBACF;gBACF;YACF;QACF;QACAC,MAAM;YAACd;SAAW;IACpB,GACAxB,WAAWuC,gBAAgB,CAAC;IAG9B,OAAO;QAACtC;QAAWmC;KAAkB;AACvC,EAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CollectionBeforeOperationHook, CollectionBeforeValidateHook } from 'payload';
|
|
2
|
+
/**
|
|
3
|
+
* Hook that automatically sets the first user as a super-admin.
|
|
4
|
+
*
|
|
5
|
+
* When creating the first user in the system (when userCount is 0),
|
|
6
|
+
* this hook automatically sets their role to 'super-admin'.
|
|
7
|
+
*
|
|
8
|
+
* @param data - The user data being validated
|
|
9
|
+
* @param operation - The operation being performed ('create' | 'update')
|
|
10
|
+
* @param req - The request object containing context
|
|
11
|
+
* @returns The modified user data, or undefined if no changes needed
|
|
12
|
+
*/
|
|
13
|
+
export declare const firstUserIsAdmin: CollectionBeforeValidateHook;
|
|
14
|
+
/**
|
|
15
|
+
* Hook that populates the request context with the total user count.
|
|
16
|
+
*
|
|
17
|
+
* This hook runs before create operations and sets `req.context.userCount`
|
|
18
|
+
* to the total number of users in the database. This is used by other hooks
|
|
19
|
+
* (like `firstUserIsAdmin`) to determine if this is the first user.
|
|
20
|
+
*
|
|
21
|
+
* @param operation - The operation being performed
|
|
22
|
+
* @param req - The request object where context will be populated
|
|
23
|
+
*/
|
|
24
|
+
export declare const usersBeforeCreateOperation: CollectionBeforeOperationHook;
|
|
25
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/collections/users/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAI1F;;;;;;;;;;GAUG;AACH,eAAO,MAAM,gBAAgB,EAAE,4BAqB9B,CAAA;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,0BAA0B,EAAE,6BAQxC,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { UserRole } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Hook that automatically sets the first user as a super-admin.
|
|
4
|
+
*
|
|
5
|
+
* When creating the first user in the system (when userCount is 0),
|
|
6
|
+
* this hook automatically sets their role to 'super-admin'.
|
|
7
|
+
*
|
|
8
|
+
* @param data - The user data being validated
|
|
9
|
+
* @param operation - The operation being performed ('create' | 'update')
|
|
10
|
+
* @param req - The request object containing context
|
|
11
|
+
* @returns The modified user data, or undefined if no changes needed
|
|
12
|
+
*/ export const firstUserIsAdmin = ({ data, operation, req })=>{
|
|
13
|
+
if (!data) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
const userCount = req.context.userCount;
|
|
17
|
+
if (typeof userCount !== 'number') {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
switch(operation){
|
|
21
|
+
case 'create':
|
|
22
|
+
// Automatically set first user as super-admin
|
|
23
|
+
if (userCount === 0 && data.role !== UserRole.SuperAdmin) {
|
|
24
|
+
data.role = UserRole.SuperAdmin;
|
|
25
|
+
}
|
|
26
|
+
return data;
|
|
27
|
+
}
|
|
28
|
+
return data;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Hook that populates the request context with the total user count.
|
|
32
|
+
*
|
|
33
|
+
* This hook runs before create operations and sets `req.context.userCount`
|
|
34
|
+
* to the total number of users in the database. This is used by other hooks
|
|
35
|
+
* (like `firstUserIsAdmin`) to determine if this is the first user.
|
|
36
|
+
*
|
|
37
|
+
* @param operation - The operation being performed
|
|
38
|
+
* @param req - The request object where context will be populated
|
|
39
|
+
*/ export const usersBeforeCreateOperation = async ({ operation, req })=>{
|
|
40
|
+
if ([
|
|
41
|
+
'create'
|
|
42
|
+
].includes(operation)) {
|
|
43
|
+
const userCount = await req.payload.count({
|
|
44
|
+
collection: 'users'
|
|
45
|
+
});
|
|
46
|
+
req.context.userCount = userCount.totalDocs;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/users/hooks.ts"],"sourcesContent":["import type { CollectionBeforeOperationHook, CollectionBeforeValidateHook } from 'payload'\n\nimport { UserRole } from './types.js'\n\n/**\n * Hook that automatically sets the first user as a super-admin.\n *\n * When creating the first user in the system (when userCount is 0),\n * this hook automatically sets their role to 'super-admin'.\n *\n * @param data - The user data being validated\n * @param operation - The operation being performed ('create' | 'update')\n * @param req - The request object containing context\n * @returns The modified user data, or undefined if no changes needed\n */\nexport const firstUserIsAdmin: CollectionBeforeValidateHook = ({ data, operation, req }) => {\n if (!data) {\n return\n }\n\n const userCount = req.context.userCount\n\n if (typeof userCount !== 'number') {\n return\n }\n\n switch (operation) {\n case 'create':\n // Automatically set first user as super-admin\n if (userCount === 0 && data.role !== UserRole.SuperAdmin) {\n data.role = UserRole.SuperAdmin\n }\n return data\n }\n\n return data\n}\n\n/**\n * Hook that populates the request context with the total user count.\n *\n * This hook runs before create operations and sets `req.context.userCount`\n * to the total number of users in the database. This is used by other hooks\n * (like `firstUserIsAdmin`) to determine if this is the first user.\n *\n * @param operation - The operation being performed\n * @param req - The request object where context will be populated\n */\nexport const usersBeforeCreateOperation: CollectionBeforeOperationHook = async ({\n operation,\n req,\n}) => {\n if (['create'].includes(operation)) {\n const userCount = await req.payload.count({ collection: 'users' })\n req.context.userCount = userCount.totalDocs\n }\n}\n"],"names":["UserRole","firstUserIsAdmin","data","operation","req","userCount","context","role","SuperAdmin","usersBeforeCreateOperation","includes","payload","count","collection","totalDocs"],"mappings":"AAEA,SAASA,QAAQ,QAAQ,aAAY;AAErC;;;;;;;;;;CAUC,GACD,OAAO,MAAMC,mBAAiD,CAAC,EAAEC,IAAI,EAAEC,SAAS,EAAEC,GAAG,EAAE;IACrF,IAAI,CAACF,MAAM;QACT;IACF;IAEA,MAAMG,YAAYD,IAAIE,OAAO,CAACD,SAAS;IAEvC,IAAI,OAAOA,cAAc,UAAU;QACjC;IACF;IAEA,OAAQF;QACN,KAAK;YACH,8CAA8C;YAC9C,IAAIE,cAAc,KAAKH,KAAKK,IAAI,KAAKP,SAASQ,UAAU,EAAE;gBACxDN,KAAKK,IAAI,GAAGP,SAASQ,UAAU;YACjC;YACA,OAAON;IACX;IAEA,OAAOA;AACT,EAAC;AAED;;;;;;;;;CASC,GACD,OAAO,MAAMO,6BAA4D,OAAO,EAC9EN,SAAS,EACTC,GAAG,EACJ;IACC,IAAI;QAAC;KAAS,CAACM,QAAQ,CAACP,YAAY;QAClC,MAAME,YAAY,MAAMD,IAAIO,OAAO,CAACC,KAAK,CAAC;YAAEC,YAAY;QAAQ;QAChET,IAAIE,OAAO,CAACD,SAAS,GAAGA,UAAUS,SAAS;IAC7C;AACF,EAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CollectionConfig, Field, SelectField, Tab, TabsField } from 'payload';
|
|
2
|
+
export type UserFieldOverrides = {
|
|
3
|
+
generalTabOverrides?: Omit<Tab, 'name' | 'type'>;
|
|
4
|
+
roleOverrides?: Omit<SelectField, 'hasMany' | 'name' | 'required' | 'type'>;
|
|
5
|
+
tabOverrides?: Omit<TabsField, 'label' | 'name' | 'type'>;
|
|
6
|
+
};
|
|
7
|
+
export type UserCollectionOverrides = Omit<CollectionConfig, 'auth' | 'fields' | 'slug'>;
|
|
8
|
+
export type UserOverrides = {
|
|
9
|
+
additionalFields?: Field[];
|
|
10
|
+
collectionOverrides?: UserCollectionOverrides;
|
|
11
|
+
fieldOverrides?: UserFieldOverrides;
|
|
12
|
+
};
|
|
13
|
+
export declare enum UserRole {
|
|
14
|
+
Admin = "admin",
|
|
15
|
+
SuperAdmin = "super-admin",
|
|
16
|
+
User = "user"
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/collections/users/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAEnF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,mBAAmB,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;IAChD,aAAa,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,SAAS,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC,CAAA;IAC3E,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC,CAAA;CAC1D,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAA;AACxF,MAAM,MAAM,aAAa,GAAG;IAC1B,gBAAgB,CAAC,EAAE,KAAK,EAAE,CAAA;IAC1B,mBAAmB,CAAC,EAAE,uBAAuB,CAAA;IAC7C,cAAc,CAAC,EAAE,kBAAkB,CAAA;CACpC,CAAA;AAED,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,UAAU,gBAAgB;IAC1B,IAAI,SAAS;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/collections/users/types.ts"],"sourcesContent":["import type { CollectionConfig, Field, SelectField, Tab, TabsField } from 'payload'\n\nexport type UserFieldOverrides = {\n generalTabOverrides?: Omit<Tab, 'name' | 'type'>\n roleOverrides?: Omit<SelectField, 'hasMany' | 'name' | 'required' | 'type'>\n tabOverrides?: Omit<TabsField, 'label' | 'name' | 'type'>\n}\n\nexport type UserCollectionOverrides = Omit<CollectionConfig, 'auth' | 'fields' | 'slug'>\nexport type UserOverrides = {\n additionalFields?: Field[]\n collectionOverrides?: UserCollectionOverrides\n fieldOverrides?: UserFieldOverrides\n}\n\nexport enum UserRole {\n Admin = 'admin',\n SuperAdmin = 'super-admin',\n User = 'user',\n}\n"],"names":["UserRole"],"mappings":"AAeA,OAAO,IAAA,AAAKA,kCAAAA;;;;WAAAA;MAIX"}
|