@webiny/api-workflows 0.0.0-unstable.e622468070 → 6.0.0-rc.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/features/notifications/ListNotificationTypes/ListNotificationTypesUseCase.js +1 -2
- package/features/notifications/ListNotificationTypes/ListNotificationTypesUseCase.js.map +1 -1
- package/features/workflow/CreateWorkflow/CreateWorkflowUseCase.js +1 -2
- package/features/workflow/CreateWorkflow/CreateWorkflowUseCase.js.map +1 -1
- package/features/workflow/DeleteWorkflow/DeleteWorkflowUseCase.js +1 -2
- package/features/workflow/DeleteWorkflow/DeleteWorkflowUseCase.js.map +1 -1
- package/features/workflow/UpdateWorkflow/UpdateWorkflowUseCase.js +1 -2
- package/features/workflow/UpdateWorkflow/UpdateWorkflowUseCase.js.map +1 -1
- package/index.js +6 -4
- package/index.js.map +1 -1
- package/package.json +15 -15
- package/types.d.ts +1 -5
- package/types.js +1 -5
- package/types.js.map +1 -1
|
@@ -2,7 +2,6 @@ import { Result } from "@webiny/feature/api";
|
|
|
2
2
|
import { IdentityContext } from "@webiny/api-core/features/IdentityContext";
|
|
3
3
|
import { ListNotificationTypesRepository, ListNotificationTypesUseCase as UseCase } from "./abstractions.js";
|
|
4
4
|
import { WORKFLOWS_PERMISSION } from "../../../constants.js";
|
|
5
|
-
import { WorkflowsSecurityPermissionAccessLevel } from "../../../types.js";
|
|
6
5
|
import { NotificationAuthorizedError } from "../../../domain/notifications/errors.js";
|
|
7
6
|
class ListNotificationTypesUseCaseImpl {
|
|
8
7
|
constructor(identityContext, repository) {
|
|
@@ -25,7 +24,7 @@ class ListNotificationTypesUseCaseImpl {
|
|
|
25
24
|
for (const permission of permissions) {
|
|
26
25
|
if (permission.name === "*") {
|
|
27
26
|
return Result.ok();
|
|
28
|
-
} else if (permission.editor
|
|
27
|
+
} else if (permission.editor) {
|
|
29
28
|
return Result.ok();
|
|
30
29
|
}
|
|
31
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","IdentityContext","ListNotificationTypesRepository","ListNotificationTypesUseCase","UseCase","WORKFLOWS_PERMISSION","
|
|
1
|
+
{"version":3,"names":["Result","IdentityContext","ListNotificationTypesRepository","ListNotificationTypesUseCase","UseCase","WORKFLOWS_PERMISSION","NotificationAuthorizedError","ListNotificationTypesUseCaseImpl","constructor","identityContext","repository","execute","hasAccess","ensureAccess","isFail","fail","error","result","ok","value","permissions","getPermissions","permission","name","editor","createImplementation","implementation","dependencies"],"sources":["ListNotificationTypesUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport {\n ListNotificationTypesRepository,\n ListNotificationTypesUseCase as UseCase\n} from \"./abstractions.js\";\nimport { WORKFLOWS_PERMISSION } from \"~/constants.js\";\nimport type { IWorkflowsSecurityPermission } from \"~/types.js\";\nimport { NotificationAuthorizedError } from \"~/domain/notifications/errors.js\";\n\nclass ListNotificationTypesUseCaseImpl implements UseCase.Interface {\n public constructor(\n private identityContext: IdentityContext.Interface,\n private repository: ListNotificationTypesRepository.Interface\n ) {}\n\n public async execute(): UseCase.Return {\n const hasAccess = await this.ensureAccess();\n if (hasAccess.isFail()) {\n return Result.fail(hasAccess.error);\n }\n\n const result = await this.repository.execute();\n if (result.isFail()) {\n return result;\n }\n\n return Result.ok(result.value);\n }\n\n private async ensureAccess(): Promise<Result<void, NotificationAuthorizedError>> {\n const permissions =\n await this.identityContext.getPermissions<IWorkflowsSecurityPermission>(\n WORKFLOWS_PERMISSION\n );\n\n for (const permission of permissions) {\n if (permission.name === \"*\") {\n return Result.ok();\n } else if (permission.editor) {\n return Result.ok();\n }\n }\n\n return Result.fail(new NotificationAuthorizedError(\"You cannot list notifications.\"));\n }\n}\n\nexport const ListNotificationTypesUseCase = UseCase.createImplementation({\n implementation: ListNotificationTypesUseCaseImpl,\n dependencies: [IdentityContext, ListNotificationTypesRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,eAAe,QAAQ,2CAA2C;AAC3E,SACIC,+BAA+B,EAC/BC,4BAA4B,IAAIC,OAAO;AAE3C,SAASC,oBAAoB;AAE7B,SAASC,2BAA2B;AAEpC,MAAMC,gCAAgC,CAA8B;EACzDC,WAAWA,CACNC,eAA0C,EAC1CC,UAAqD,EAC/D;IAAA,KAFUD,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,UAAqD,GAArDA,UAAqD;EAC9D;EAEH,MAAaC,OAAOA,CAAA,EAAmB;IACnC,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACC,YAAY,CAAC,CAAC;IAC3C,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOd,MAAM,CAACe,IAAI,CAACH,SAAS,CAACI,KAAK,CAAC;IACvC;IAEA,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACP,UAAU,CAACC,OAAO,CAAC,CAAC;IAC9C,IAAIM,MAAM,CAACH,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOG,MAAM;IACjB;IAEA,OAAOjB,MAAM,CAACkB,EAAE,CAACD,MAAM,CAACE,KAAK,CAAC;EAClC;EAEA,MAAcN,YAAYA,CAAA,EAAuD;IAC7E,MAAMO,WAAW,GACb,MAAM,IAAI,CAACX,eAAe,CAACY,cAAc,CACrChB,oBACJ,CAAC;IAEL,KAAK,MAAMiB,UAAU,IAAIF,WAAW,EAAE;MAClC,IAAIE,UAAU,CAACC,IAAI,KAAK,GAAG,EAAE;QACzB,OAAOvB,MAAM,CAACkB,EAAE,CAAC,CAAC;MACtB,CAAC,MAAM,IAAII,UAAU,CAACE,MAAM,EAAE;QAC1B,OAAOxB,MAAM,CAACkB,EAAE,CAAC,CAAC;MACtB;IACJ;IAEA,OAAOlB,MAAM,CAACe,IAAI,CAAC,IAAIT,2BAA2B,CAAC,gCAAgC,CAAC,CAAC;EACzF;AACJ;AAEA,OAAO,MAAMH,4BAA4B,GAAGC,OAAO,CAACqB,oBAAoB,CAAC;EACrEC,cAAc,EAAEnB,gCAAgC;EAChDoB,YAAY,EAAE,CAAC1B,eAAe,EAAEC,+BAA+B;AACnE,CAAC,CAAC","ignoreList":[]}
|
|
@@ -5,7 +5,6 @@ import { CreateWorkflowRepository, CreateWorkflowUseCase as UseCase } from "./ab
|
|
|
5
5
|
import { WorkflowAfterCreateEvent, WorkflowBeforeCreateEvent } from "./events.js";
|
|
6
6
|
import { WorkflowNotAuthorizedError } from "../../../domain/workflow/errors.js";
|
|
7
7
|
import { WORKFLOWS_PERMISSION } from "../../../constants.js";
|
|
8
|
-
import { WorkflowsSecurityPermissionAccessLevel } from "../../../types.js";
|
|
9
8
|
class CreateWorkflowUseCaseImpl {
|
|
10
9
|
constructor(identityContext, eventPublisher, repository) {
|
|
11
10
|
this.identityContext = identityContext;
|
|
@@ -42,7 +41,7 @@ class CreateWorkflowUseCaseImpl {
|
|
|
42
41
|
for (const permission of permissions) {
|
|
43
42
|
if (permission.name === "*") {
|
|
44
43
|
return Result.ok();
|
|
45
|
-
} else if (permission.editor
|
|
44
|
+
} else if (permission.editor) {
|
|
46
45
|
return Result.ok();
|
|
47
46
|
}
|
|
48
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","IdentityContext","EventPublisher","CreateWorkflowRepository","CreateWorkflowUseCase","UseCase","WorkflowAfterCreateEvent","WorkflowBeforeCreateEvent","WorkflowNotAuthorizedError","WORKFLOWS_PERMISSION","
|
|
1
|
+
{"version":3,"names":["Result","IdentityContext","EventPublisher","CreateWorkflowRepository","CreateWorkflowUseCase","UseCase","WorkflowAfterCreateEvent","WorkflowBeforeCreateEvent","WorkflowNotAuthorizedError","WORKFLOWS_PERMISSION","CreateWorkflowUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","input","hasAccess","ensureManageAccess","isFail","fail","error","workflow","id","app","name","steps","publish","result","value","ok","permissions","getPermissions","permission","editor","createImplementation","implementation","dependencies"],"sources":["CreateWorkflowUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport { EventPublisher } from \"@webiny/api-core/features/EventPublisher\";\nimport { CreateWorkflowRepository, CreateWorkflowUseCase as UseCase } from \"./abstractions.js\";\nimport { WorkflowAfterCreateEvent, WorkflowBeforeCreateEvent } from \"./events.js\";\nimport { WorkflowNotAuthorizedError } from \"~/domain/workflow/errors.js\";\nimport { WORKFLOWS_PERMISSION } from \"~/constants.js\";\nimport type { IWorkflowsSecurityPermission } from \"~/types.js\";\n\nclass CreateWorkflowUseCaseImpl implements UseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: CreateWorkflowRepository.Interface\n ) {}\n\n async execute(input: UseCase.Input): UseCase.Return {\n const hasAccess = await this.ensureManageAccess();\n if (hasAccess.isFail()) {\n return Result.fail(hasAccess.error);\n }\n\n const workflow = {\n id: input.id,\n app: input.app,\n name: input.name,\n steps: input.steps\n };\n\n await this.eventPublisher.publish(\n new WorkflowBeforeCreateEvent({\n workflow,\n input\n })\n );\n\n const result = await this.repository.execute(input);\n if (result.isFail()) {\n return result;\n }\n\n await this.eventPublisher.publish(\n new WorkflowAfterCreateEvent({\n workflow: result.value,\n input\n })\n );\n\n return Result.ok(result.value);\n }\n\n private async ensureManageAccess(): Promise<Result<void, WorkflowNotAuthorizedError>> {\n const permissions =\n await this.identityContext.getPermissions<IWorkflowsSecurityPermission>(\n WORKFLOWS_PERMISSION\n );\n\n for (const permission of permissions) {\n if (permission.name === \"*\") {\n return Result.ok();\n } else if (permission.editor) {\n return Result.ok();\n }\n }\n\n return Result.fail(new WorkflowNotAuthorizedError(\"You cannot manage workflows.\"));\n }\n}\n\nexport const CreateWorkflowUseCase = UseCase.createImplementation({\n implementation: CreateWorkflowUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, CreateWorkflowRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,eAAe,QAAQ,2CAA2C;AAC3E,SAASC,cAAc,QAAQ,0CAA0C;AACzE,SAASC,wBAAwB,EAAEC,qBAAqB,IAAIC,OAAO;AACnE,SAASC,wBAAwB,EAAEC,yBAAyB;AAC5D,SAASC,0BAA0B;AACnC,SAASC,oBAAoB;AAG7B,MAAMC,yBAAyB,CAA8B;EACzDC,WAAWA,CACCC,eAA0C,EAC1CC,cAAwC,EACxCC,UAA8C,EACxD;IAAA,KAHUF,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,UAA8C,GAA9CA,UAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,KAAoB,EAAkB;IAChD,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACC,kBAAkB,CAAC,CAAC;IACjD,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOnB,MAAM,CAACoB,IAAI,CAACH,SAAS,CAACI,KAAK,CAAC;IACvC;IAEA,MAAMC,QAAQ,GAAG;MACbC,EAAE,EAAEP,KAAK,CAACO,EAAE;MACZC,GAAG,EAAER,KAAK,CAACQ,GAAG;MACdC,IAAI,EAAET,KAAK,CAACS,IAAI;MAChBC,KAAK,EAAEV,KAAK,CAACU;IACjB,CAAC;IAED,MAAM,IAAI,CAACb,cAAc,CAACc,OAAO,CAC7B,IAAIpB,yBAAyB,CAAC;MAC1Be,QAAQ;MACRN;IACJ,CAAC,CACL,CAAC;IAED,MAAMY,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACC,OAAO,CAACC,KAAK,CAAC;IACnD,IAAIY,MAAM,CAACT,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOS,MAAM;IACjB;IAEA,MAAM,IAAI,CAACf,cAAc,CAACc,OAAO,CAC7B,IAAIrB,wBAAwB,CAAC;MACzBgB,QAAQ,EAAEM,MAAM,CAACC,KAAK;MACtBb;IACJ,CAAC,CACL,CAAC;IAED,OAAOhB,MAAM,CAAC8B,EAAE,CAACF,MAAM,CAACC,KAAK,CAAC;EAClC;EAEA,MAAcX,kBAAkBA,CAAA,EAAsD;IAClF,MAAMa,WAAW,GACb,MAAM,IAAI,CAACnB,eAAe,CAACoB,cAAc,CACrCvB,oBACJ,CAAC;IAEL,KAAK,MAAMwB,UAAU,IAAIF,WAAW,EAAE;MAClC,IAAIE,UAAU,CAACR,IAAI,KAAK,GAAG,EAAE;QACzB,OAAOzB,MAAM,CAAC8B,EAAE,CAAC,CAAC;MACtB,CAAC,MAAM,IAAIG,UAAU,CAACC,MAAM,EAAE;QAC1B,OAAOlC,MAAM,CAAC8B,EAAE,CAAC,CAAC;MACtB;IACJ;IAEA,OAAO9B,MAAM,CAACoB,IAAI,CAAC,IAAIZ,0BAA0B,CAAC,8BAA8B,CAAC,CAAC;EACtF;AACJ;AAEA,OAAO,MAAMJ,qBAAqB,GAAGC,OAAO,CAAC8B,oBAAoB,CAAC;EAC9DC,cAAc,EAAE1B,yBAAyB;EACzC2B,YAAY,EAAE,CAACpC,eAAe,EAAEC,cAAc,EAAEC,wBAAwB;AAC5E,CAAC,CAAC","ignoreList":[]}
|
|
@@ -6,7 +6,6 @@ import { DeleteWorkflowRepository, DeleteWorkflowUseCase as UseCase } from "./ab
|
|
|
6
6
|
import { WorkflowAfterDeleteEvent, WorkflowBeforeDeleteEvent } from "./events.js";
|
|
7
7
|
import { WorkflowNotAuthorizedError, WorkflowNotFoundError } from "../../../domain/workflow/errors.js";
|
|
8
8
|
import { WORKFLOWS_PERMISSION } from "../../../constants.js";
|
|
9
|
-
import { WorkflowsSecurityPermissionAccessLevel } from "../../../types.js";
|
|
10
9
|
class DeleteWorkflowUseCaseImpl {
|
|
11
10
|
constructor(identityContext, eventPublisher, getWorkflow, repository) {
|
|
12
11
|
this.identityContext = identityContext;
|
|
@@ -44,7 +43,7 @@ class DeleteWorkflowUseCaseImpl {
|
|
|
44
43
|
for (const permission of permissions) {
|
|
45
44
|
if (permission.name === "*") {
|
|
46
45
|
return Result.ok();
|
|
47
|
-
} else if (permission.editor
|
|
46
|
+
} else if (permission.editor) {
|
|
48
47
|
return Result.ok();
|
|
49
48
|
}
|
|
50
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","IdentityContext","EventPublisher","GetWorkflowUseCase","DeleteWorkflowRepository","DeleteWorkflowUseCase","UseCase","WorkflowAfterDeleteEvent","WorkflowBeforeDeleteEvent","WorkflowNotAuthorizedError","WorkflowNotFoundError","WORKFLOWS_PERMISSION","
|
|
1
|
+
{"version":3,"names":["Result","IdentityContext","EventPublisher","GetWorkflowUseCase","DeleteWorkflowRepository","DeleteWorkflowUseCase","UseCase","WorkflowAfterDeleteEvent","WorkflowBeforeDeleteEvent","WorkflowNotAuthorizedError","WorkflowNotFoundError","WORKFLOWS_PERMISSION","DeleteWorkflowUseCaseImpl","constructor","identityContext","eventPublisher","getWorkflow","repository","execute","input","hasAccess","ensureManageAccess","isFail","fail","error","workflowResult","id","app","workflow","value","publish","result","ok","permissions","getPermissions","permission","name","editor","createImplementation","implementation","dependencies"],"sources":["DeleteWorkflowUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport { EventPublisher } from \"@webiny/api-core/features/EventPublisher\";\nimport { GetWorkflowUseCase } from \"../GetWorkflow/index.js\";\nimport { DeleteWorkflowRepository, DeleteWorkflowUseCase as UseCase } from \"./abstractions.js\";\nimport { WorkflowAfterDeleteEvent, WorkflowBeforeDeleteEvent } from \"./events.js\";\nimport { WorkflowNotAuthorizedError, WorkflowNotFoundError } from \"~/domain/workflow/errors.js\";\nimport { WORKFLOWS_PERMISSION } from \"~/constants.js\";\nimport type { IWorkflowsSecurityPermission } from \"~/types.js\";\n\nclass DeleteWorkflowUseCaseImpl implements UseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private getWorkflow: GetWorkflowUseCase.Interface,\n private repository: DeleteWorkflowRepository.Interface\n ) {}\n\n async execute(input: UseCase.Params): UseCase.Return {\n const hasAccess = await this.ensureManageAccess();\n if (hasAccess.isFail()) {\n return Result.fail(hasAccess.error);\n }\n\n const workflowResult = await this.getWorkflow.execute(input);\n if (workflowResult.isFail()) {\n return Result.fail(\n new WorkflowNotFoundError({\n id: input.id,\n app: input.app\n })\n );\n }\n\n const workflow = workflowResult.value;\n\n await this.eventPublisher.publish(\n new WorkflowBeforeDeleteEvent({\n workflow\n })\n );\n\n const result = await this.repository.execute(input);\n if (result.isFail()) {\n return result;\n }\n\n await this.eventPublisher.publish(\n new WorkflowAfterDeleteEvent({\n workflow\n })\n );\n\n return Result.ok();\n }\n\n private async ensureManageAccess(): Promise<Result<void, WorkflowNotAuthorizedError>> {\n const permissions =\n await this.identityContext.getPermissions<IWorkflowsSecurityPermission>(\n WORKFLOWS_PERMISSION\n );\n\n for (const permission of permissions) {\n if (permission.name === \"*\") {\n return Result.ok();\n } else if (permission.editor) {\n return Result.ok();\n }\n }\n\n return Result.fail(new WorkflowNotAuthorizedError(\"You cannot manage workflows.\"));\n }\n}\n\nexport const DeleteWorkflowUseCase = UseCase.createImplementation({\n implementation: DeleteWorkflowUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, GetWorkflowUseCase, DeleteWorkflowRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,eAAe,QAAQ,2CAA2C;AAC3E,SAASC,cAAc,QAAQ,0CAA0C;AACzE,SAASC,kBAAkB;AAC3B,SAASC,wBAAwB,EAAEC,qBAAqB,IAAIC,OAAO;AACnE,SAASC,wBAAwB,EAAEC,yBAAyB;AAC5D,SAASC,0BAA0B,EAAEC,qBAAqB;AAC1D,SAASC,oBAAoB;AAG7B,MAAMC,yBAAyB,CAA8B;EACzDC,WAAWA,CACCC,eAA0C,EAC1CC,cAAwC,EACxCC,WAAyC,EACzCC,UAA8C,EACxD;IAAA,KAJUH,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,WAAyC,GAAzCA,WAAyC;IAAA,KACzCC,UAA8C,GAA9CA,UAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,KAAqB,EAAkB;IACjD,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACC,kBAAkB,CAAC,CAAC;IACjD,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOtB,MAAM,CAACuB,IAAI,CAACH,SAAS,CAACI,KAAK,CAAC;IACvC;IAEA,MAAMC,cAAc,GAAG,MAAM,IAAI,CAACT,WAAW,CAACE,OAAO,CAACC,KAAK,CAAC;IAC5D,IAAIM,cAAc,CAACH,MAAM,CAAC,CAAC,EAAE;MACzB,OAAOtB,MAAM,CAACuB,IAAI,CACd,IAAIb,qBAAqB,CAAC;QACtBgB,EAAE,EAAEP,KAAK,CAACO,EAAE;QACZC,GAAG,EAAER,KAAK,CAACQ;MACf,CAAC,CACL,CAAC;IACL;IAEA,MAAMC,QAAQ,GAAGH,cAAc,CAACI,KAAK;IAErC,MAAM,IAAI,CAACd,cAAc,CAACe,OAAO,CAC7B,IAAItB,yBAAyB,CAAC;MAC1BoB;IACJ,CAAC,CACL,CAAC;IAED,MAAMG,MAAM,GAAG,MAAM,IAAI,CAACd,UAAU,CAACC,OAAO,CAACC,KAAK,CAAC;IACnD,IAAIY,MAAM,CAACT,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOS,MAAM;IACjB;IAEA,MAAM,IAAI,CAAChB,cAAc,CAACe,OAAO,CAC7B,IAAIvB,wBAAwB,CAAC;MACzBqB;IACJ,CAAC,CACL,CAAC;IAED,OAAO5B,MAAM,CAACgC,EAAE,CAAC,CAAC;EACtB;EAEA,MAAcX,kBAAkBA,CAAA,EAAsD;IAClF,MAAMY,WAAW,GACb,MAAM,IAAI,CAACnB,eAAe,CAACoB,cAAc,CACrCvB,oBACJ,CAAC;IAEL,KAAK,MAAMwB,UAAU,IAAIF,WAAW,EAAE;MAClC,IAAIE,UAAU,CAACC,IAAI,KAAK,GAAG,EAAE;QACzB,OAAOpC,MAAM,CAACgC,EAAE,CAAC,CAAC;MACtB,CAAC,MAAM,IAAIG,UAAU,CAACE,MAAM,EAAE;QAC1B,OAAOrC,MAAM,CAACgC,EAAE,CAAC,CAAC;MACtB;IACJ;IAEA,OAAOhC,MAAM,CAACuB,IAAI,CAAC,IAAId,0BAA0B,CAAC,8BAA8B,CAAC,CAAC;EACtF;AACJ;AAEA,OAAO,MAAMJ,qBAAqB,GAAGC,OAAO,CAACgC,oBAAoB,CAAC;EAC9DC,cAAc,EAAE3B,yBAAyB;EACzC4B,YAAY,EAAE,CAACvC,eAAe,EAAEC,cAAc,EAAEC,kBAAkB,EAAEC,wBAAwB;AAChG,CAAC,CAAC","ignoreList":[]}
|
|
@@ -5,7 +5,6 @@ import { UpdateWorkflowRepository, UpdateWorkflowUseCase as UseCase } from "./ab
|
|
|
5
5
|
import { WorkflowAfterUpdateEvent, WorkflowBeforeUpdateEvent } from "./events.js";
|
|
6
6
|
import { WorkflowNotAuthorizedError } from "../../../domain/workflow/errors.js";
|
|
7
7
|
import { WORKFLOWS_PERMISSION } from "../../../constants.js";
|
|
8
|
-
import { WorkflowsSecurityPermissionAccessLevel } from "../../../types.js";
|
|
9
8
|
class UpdateWorkflowUseCaseImpl {
|
|
10
9
|
constructor(identityContext, eventPublisher, repository) {
|
|
11
10
|
this.identityContext = identityContext;
|
|
@@ -44,7 +43,7 @@ class UpdateWorkflowUseCaseImpl {
|
|
|
44
43
|
for (const permission of permissions) {
|
|
45
44
|
if (permission.name === "*") {
|
|
46
45
|
return Result.ok();
|
|
47
|
-
} else if (permission.editor
|
|
46
|
+
} else if (permission.editor) {
|
|
48
47
|
return Result.ok();
|
|
49
48
|
}
|
|
50
49
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Result","IdentityContext","EventPublisher","UpdateWorkflowRepository","UpdateWorkflowUseCase","UseCase","WorkflowAfterUpdateEvent","WorkflowBeforeUpdateEvent","WorkflowNotAuthorizedError","WORKFLOWS_PERMISSION","
|
|
1
|
+
{"version":3,"names":["Result","IdentityContext","EventPublisher","UpdateWorkflowRepository","UpdateWorkflowUseCase","UseCase","WorkflowAfterUpdateEvent","WorkflowBeforeUpdateEvent","WorkflowNotAuthorizedError","WORKFLOWS_PERMISSION","UpdateWorkflowUseCaseImpl","constructor","identityContext","eventPublisher","repository","execute","input","original","hasAccess","ensureManageAccess","isFail","fail","error","workflow","id","app","name","steps","publish","result","value","ok","permissions","getPermissions","permission","editor","createImplementation","implementation","dependencies"],"sources":["UpdateWorkflowUseCase.ts"],"sourcesContent":["import { Result } from \"@webiny/feature/api\";\nimport { IdentityContext } from \"@webiny/api-core/features/IdentityContext\";\nimport { EventPublisher } from \"@webiny/api-core/features/EventPublisher\";\nimport { UpdateWorkflowRepository, UpdateWorkflowUseCase as UseCase } from \"./abstractions.js\";\nimport { WorkflowAfterUpdateEvent, WorkflowBeforeUpdateEvent } from \"./events.js\";\nimport { WorkflowNotAuthorizedError } from \"~/domain/workflow/errors.js\";\nimport { WORKFLOWS_PERMISSION } from \"~/constants.js\";\nimport type { IWorkflowsSecurityPermission } from \"~/types.js\";\n\nclass UpdateWorkflowUseCaseImpl implements UseCase.Interface {\n constructor(\n private identityContext: IdentityContext.Interface,\n private eventPublisher: EventPublisher.Interface,\n private repository: UpdateWorkflowRepository.Interface\n ) {}\n\n async execute(input: UseCase.Input, original: UseCase.Input): UseCase.Return {\n const hasAccess = await this.ensureManageAccess();\n if (hasAccess.isFail()) {\n return Result.fail(hasAccess.error);\n }\n\n const workflow = {\n id: input.id,\n app: input.app,\n name: input.name,\n steps: input.steps\n };\n\n await this.eventPublisher.publish(\n new WorkflowBeforeUpdateEvent({\n workflow,\n original,\n input\n })\n );\n\n const result = await this.repository.execute(input);\n if (result.isFail()) {\n return result;\n }\n\n await this.eventPublisher.publish(\n new WorkflowAfterUpdateEvent({\n workflow: result.value,\n original,\n input\n })\n );\n\n return Result.ok(result.value);\n }\n\n private async ensureManageAccess(): Promise<Result<void, WorkflowNotAuthorizedError>> {\n const permissions =\n await this.identityContext.getPermissions<IWorkflowsSecurityPermission>(\n WORKFLOWS_PERMISSION\n );\n\n for (const permission of permissions) {\n if (permission.name === \"*\") {\n return Result.ok();\n } else if (permission.editor) {\n return Result.ok();\n }\n }\n\n return Result.fail(new WorkflowNotAuthorizedError(\"You cannot manage workflows.\"));\n }\n}\n\nexport const UpdateWorkflowUseCase = UseCase.createImplementation({\n implementation: UpdateWorkflowUseCaseImpl,\n dependencies: [IdentityContext, EventPublisher, UpdateWorkflowRepository]\n});\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,qBAAqB;AAC5C,SAASC,eAAe,QAAQ,2CAA2C;AAC3E,SAASC,cAAc,QAAQ,0CAA0C;AACzE,SAASC,wBAAwB,EAAEC,qBAAqB,IAAIC,OAAO;AACnE,SAASC,wBAAwB,EAAEC,yBAAyB;AAC5D,SAASC,0BAA0B;AACnC,SAASC,oBAAoB;AAG7B,MAAMC,yBAAyB,CAA8B;EACzDC,WAAWA,CACCC,eAA0C,EAC1CC,cAAwC,EACxCC,UAA8C,EACxD;IAAA,KAHUF,eAA0C,GAA1CA,eAA0C;IAAA,KAC1CC,cAAwC,GAAxCA,cAAwC;IAAA,KACxCC,UAA8C,GAA9CA,UAA8C;EACvD;EAEH,MAAMC,OAAOA,CAACC,KAAoB,EAAEC,QAAuB,EAAkB;IACzE,MAAMC,SAAS,GAAG,MAAM,IAAI,CAACC,kBAAkB,CAAC,CAAC;IACjD,IAAID,SAAS,CAACE,MAAM,CAAC,CAAC,EAAE;MACpB,OAAOpB,MAAM,CAACqB,IAAI,CAACH,SAAS,CAACI,KAAK,CAAC;IACvC;IAEA,MAAMC,QAAQ,GAAG;MACbC,EAAE,EAAER,KAAK,CAACQ,EAAE;MACZC,GAAG,EAAET,KAAK,CAACS,GAAG;MACdC,IAAI,EAAEV,KAAK,CAACU,IAAI;MAChBC,KAAK,EAAEX,KAAK,CAACW;IACjB,CAAC;IAED,MAAM,IAAI,CAACd,cAAc,CAACe,OAAO,CAC7B,IAAIrB,yBAAyB,CAAC;MAC1BgB,QAAQ;MACRN,QAAQ;MACRD;IACJ,CAAC,CACL,CAAC;IAED,MAAMa,MAAM,GAAG,MAAM,IAAI,CAACf,UAAU,CAACC,OAAO,CAACC,KAAK,CAAC;IACnD,IAAIa,MAAM,CAACT,MAAM,CAAC,CAAC,EAAE;MACjB,OAAOS,MAAM;IACjB;IAEA,MAAM,IAAI,CAAChB,cAAc,CAACe,OAAO,CAC7B,IAAItB,wBAAwB,CAAC;MACzBiB,QAAQ,EAAEM,MAAM,CAACC,KAAK;MACtBb,QAAQ;MACRD;IACJ,CAAC,CACL,CAAC;IAED,OAAOhB,MAAM,CAAC+B,EAAE,CAACF,MAAM,CAACC,KAAK,CAAC;EAClC;EAEA,MAAcX,kBAAkBA,CAAA,EAAsD;IAClF,MAAMa,WAAW,GACb,MAAM,IAAI,CAACpB,eAAe,CAACqB,cAAc,CACrCxB,oBACJ,CAAC;IAEL,KAAK,MAAMyB,UAAU,IAAIF,WAAW,EAAE;MAClC,IAAIE,UAAU,CAACR,IAAI,KAAK,GAAG,EAAE;QACzB,OAAO1B,MAAM,CAAC+B,EAAE,CAAC,CAAC;MACtB,CAAC,MAAM,IAAIG,UAAU,CAACC,MAAM,EAAE;QAC1B,OAAOnC,MAAM,CAAC+B,EAAE,CAAC,CAAC;MACtB;IACJ;IAEA,OAAO/B,MAAM,CAACqB,IAAI,CAAC,IAAIb,0BAA0B,CAAC,8BAA8B,CAAC,CAAC;EACtF;AACJ;AAEA,OAAO,MAAMJ,qBAAqB,GAAGC,OAAO,CAAC+B,oBAAoB,CAAC;EAC9DC,cAAc,EAAE3B,yBAAyB;EACzC4B,YAAY,EAAE,CAACrC,eAAe,EAAEC,cAAc,EAAEC,wBAAwB;AAC5E,CAAC,CAAC","ignoreList":[]}
|
package/index.js
CHANGED
|
@@ -3,8 +3,8 @@ import { TenantContext } from "@webiny/api-core/features/TenantContext";
|
|
|
3
3
|
import { IdentityContext } from "@webiny/api-core/features/security/IdentityContext/index.js";
|
|
4
4
|
import { WcpContext } from "@webiny/api-core/features/wcp/WcpContext/index.js";
|
|
5
5
|
import { GetModelUseCase } from "@webiny/api-headless-cms/features/contentModel/GetModel/index.js";
|
|
6
|
-
import { WorkflowModel as WorkflowPrivateModel
|
|
7
|
-
import { WorkflowStateModel as WorkflowStatePrivateModel
|
|
6
|
+
import { WORKFLOW_MODEL_ID, WorkflowModel as WorkflowPrivateModel } from "./domain/workflow/workflowModel.js";
|
|
7
|
+
import { WORKFLOW_STATE_MODEL_ID, WorkflowStateModel as WorkflowStatePrivateModel } from "./domain/workflowState/stateModel.js";
|
|
8
8
|
import { createWorkflowsSchema } from "./graphql/workflows.js";
|
|
9
9
|
import { createWorkflowStateSchema } from "./graphql/workflowState.js";
|
|
10
10
|
import { WorkflowModel } from "./domain/workflow/abstractions.js";
|
|
@@ -40,10 +40,12 @@ export const createWorkflows = () => {
|
|
|
40
40
|
const tenantContext = context.container.resolve(TenantContext);
|
|
41
41
|
const identityContext = context.container.resolve(IdentityContext);
|
|
42
42
|
const wcpContext = context.container.resolve(WcpContext);
|
|
43
|
-
|
|
43
|
+
const hasTenant = tenantContext.getTenant();
|
|
44
|
+
const canUseWorkflows = wcpContext.canUseWorkflows();
|
|
45
|
+
if (!hasTenant) {
|
|
44
46
|
return;
|
|
45
47
|
}
|
|
46
|
-
if (!
|
|
48
|
+
if (!canUseWorkflows) {
|
|
47
49
|
return;
|
|
48
50
|
}
|
|
49
51
|
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ContextPlugin","TenantContext","IdentityContext","WcpContext","GetModelUseCase","WorkflowModel","WorkflowPrivateModel","WORKFLOW_MODEL_ID","WorkflowStateModel","WorkflowStatePrivateModel","WORKFLOW_STATE_MODEL_ID","createWorkflowsSchema","createWorkflowStateSchema","WorkflowMapper","WorkflowStateMapper","GetWorkflowFeature","ListWorkflowsFeature","CreateWorkflowFeature","DeleteWorkflowFeature","UpdateWorkflowFeature","StoreWorkflowFeature","GetWorkflowStateFeature","GetTargetWorkflowStateFeature","ListOwnWorkflowStatesFeature","ListWorkflowStatesFeature","ListRequestedWorkflowStatesFeature","CreateWorkflowStateFeature","UpdateWorkflowStateFeature","CancelWorkflowStateFeature","DeleteWorkflowStateFeature","DeleteTargetWorkflowStateFeature","StartWorkflowStateStepFeature","ApproveWorkflowStateStepFeature","RejectWorkflowStateStepFeature","TakeOverWorkflowStateStepFeature","GetUserTeamsFeature","ListNotificationTypesFeature","NotificationTransportFeature","createNotificationsGraphQL","createWorkflows","plugin","context","tenantContext","container","resolve","identityContext","wcpContext","getTenant","canUseWorkflows","register","getModel","withoutAuthorization","workflowModel","workflowStateModel","Promise","all","execute","registerInstance","value","plugins","name"],"sources":["index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/handler\";\nimport { TenantContext } from \"@webiny/api-core/features/TenantContext\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport {\n WorkflowModel as WorkflowPrivateModel,\n WORKFLOW_MODEL_ID\n} from \"./domain/workflow/workflowModel.js\";\nimport {\n WorkflowStateModel as WorkflowStatePrivateModel,\n WORKFLOW_STATE_MODEL_ID\n} from \"./domain/workflowState/stateModel.js\";\nimport { createWorkflowsSchema } from \"~/graphql/workflows.js\";\nimport { createWorkflowStateSchema } from \"~/graphql/workflowState.js\";\nimport { WorkflowModel } from \"./domain/workflow/abstractions.js\";\nimport { WorkflowStateModel } from \"./domain/workflowState/abstractions.js\";\nimport { WorkflowMapper } from \"~/domain/workflow/WorkflowMapper.js\";\nimport { WorkflowStateMapper } from \"~/domain/workflowState/WorkflowStateMapper.js\";\nimport { GetWorkflowFeature } from \"~/features/workflow/GetWorkflow/feature.js\";\nimport { ListWorkflowsFeature } from \"~/features/workflow/ListWorkflows/feature.js\";\nimport { CreateWorkflowFeature } from \"~/features/workflow/CreateWorkflow/feature.js\";\nimport { DeleteWorkflowFeature } from \"~/features/workflow/DeleteWorkflow/feature.js\";\nimport { UpdateWorkflowFeature } from \"~/features/workflow/UpdateWorkflow/feature.js\";\nimport { StoreWorkflowFeature } from \"~/features/workflow/StoreWorkflow/feature.js\";\nimport { GetWorkflowStateFeature } from \"~/features/workflowState/GetWorkflowState/feature.js\";\nimport { GetTargetWorkflowStateFeature } from \"~/features/workflowState/GetTargetWorkflowState/feature.js\";\nimport { ListOwnWorkflowStatesFeature } from \"~/features/workflowState/ListOwnWorkflowStates/feature.js\";\nimport { ListWorkflowStatesFeature } from \"~/features/workflowState/ListWorkflowStates/feature.js\";\nimport { ListRequestedWorkflowStatesFeature } from \"~/features/workflowState/ListRequestedWorkflowStates/feature.js\";\nimport { CreateWorkflowStateFeature } from \"~/features/workflowState/CreateWorkflowState/feature.js\";\nimport { UpdateWorkflowStateFeature } from \"~/features/workflowState/UpdateWorkflowState/feature.js\";\nimport { CancelWorkflowStateFeature } from \"~/features/workflowState/CancelWorkflowState/feature.js\";\nimport { DeleteWorkflowStateFeature } from \"~/features/workflowState/DeleteWorkflowState/feature.js\";\nimport { DeleteTargetWorkflowStateFeature } from \"~/features/workflowState/DeleteTargetWorkflowState/feature.js\";\nimport { StartWorkflowStateStepFeature } from \"~/features/workflowState/StartWorkflowStateStep/feature.js\";\nimport { ApproveWorkflowStateStepFeature } from \"~/features/workflowState/ApproveWorkflowStateStep/feature.js\";\nimport { RejectWorkflowStateStepFeature } from \"~/features/workflowState/RejectWorkflowStateStep/feature.js\";\nimport { TakeOverWorkflowStateStepFeature } from \"~/features/workflowState/TakeOverWorkflowStateStep/feature.js\";\nimport { GetUserTeamsFeature } from \"~/features/internal/GetUserTeams/feature.js\";\nimport { ListNotificationTypesFeature } from \"~/features/notifications/ListNotificationTypes/index.js\";\nimport { NotificationTransportFeature } from \"./features/notifications/NotificationTransport/index.js\";\nimport { createNotificationsGraphQL } from \"~/graphql/notifications.js\";\n\nexport const createWorkflows = () => {\n const plugin = new ContextPlugin(async context => {\n const tenantContext = context.container.resolve(TenantContext);\n const identityContext = context.container.resolve(IdentityContext);\n const wcpContext = context.container.resolve(WcpContext);\n\n if (!tenantContext.getTenant()) {\n return;\n }\n\n if (!wcpContext.canUseWorkflows()) {\n return;\n }\n\n // Register private models\n context.container.register(WorkflowPrivateModel);\n context.container.register(WorkflowStatePrivateModel);\n\n // Fetch and register CMS models\n const getModel = context.container.resolve(GetModelUseCase);\n\n await identityContext.withoutAuthorization(async () => {\n const [workflowModel, workflowStateModel] = await Promise.all([\n getModel.execute(WORKFLOW_MODEL_ID),\n getModel.execute(WORKFLOW_STATE_MODEL_ID)\n ]);\n\n context.container.registerInstance(WorkflowModel, workflowModel.value);\n context.container.registerInstance(WorkflowStateModel, workflowStateModel.value);\n });\n\n // Register mappers\n context.container.register(WorkflowMapper);\n context.container.register(WorkflowStateMapper);\n\n // Register notification features\n ListNotificationTypesFeature.register(context.container);\n NotificationTransportFeature.register(context.container);\n\n // Register workflow features\n GetWorkflowFeature.register(context.container);\n ListWorkflowsFeature.register(context.container);\n CreateWorkflowFeature.register(context.container);\n DeleteWorkflowFeature.register(context.container);\n UpdateWorkflowFeature.register(context.container);\n StoreWorkflowFeature.register(context.container);\n\n // Register internal features\n GetUserTeamsFeature.register(context.container);\n\n // Register workflow state features\n GetWorkflowStateFeature.register(context.container);\n GetTargetWorkflowStateFeature.register(context.container);\n ListOwnWorkflowStatesFeature.register(context.container);\n ListWorkflowStatesFeature.register(context.container);\n ListRequestedWorkflowStatesFeature.register(context.container);\n CreateWorkflowStateFeature.register(context.container);\n UpdateWorkflowStateFeature.register(context.container);\n CancelWorkflowStateFeature.register(context.container);\n DeleteWorkflowStateFeature.register(context.container);\n DeleteTargetWorkflowStateFeature.register(context.container);\n StartWorkflowStateStepFeature.register(context.container);\n ApproveWorkflowStateStepFeature.register(context.container);\n RejectWorkflowStateStepFeature.register(context.container);\n TakeOverWorkflowStateStepFeature.register(context.container);\n\n context.plugins.register(\n createNotificationsGraphQL(),\n createWorkflowsSchema(),\n createWorkflowStateSchema()\n );\n });\n\n plugin.name = \"workflows.context\";\n\n return plugin;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["ContextPlugin","TenantContext","IdentityContext","WcpContext","GetModelUseCase","WORKFLOW_MODEL_ID","WorkflowModel","WorkflowPrivateModel","WORKFLOW_STATE_MODEL_ID","WorkflowStateModel","WorkflowStatePrivateModel","createWorkflowsSchema","createWorkflowStateSchema","WorkflowMapper","WorkflowStateMapper","GetWorkflowFeature","ListWorkflowsFeature","CreateWorkflowFeature","DeleteWorkflowFeature","UpdateWorkflowFeature","StoreWorkflowFeature","GetWorkflowStateFeature","GetTargetWorkflowStateFeature","ListOwnWorkflowStatesFeature","ListWorkflowStatesFeature","ListRequestedWorkflowStatesFeature","CreateWorkflowStateFeature","UpdateWorkflowStateFeature","CancelWorkflowStateFeature","DeleteWorkflowStateFeature","DeleteTargetWorkflowStateFeature","StartWorkflowStateStepFeature","ApproveWorkflowStateStepFeature","RejectWorkflowStateStepFeature","TakeOverWorkflowStateStepFeature","GetUserTeamsFeature","ListNotificationTypesFeature","NotificationTransportFeature","createNotificationsGraphQL","createWorkflows","plugin","context","tenantContext","container","resolve","identityContext","wcpContext","hasTenant","getTenant","canUseWorkflows","register","getModel","withoutAuthorization","workflowModel","workflowStateModel","Promise","all","execute","registerInstance","value","plugins","name"],"sources":["index.ts"],"sourcesContent":["import { ContextPlugin } from \"@webiny/handler\";\nimport { TenantContext } from \"@webiny/api-core/features/TenantContext\";\nimport { IdentityContext } from \"@webiny/api-core/features/security/IdentityContext/index.js\";\nimport { WcpContext } from \"@webiny/api-core/features/wcp/WcpContext/index.js\";\nimport { GetModelUseCase } from \"@webiny/api-headless-cms/features/contentModel/GetModel/index.js\";\nimport {\n WORKFLOW_MODEL_ID,\n WorkflowModel as WorkflowPrivateModel\n} from \"./domain/workflow/workflowModel.js\";\nimport {\n WORKFLOW_STATE_MODEL_ID,\n WorkflowStateModel as WorkflowStatePrivateModel\n} from \"./domain/workflowState/stateModel.js\";\nimport { createWorkflowsSchema } from \"~/graphql/workflows.js\";\nimport { createWorkflowStateSchema } from \"~/graphql/workflowState.js\";\nimport { WorkflowModel } from \"./domain/workflow/abstractions.js\";\nimport { WorkflowStateModel } from \"./domain/workflowState/abstractions.js\";\nimport { WorkflowMapper } from \"~/domain/workflow/WorkflowMapper.js\";\nimport { WorkflowStateMapper } from \"~/domain/workflowState/WorkflowStateMapper.js\";\nimport { GetWorkflowFeature } from \"~/features/workflow/GetWorkflow/feature.js\";\nimport { ListWorkflowsFeature } from \"~/features/workflow/ListWorkflows/feature.js\";\nimport { CreateWorkflowFeature } from \"~/features/workflow/CreateWorkflow/feature.js\";\nimport { DeleteWorkflowFeature } from \"~/features/workflow/DeleteWorkflow/feature.js\";\nimport { UpdateWorkflowFeature } from \"~/features/workflow/UpdateWorkflow/feature.js\";\nimport { StoreWorkflowFeature } from \"~/features/workflow/StoreWorkflow/feature.js\";\nimport { GetWorkflowStateFeature } from \"~/features/workflowState/GetWorkflowState/feature.js\";\nimport { GetTargetWorkflowStateFeature } from \"~/features/workflowState/GetTargetWorkflowState/feature.js\";\nimport { ListOwnWorkflowStatesFeature } from \"~/features/workflowState/ListOwnWorkflowStates/feature.js\";\nimport { ListWorkflowStatesFeature } from \"~/features/workflowState/ListWorkflowStates/feature.js\";\nimport { ListRequestedWorkflowStatesFeature } from \"~/features/workflowState/ListRequestedWorkflowStates/feature.js\";\nimport { CreateWorkflowStateFeature } from \"~/features/workflowState/CreateWorkflowState/feature.js\";\nimport { UpdateWorkflowStateFeature } from \"~/features/workflowState/UpdateWorkflowState/feature.js\";\nimport { CancelWorkflowStateFeature } from \"~/features/workflowState/CancelWorkflowState/feature.js\";\nimport { DeleteWorkflowStateFeature } from \"~/features/workflowState/DeleteWorkflowState/feature.js\";\nimport { DeleteTargetWorkflowStateFeature } from \"~/features/workflowState/DeleteTargetWorkflowState/feature.js\";\nimport { StartWorkflowStateStepFeature } from \"~/features/workflowState/StartWorkflowStateStep/feature.js\";\nimport { ApproveWorkflowStateStepFeature } from \"~/features/workflowState/ApproveWorkflowStateStep/feature.js\";\nimport { RejectWorkflowStateStepFeature } from \"~/features/workflowState/RejectWorkflowStateStep/feature.js\";\nimport { TakeOverWorkflowStateStepFeature } from \"~/features/workflowState/TakeOverWorkflowStateStep/feature.js\";\nimport { GetUserTeamsFeature } from \"~/features/internal/GetUserTeams/feature.js\";\nimport { ListNotificationTypesFeature } from \"~/features/notifications/ListNotificationTypes/index.js\";\nimport { NotificationTransportFeature } from \"./features/notifications/NotificationTransport/index.js\";\nimport { createNotificationsGraphQL } from \"~/graphql/notifications.js\";\n\nexport const createWorkflows = () => {\n const plugin = new ContextPlugin(async context => {\n const tenantContext = context.container.resolve(TenantContext);\n const identityContext = context.container.resolve(IdentityContext);\n const wcpContext = context.container.resolve(WcpContext);\n\n const hasTenant = tenantContext.getTenant();\n const canUseWorkflows = wcpContext.canUseWorkflows();\n if (!hasTenant) {\n return;\n }\n\n if (!canUseWorkflows) {\n return;\n }\n\n // Register private models\n context.container.register(WorkflowPrivateModel);\n context.container.register(WorkflowStatePrivateModel);\n\n // Fetch and register CMS models\n const getModel = context.container.resolve(GetModelUseCase);\n\n await identityContext.withoutAuthorization(async () => {\n const [workflowModel, workflowStateModel] = await Promise.all([\n getModel.execute(WORKFLOW_MODEL_ID),\n getModel.execute(WORKFLOW_STATE_MODEL_ID)\n ]);\n\n context.container.registerInstance(WorkflowModel, workflowModel.value);\n context.container.registerInstance(WorkflowStateModel, workflowStateModel.value);\n });\n\n // Register mappers\n context.container.register(WorkflowMapper);\n context.container.register(WorkflowStateMapper);\n\n // Register notification features\n ListNotificationTypesFeature.register(context.container);\n NotificationTransportFeature.register(context.container);\n\n // Register workflow features\n GetWorkflowFeature.register(context.container);\n ListWorkflowsFeature.register(context.container);\n CreateWorkflowFeature.register(context.container);\n DeleteWorkflowFeature.register(context.container);\n UpdateWorkflowFeature.register(context.container);\n StoreWorkflowFeature.register(context.container);\n\n // Register internal features\n GetUserTeamsFeature.register(context.container);\n\n // Register workflow state features\n GetWorkflowStateFeature.register(context.container);\n GetTargetWorkflowStateFeature.register(context.container);\n ListOwnWorkflowStatesFeature.register(context.container);\n ListWorkflowStatesFeature.register(context.container);\n ListRequestedWorkflowStatesFeature.register(context.container);\n CreateWorkflowStateFeature.register(context.container);\n UpdateWorkflowStateFeature.register(context.container);\n CancelWorkflowStateFeature.register(context.container);\n DeleteWorkflowStateFeature.register(context.container);\n DeleteTargetWorkflowStateFeature.register(context.container);\n StartWorkflowStateStepFeature.register(context.container);\n ApproveWorkflowStateStepFeature.register(context.container);\n RejectWorkflowStateStepFeature.register(context.container);\n TakeOverWorkflowStateStepFeature.register(context.container);\n\n context.plugins.register(\n createNotificationsGraphQL(),\n createWorkflowsSchema(),\n createWorkflowStateSchema()\n );\n });\n\n plugin.name = \"workflows.context\";\n\n return plugin;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-workflows",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "6.0.0-rc.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"description": "Workflows API",
|
|
@@ -14,28 +14,28 @@
|
|
|
14
14
|
},
|
|
15
15
|
"license": "MIT",
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"@webiny/api": "
|
|
18
|
-
"@webiny/api-core": "
|
|
19
|
-
"@webiny/api-headless-cms": "
|
|
20
|
-
"@webiny/api-mailer": "
|
|
21
|
-
"@webiny/feature": "
|
|
22
|
-
"@webiny/handler": "
|
|
23
|
-
"@webiny/handler-graphql": "
|
|
24
|
-
"@webiny/utils": "
|
|
17
|
+
"@webiny/api": "6.0.0-rc.1",
|
|
18
|
+
"@webiny/api-core": "6.0.0-rc.1",
|
|
19
|
+
"@webiny/api-headless-cms": "6.0.0-rc.1",
|
|
20
|
+
"@webiny/api-mailer": "6.0.0-rc.1",
|
|
21
|
+
"@webiny/feature": "6.0.0-rc.1",
|
|
22
|
+
"@webiny/handler": "6.0.0-rc.1",
|
|
23
|
+
"@webiny/handler-graphql": "6.0.0-rc.1",
|
|
24
|
+
"@webiny/utils": "6.0.0-rc.1",
|
|
25
25
|
"zod": "3.25.76"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@webiny/build-tools": "
|
|
29
|
-
"@webiny/plugins": "
|
|
30
|
-
"@webiny/project-utils": "
|
|
31
|
-
"@webiny/testing": "
|
|
28
|
+
"@webiny/build-tools": "6.0.0-rc.1",
|
|
29
|
+
"@webiny/plugins": "6.0.0-rc.1",
|
|
30
|
+
"@webiny/project-utils": "6.0.0-rc.1",
|
|
31
|
+
"@webiny/testing": "6.0.0-rc.1",
|
|
32
32
|
"type-fest": "5.4.4",
|
|
33
33
|
"typescript": "5.9.3",
|
|
34
|
-
"vitest": "
|
|
34
|
+
"vitest": "4.0.18"
|
|
35
35
|
},
|
|
36
36
|
"publishConfig": {
|
|
37
37
|
"access": "public",
|
|
38
38
|
"directory": "dist"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "36d702721ff9ed39fb21d6f5fe7922a2a8716e63"
|
|
41
41
|
}
|
package/types.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import type { SecurityPermission } from "@webiny/api-core/types/security.js";
|
|
2
|
-
export declare enum WorkflowsSecurityPermissionAccessLevel {
|
|
3
|
-
NO = "no",
|
|
4
|
-
YES = "yes"
|
|
5
|
-
}
|
|
6
2
|
export interface IWorkflowsSecurityPermission extends SecurityPermission {
|
|
7
|
-
editor:
|
|
3
|
+
editor: boolean;
|
|
8
4
|
}
|
|
9
5
|
export interface IMeta {
|
|
10
6
|
totalCount: number;
|
package/types.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
WorkflowsSecurityPermissionAccessLevel["NO"] = "no";
|
|
3
|
-
WorkflowsSecurityPermissionAccessLevel["YES"] = "yes";
|
|
4
|
-
return WorkflowsSecurityPermissionAccessLevel;
|
|
5
|
-
}({});
|
|
1
|
+
export {};
|
|
6
2
|
|
|
7
3
|
//# sourceMappingURL=types.js.map
|
package/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[
|
|
1
|
+
{"version":3,"names":[],"sources":["types.ts"],"sourcesContent":["import type { SecurityPermission } from \"@webiny/api-core/types/security.js\";\n\nexport interface IWorkflowsSecurityPermission extends SecurityPermission {\n editor: boolean;\n}\n\nexport interface IMeta {\n totalCount: number;\n hasMoreItems: boolean;\n cursor: string | null;\n}\n"],"mappings":"","ignoreList":[]}
|