{"version":3,"file":"find-entity-and-check-permissions.mjs","sources":["../../../../server/src/controllers/utils/find-entity-and-check-permissions.ts"],"sourcesContent":["import _ from 'lodash';\nimport { errors, contentTypes as contentTypesUtils } from '@strapi/utils';\nimport { getService } from '../../utils';\n\nconst findEntityAndCheckPermissions = async (\n  ability: unknown,\n  action: string,\n  model: string,\n  id: string | number\n) => {\n  const file = await getService('upload').findOne(id, [\n    contentTypesUtils.constants.CREATED_BY_ATTRIBUTE,\n    'folder',\n  ]);\n\n  if (_.isNil(file)) {\n    throw new errors.NotFoundError();\n  }\n\n  const pm = strapi\n    .service('admin::permission')\n    .createPermissionsManager({ ability, action, model });\n\n  const creatorId = _.get(file, [contentTypesUtils.constants.CREATED_BY_ATTRIBUTE, 'id']);\n  const author = creatorId\n    ? await strapi.service('admin::user').findOne(creatorId, ['roles'])\n    : null;\n\n  const fileWithRoles = _.set(_.cloneDeep(file), 'createdBy', author);\n\n  if (pm.ability.cannot(pm.action, pm.toSubject(fileWithRoles))) {\n    throw new errors.ForbiddenError();\n  }\n\n  return { pm, file };\n};\n\nexport { findEntityAndCheckPermissions };\n"],"names":["findEntityAndCheckPermissions","ability","action","model","id","file","getService","findOne","contentTypesUtils","constants","CREATED_BY_ATTRIBUTE","_","isNil","errors","NotFoundError","pm","strapi","service","createPermissionsManager","creatorId","get","author","fileWithRoles","set","cloneDeep","cannot","toSubject","ForbiddenError"],"mappings":";;;;AAIA,MAAMA,6BAAAA,GAAgC,OACpCC,OAAAA,EACAC,MAAAA,EACAC,KAAAA,EACAC,EAAAA,GAAAA;AAEA,IAAA,MAAMC,OAAO,MAAMC,UAAAA,CAAW,QAAA,CAAA,CAAUC,OAAO,CAACH,EAAAA,EAAI;QAClDI,YAAAA,CAAkBC,SAAS,CAACC,oBAAoB;AAChD,QAAA;AACD,KAAA,CAAA;IAED,IAAIC,CAAAA,CAAEC,KAAK,CAACP,IAAAA,CAAAA,EAAO;QACjB,MAAM,IAAIQ,OAAOC,aAAa,EAAA;AAChC,IAAA;AAEA,IAAA,MAAMC,KAAKC,MAAAA,CACRC,OAAO,CAAC,mBAAA,CAAA,CACRC,wBAAwB,CAAC;AAAEjB,QAAAA,OAAAA;AAASC,QAAAA,MAAAA;AAAQC,QAAAA;AAAM,KAAA,CAAA;AAErD,IAAA,MAAMgB,SAAAA,GAAYR,CAAAA,CAAES,GAAG,CAACf,IAAAA,EAAM;QAACG,YAAAA,CAAkBC,SAAS,CAACC,oBAAoB;AAAE,QAAA;AAAK,KAAA,CAAA;IACtF,MAAMW,MAAAA,GAASF,YACX,MAAMH,MAAAA,CAAOC,OAAO,CAAC,aAAA,CAAA,CAAeV,OAAO,CAACY,SAAAA,EAAW;AAAC,QAAA;KAAQ,CAAA,GAChE,IAAA;IAEJ,MAAMG,aAAAA,GAAgBX,EAAEY,GAAG,CAACZ,EAAEa,SAAS,CAACnB,OAAO,WAAA,EAAagB,MAAAA,CAAAA;IAE5D,IAAIN,EAAAA,CAAGd,OAAO,CAACwB,MAAM,CAACV,EAAAA,CAAGb,MAAM,EAAEa,EAAAA,CAAGW,SAAS,CAACJ,aAAAA,CAAAA,CAAAA,EAAiB;QAC7D,MAAM,IAAIT,OAAOc,cAAc,EAAA;AACjC,IAAA;IAEA,OAAO;AAAEZ,QAAAA,EAAAA;AAAIV,QAAAA;AAAK,KAAA;AACpB;;;;"}