{"version":3,"file":"engine.mjs","sources":["../../../../server/src/services/permissions/engine.ts"],"sourcesContent":["import { getService } from '../../utils';\n\n/**\n * @typedef {object} WillRegisterPermissionContext\n * @property {Permission} permission\n * @property {object} user\n * @property {object} condition\n */\n\n/**\n * Locales property handler for the permission engine\n * Add the has-locale-access condition if the locales property is defined\n * @param {WillRegisterPermissionContext} context\n */\nconst willRegisterPermission = (context: any) => {\n const { permission, condition, user } = context;\n const { subject, properties } = permission;\n\n const isSuperAdmin = strapi.service('admin::role').hasSuperAdminRole(user);\n\n if (isSuperAdmin) {\n return;\n }\n\n const { locales } = properties || {};\n const { isLocalizedContentType } = getService('content-types');\n\n // If there is no subject defined, ignore the permission\n if (!subject) {\n return;\n }\n\n const ct = strapi.contentTypes[subject];\n\n // If the subject exists but isn't localized, ignore the permission\n if (!isLocalizedContentType(ct)) {\n return;\n }\n\n // If the subject is localized but the locales property is null (access to all locales), ignore the permission\n if (locales === null) {\n return;\n }\n\n condition.and({\n locale: {\n $in: locales || [],\n },\n });\n};\n\nconst registerI18nPermissionsHandlers = () => {\n const { engine } = strapi.service('admin::permission');\n\n engine.hooks['before-register.permission'].register(willRegisterPermission);\n};\n\nexport default {\n willRegisterPermission,\n registerI18nPermissionsHandlers,\n};\n"],"names":["willRegisterPermission","context","permission","condition","user","subject","properties","isSuperAdmin","strapi","service","hasSuperAdminRole","locales","isLocalizedContentType","getService","ct","contentTypes","and","locale","$in","registerI18nPermissionsHandlers","engine","hooks","register"],"mappings":";;AAEA;;;;;;;;;IAYA,MAAMA,yBAAyB,CAACC,OAAAA,GAAAA;AAC9B,IAAA,MAAM,EAAEC,UAAU,EAAEC,SAAS,EAAEC,IAAI,EAAE,GAAGH,OAAAA;AACxC,IAAA,MAAM,EAAEI,OAAO,EAAEC,UAAU,EAAE,GAAGJ,UAAAA;AAEhC,IAAA,MAAMK,eAAeC,MAAAA,CAAOC,OAAO,CAAC,aAAA,CAAA,CAAeC,iBAAiB,CAACN,IAAAA,CAAAA;AAErE,IAAA,IAAIG,YAAAA,EAAc;AAChB,QAAA;AACF,IAAA;AAEA,IAAA,MAAM,EAAEI,OAAO,EAAE,GAAGL,cAAc,EAAC;AACnC,IAAA,MAAM,EAAEM,sBAAsB,EAAE,GAAGC,UAAAA,CAAW,eAAA,CAAA;;AAG9C,IAAA,IAAI,CAACR,OAAAA,EAAS;AACZ,QAAA;AACF,IAAA;AAEA,IAAA,MAAMS,EAAAA,GAAKN,MAAAA,CAAOO,YAAY,CAACV,OAAAA,CAAQ;;IAGvC,IAAI,CAACO,uBAAuBE,EAAAA,CAAAA,EAAK;AAC/B,QAAA;AACF,IAAA;;AAGA,IAAA,IAAIH,YAAY,IAAA,EAAM;AACpB,QAAA;AACF,IAAA;AAEAR,IAAAA,SAAAA,CAAUa,GAAG,CAAC;QACZC,MAAAA,EAAQ;AACNC,YAAAA,GAAAA,EAAKP,WAAW;AAClB;AACF,KAAA,CAAA;AACF,CAAA;AAEA,MAAMQ,+BAAAA,GAAkC,IAAA;AACtC,IAAA,MAAM,EAAEC,MAAM,EAAE,GAAGZ,MAAAA,CAAOC,OAAO,CAAC,mBAAA,CAAA;AAElCW,IAAAA,MAAAA,CAAOC,KAAK,CAAC,4BAAA,CAA6B,CAACC,QAAQ,CAACtB,sBAAAA,CAAAA;AACtD,CAAA;AAEA,oBAAe;AACbA,IAAAA,sBAAAA;AACAmB,IAAAA;AACF,CAAA;;;;"}