UNPKG

@lucidcms/core

Version:

The core of the Lucid CMS. It's responsible for spinning up the API and serving the CMS.

1 lines 2.96 kB
{"version":3,"file":"update-multiple-tenants.mjs","names":[],"sources":["../../../src/services/users/update-multiple-tenants.ts"],"sourcesContent":["import { copy } from \"../../libs/i18n/index.js\";\nimport { UserTenantsRepository } from \"../../libs/repositories/index.js\";\nimport { getTenantConfig } from \"../../utils/helpers/index.js\";\nimport type { ServiceFn } from \"../../utils/services/types.js\";\n\n/**\n * Replaces a user's tenant memberships with the given tenant keys.\n */\nconst updateMultipleTenants: ServiceFn<\n\t[\n\t\t{\n\t\t\tuserId: number;\n\t\t\ttenantKeys?: string[];\n\t\t},\n\t],\n\tundefined\n> = async (context, data) => {\n\tif (data.tenantKeys === undefined) {\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst tenantKeys = Array.from(new Set(data.tenantKeys));\n\n\tconst unknownTenant = tenantKeys.find(\n\t\t(key) => getTenantConfig(context.config, key) === undefined,\n\t);\n\tif (unknownTenant !== undefined) {\n\t\treturn {\n\t\t\terror: {\n\t\t\t\ttype: \"basic\",\n\t\t\t\tmessage: copy(\"server:core.tenants.unknown\", {\n\t\t\t\t\tdata: { key: unknownTenant },\n\t\t\t\t}),\n\t\t\t\tstatus: 400,\n\t\t\t},\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst UserTenants = new UserTenantsRepository(\n\t\tcontext.db.client,\n\t\tcontext.config.db,\n\t);\n\n\tconst deleteMultipleRes = await UserTenants.deleteMultiple({\n\t\twhere: [\n\t\t\t{\n\t\t\t\tkey: \"user_id\",\n\t\t\t\toperator: \"=\",\n\t\t\t\tvalue: data.userId,\n\t\t\t},\n\t\t],\n\t\treturning: [\"id\"],\n\t\tvalidation: {\n\t\t\tenabled: true,\n\t\t},\n\t});\n\tif (deleteMultipleRes.error) return deleteMultipleRes;\n\n\tif (tenantKeys.length === 0) {\n\t\treturn {\n\t\t\terror: undefined,\n\t\t\tdata: undefined,\n\t\t};\n\t}\n\n\tconst createMultipleRes = await UserTenants.createMultiple({\n\t\tdata: tenantKeys.map((key) => ({\n\t\t\tuser_id: data.userId,\n\t\t\ttenant_key: key,\n\t\t})),\n\t});\n\tif (createMultipleRes.error) return createMultipleRes;\n\n\treturn {\n\t\terror: undefined,\n\t\tdata: undefined,\n\t};\n};\n\nexport default updateMultipleTenants;\n"],"mappings":"0KAQA,MAAM,EAQF,MAAO,EAAS,IAAS,CAC5B,GAAI,EAAK,aAAe,IAAA,GACvB,MAAO,CACN,MAAO,IAAA,GACP,KAAM,IAAA,EACP,EAGD,IAAM,EAAa,MAAM,KAAK,IAAI,IAAI,EAAK,UAAU,CAAC,EAEhD,EAAgB,EAAW,KAC/B,GAAQ,EAAgB,EAAQ,OAAQ,CAAG,IAAM,IAAA,EACnD,EACA,GAAI,IAAkB,IAAA,GACrB,MAAO,CACN,MAAO,CACN,KAAM,QACN,QAAS,EAAK,8BAA+B,CAC5C,KAAM,CAAE,IAAK,CAAc,CAC5B,CAAC,EACD,OAAQ,GACT,EACA,KAAM,IAAA,EACP,EAGD,IAAM,EAAc,IAAI,EACvB,EAAQ,GAAG,OACX,EAAQ,OAAO,EAChB,EAEM,EAAoB,MAAM,EAAY,eAAe,CAC1D,MAAO,CACN,CACC,IAAK,UACL,SAAU,IACV,MAAO,EAAK,MACb,CACD,EACA,UAAW,CAAC,IAAI,EAChB,WAAY,CACX,QAAS,EACV,CACD,CAAC,EACD,GAAI,EAAkB,MAAO,OAAO,EAEpC,GAAI,EAAW,SAAW,EACzB,MAAO,CACN,MAAO,IAAA,GACP,KAAM,IAAA,EACP,EAGD,IAAM,EAAoB,MAAM,EAAY,eAAe,CAC1D,KAAM,EAAW,IAAK,IAAS,CAC9B,QAAS,EAAK,OACd,WAAY,CACb,EAAE,CACH,CAAC,EAGD,OAFI,EAAkB,MAAc,EAE7B,CACN,MAAO,IAAA,GACP,KAAM,IAAA,EACP,CACD"}