From 7926b073ecb8df1080854cd2a3e1c02eba55d250 Mon Sep 17 00:00:00 2001 From: Sinan997 Date: Tue, 31 Oct 2023 17:55:47 +0300 Subject: [PATCH] move extensions guards add resolvers --- .../account/src/lib/account-routing.module.ts | 6 +- .../src/lib/guards/extensions.guard.ts | 27 +-------- .../src/lib/resolvers/extensions.resolver.ts | 31 ++++++++++ .../account/src/lib/resolvers/index.ts | 1 + .../src/lib/guards/extensions.guard.ts | 54 +---------------- .../src/lib/identity-routing.module.ts | 5 +- .../src/lib/resolvers/extensions.resolver.ts | 58 ++++++++++++++++++ .../identity/src/lib/resolvers/index.ts | 1 + .../src/lib/guards/extensions.guard.ts | 50 ---------------- .../src/lib/resolvers/extensions.resolver.ts | 59 +++++++++++++++++++ .../src/lib/resolvers/index.ts | 1 + .../lib/tenant-management-routing.module.ts | 5 +- 12 files changed, 163 insertions(+), 135 deletions(-) create mode 100644 npm/ng-packs/packages/account/src/lib/resolvers/extensions.resolver.ts create mode 100644 npm/ng-packs/packages/account/src/lib/resolvers/index.ts create mode 100644 npm/ng-packs/packages/identity/src/lib/resolvers/extensions.resolver.ts create mode 100644 npm/ng-packs/packages/identity/src/lib/resolvers/index.ts create mode 100644 npm/ng-packs/packages/tenant-management/src/lib/resolvers/extensions.resolver.ts create mode 100644 npm/ng-packs/packages/tenant-management/src/lib/resolvers/index.ts diff --git a/npm/ng-packs/packages/account/src/lib/account-routing.module.ts b/npm/ng-packs/packages/account/src/lib/account-routing.module.ts index 6e651f5baa..e3d8db011d 100644 --- a/npm/ng-packs/packages/account/src/lib/account-routing.module.ts +++ b/npm/ng-packs/packages/account/src/lib/account-routing.module.ts @@ -14,7 +14,8 @@ import { ManageProfileComponent } from './components/manage-profile/manage-profi import { RegisterComponent } from './components/register/register.component'; import { ResetPasswordComponent } from './components/reset-password/reset-password.component'; import { eAccountComponents } from './enums/components'; -import { AccountExtensionsGuardFn, AuthenticationFlowGuardFn } from './guards'; +import { AuthenticationFlowGuardFn } from './guards'; +import { AccountExtensionsResolver } from './resolvers'; const canActivate = [AuthenticationFlowGuardFn]; @@ -73,7 +74,8 @@ const routes: Routes = [ { path: 'manage', component: ReplaceableRouteContainerComponent, - canActivate: [AuthGuardFn, AccountExtensionsGuardFn], + canActivate: [AuthGuardFn], + resolve: [AccountExtensionsResolver], data: { replaceableComponent: { key: eAccountComponents.ManageProfile, diff --git a/npm/ng-packs/packages/account/src/lib/guards/extensions.guard.ts b/npm/ng-packs/packages/account/src/lib/guards/extensions.guard.ts index 185d2056f9..9e22b133ec 100644 --- a/npm/ng-packs/packages/account/src/lib/guards/extensions.guard.ts +++ b/npm/ng-packs/packages/account/src/lib/guards/extensions.guard.ts @@ -18,7 +18,7 @@ import { import { eAccountComponents } from '../enums/components'; /** - * @deprecated Use `AccountExtensionsGuardFn` instead. + * @deprecated Use `AccountExtensionsResolver` instead. */ @Injectable() export class AccountExtensionsGuard implements IAbpGuard { @@ -47,28 +47,3 @@ export class AccountExtensionsGuard implements IAbpGuard { ); } } - -export const AccountExtensionsGuardFn = () => { - const configState = inject(ConfigStateService); - const extensions = inject(ExtensionsService); - - const config = { optional: true }; - - const editFormContributors = inject(ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS, config) || {}; - - return getObjectExtensionEntitiesFromStore(configState, 'Identity').pipe( - map(entities => ({ - [eAccountComponents.PersonalSettings]: entities.User, - })), - mapEntitiesToContributors(configState, 'AbpIdentity'), - tap(objectExtensionContributors => { - mergeWithDefaultProps( - extensions.editFormProps, - DEFAULT_ACCOUNT_FORM_PROPS, - objectExtensionContributors.editForm, - editFormContributors, - ); - }), - map(() => true), - ); -}; diff --git a/npm/ng-packs/packages/account/src/lib/resolvers/extensions.resolver.ts b/npm/ng-packs/packages/account/src/lib/resolvers/extensions.resolver.ts new file mode 100644 index 0000000000..2d46c8a70b --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/resolvers/extensions.resolver.ts @@ -0,0 +1,31 @@ +import { ConfigStateService } from "@abp/ng.core"; +import { ExtensionsService, getObjectExtensionEntitiesFromStore, mapEntitiesToContributors, mergeWithDefaultProps } from "@abp/ng.theme.shared/extensions"; +import { inject } from "@angular/core"; +import { map, tap } from "rxjs"; +import { eAccountComponents } from "../enums"; +import { ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS, DEFAULT_ACCOUNT_FORM_PROPS } from "../tokens"; + +export const AccountExtensionsResolver = () => { + const configState = inject(ConfigStateService); + const extensions = inject(ExtensionsService); + + const config = { optional: true }; + + const editFormContributors = inject(ACCOUNT_EDIT_FORM_PROP_CONTRIBUTORS, config) || {}; + + return getObjectExtensionEntitiesFromStore(configState, 'Identity').pipe( + map(entities => ({ + [eAccountComponents.PersonalSettings]: entities.User, + })), + mapEntitiesToContributors(configState, 'AbpIdentity'), + tap(objectExtensionContributors => { + mergeWithDefaultProps( + extensions.editFormProps, + DEFAULT_ACCOUNT_FORM_PROPS, + objectExtensionContributors.editForm, + editFormContributors, + ); + }), + map(() => true), + ); +}; \ No newline at end of file diff --git a/npm/ng-packs/packages/account/src/lib/resolvers/index.ts b/npm/ng-packs/packages/account/src/lib/resolvers/index.ts new file mode 100644 index 0000000000..754a8ccf12 --- /dev/null +++ b/npm/ng-packs/packages/account/src/lib/resolvers/index.ts @@ -0,0 +1 @@ +export * from './extensions.resolver' \ No newline at end of file diff --git a/npm/ng-packs/packages/identity/src/lib/guards/extensions.guard.ts b/npm/ng-packs/packages/identity/src/lib/guards/extensions.guard.ts index 78916556c3..de4be5df78 100644 --- a/npm/ng-packs/packages/identity/src/lib/guards/extensions.guard.ts +++ b/npm/ng-packs/packages/identity/src/lib/guards/extensions.guard.ts @@ -27,7 +27,7 @@ import { } from '../tokens/extensions.token'; /** - * @deprecated Use `IdentityExtensionsGuardFn` instead. + * @deprecated Use `IdentityExtensionsResolver` instead. */ @Injectable() export class IdentityExtensionsGuard implements IAbpGuard { @@ -83,55 +83,3 @@ export class IdentityExtensionsGuard implements IAbpGuard { ); } } - -export const IdentityExtensionsGuardFn = () => { - const configState = inject(ConfigStateService); - const extensions = inject(ExtensionsService); - - const config = { optional: true }; - - const actionContributors = inject(IDENTITY_ENTITY_ACTION_CONTRIBUTORS, config) || {}; - const toolbarContributors = inject(IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, config) || {}; - const propContributors = inject(IDENTITY_ENTITY_PROP_CONTRIBUTORS, config) || {}; - const createFormContributors = inject(IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS, config) || {}; - const editFormContributors = inject(IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS, config) || {}; - - return getObjectExtensionEntitiesFromStore(configState, 'Identity').pipe( - map(entities => ({ - [eIdentityComponents.Roles]: entities.Role, - [eIdentityComponents.Users]: entities.User, - })), - mapEntitiesToContributors(configState, 'AbpIdentity'), - tap(objectExtensionContributors => { - mergeWithDefaultActions( - extensions.entityActions, - DEFAULT_IDENTITY_ENTITY_ACTIONS, - actionContributors, - ); - mergeWithDefaultActions( - extensions.toolbarActions, - DEFAULT_IDENTITY_TOOLBAR_ACTIONS, - toolbarContributors, - ); - mergeWithDefaultProps( - extensions.entityProps, - DEFAULT_IDENTITY_ENTITY_PROPS, - objectExtensionContributors.prop, - propContributors, - ); - mergeWithDefaultProps( - extensions.createFormProps, - DEFAULT_IDENTITY_CREATE_FORM_PROPS, - objectExtensionContributors.createForm, - createFormContributors, - ); - mergeWithDefaultProps( - extensions.editFormProps, - DEFAULT_IDENTITY_EDIT_FORM_PROPS, - objectExtensionContributors.editForm, - editFormContributors, - ); - }), - map(() => true), - ); -}; diff --git a/npm/ng-packs/packages/identity/src/lib/identity-routing.module.ts b/npm/ng-packs/packages/identity/src/lib/identity-routing.module.ts index af4dea7732..1e165b49a0 100644 --- a/npm/ng-packs/packages/identity/src/lib/identity-routing.module.ts +++ b/npm/ng-packs/packages/identity/src/lib/identity-routing.module.ts @@ -12,14 +12,15 @@ import { import { RolesComponent } from './components/roles/roles.component'; import { UsersComponent } from './components/users/users.component'; import { eIdentityComponents } from './enums/components'; -import { IdentityExtensionsGuardFn } from './guards'; +import { IdentityExtensionsResolver } from './resolvers'; const routes: Routes = [ { path: '', redirectTo: 'roles', pathMatch: 'full' }, { path: '', component: RouterOutletComponent, - canActivate: [AuthGuardFn, PermissionGuardFn, IdentityExtensionsGuardFn], + canActivate: [AuthGuardFn, PermissionGuardFn], + resolve: [IdentityExtensionsResolver], children: [ { path: 'roles', diff --git a/npm/ng-packs/packages/identity/src/lib/resolvers/extensions.resolver.ts b/npm/ng-packs/packages/identity/src/lib/resolvers/extensions.resolver.ts new file mode 100644 index 0000000000..8865e664a6 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/resolvers/extensions.resolver.ts @@ -0,0 +1,58 @@ +import { ConfigStateService } from "@abp/ng.core"; +import { ExtensionsService, getObjectExtensionEntitiesFromStore, mapEntitiesToContributors, mergeWithDefaultActions, mergeWithDefaultProps } from "@abp/ng.theme.shared/extensions"; +import { inject } from "@angular/core"; +import { map, tap } from "rxjs"; +import { eIdentityComponents } from "../enums"; +import { IDENTITY_ENTITY_ACTION_CONTRIBUTORS, IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, IDENTITY_ENTITY_PROP_CONTRIBUTORS, IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS, IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS, DEFAULT_IDENTITY_ENTITY_ACTIONS, DEFAULT_IDENTITY_TOOLBAR_ACTIONS, DEFAULT_IDENTITY_ENTITY_PROPS, DEFAULT_IDENTITY_CREATE_FORM_PROPS, DEFAULT_IDENTITY_EDIT_FORM_PROPS } from "../tokens"; + +export const IdentityExtensionsResolver = () => { + const configState = inject(ConfigStateService); + const extensions = inject(ExtensionsService); + + const config = { optional: true }; + + const actionContributors = inject(IDENTITY_ENTITY_ACTION_CONTRIBUTORS, config) || {}; + const toolbarContributors = inject(IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, config) || {}; + const propContributors = inject(IDENTITY_ENTITY_PROP_CONTRIBUTORS, config) || {}; + const createFormContributors = inject(IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS, config) || {}; + const editFormContributors = inject(IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS, config) || {}; + + return getObjectExtensionEntitiesFromStore(configState, 'Identity').pipe( + map(entities => ({ + [eIdentityComponents.Roles]: entities.Role, + [eIdentityComponents.Users]: entities.User, + })), + mapEntitiesToContributors(configState, 'AbpIdentity'), + tap(objectExtensionContributors => { + mergeWithDefaultActions( + extensions.entityActions, + DEFAULT_IDENTITY_ENTITY_ACTIONS, + actionContributors, + ); + mergeWithDefaultActions( + extensions.toolbarActions, + DEFAULT_IDENTITY_TOOLBAR_ACTIONS, + toolbarContributors, + ); + mergeWithDefaultProps( + extensions.entityProps, + DEFAULT_IDENTITY_ENTITY_PROPS, + objectExtensionContributors.prop, + propContributors, + ); + mergeWithDefaultProps( + extensions.createFormProps, + DEFAULT_IDENTITY_CREATE_FORM_PROPS, + objectExtensionContributors.createForm, + createFormContributors, + ); + mergeWithDefaultProps( + extensions.editFormProps, + DEFAULT_IDENTITY_EDIT_FORM_PROPS, + objectExtensionContributors.editForm, + editFormContributors, + ); + }), + map(() => true), + ); +}; \ No newline at end of file diff --git a/npm/ng-packs/packages/identity/src/lib/resolvers/index.ts b/npm/ng-packs/packages/identity/src/lib/resolvers/index.ts new file mode 100644 index 0000000000..754a8ccf12 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/resolvers/index.ts @@ -0,0 +1 @@ +export * from './extensions.resolver' \ No newline at end of file diff --git a/npm/ng-packs/packages/tenant-management/src/lib/guards/extensions.guard.ts b/npm/ng-packs/packages/tenant-management/src/lib/guards/extensions.guard.ts index 896955cc86..d1be8c9a61 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/guards/extensions.guard.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/guards/extensions.guard.ts @@ -86,54 +86,4 @@ export class TenantManagementExtensionsGuard implements IAbpGuard { } } -export const TenantManagementExtensionsGuardFn: CanActivateFn = () => { - const configState = inject(ConfigStateService); - const extensions = inject(ExtensionsService); - const config = { optional: true }; - - const actionContributors = inject(TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS, config) || {}; - const toolbarContributors = inject(TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS, config) || {}; - const propContributors = inject(TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS, config) || {}; - const createFormContributors = - inject(TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS, config) || {}; - const editFormContributors = inject(TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS, config) || {}; - - return getObjectExtensionEntitiesFromStore(configState, 'TenantManagement').pipe( - map(entities => ({ - [eTenantManagementComponents.Tenants]: entities.Tenant, - })), - mapEntitiesToContributors(configState, 'TenantManagement'), - tap(objectExtensionContributors => { - mergeWithDefaultActions( - extensions.entityActions, - DEFAULT_TENANT_MANAGEMENT_ENTITY_ACTIONS, - actionContributors, - ); - mergeWithDefaultActions( - extensions.toolbarActions, - DEFAULT_TENANT_MANAGEMENT_TOOLBAR_ACTIONS, - toolbarContributors, - ); - mergeWithDefaultProps( - extensions.entityProps, - DEFAULT_TENANT_MANAGEMENT_ENTITY_PROPS, - objectExtensionContributors.prop, - propContributors, - ); - mergeWithDefaultProps( - extensions.createFormProps, - DEFAULT_TENANT_MANAGEMENT_CREATE_FORM_PROPS, - objectExtensionContributors.createForm, - createFormContributors, - ); - mergeWithDefaultProps( - extensions.editFormProps, - DEFAULT_TENANT_MANAGEMENT_EDIT_FORM_PROPS, - objectExtensionContributors.editForm, - editFormContributors, - ); - }), - map(() => true), - ); -}; diff --git a/npm/ng-packs/packages/tenant-management/src/lib/resolvers/extensions.resolver.ts b/npm/ng-packs/packages/tenant-management/src/lib/resolvers/extensions.resolver.ts new file mode 100644 index 0000000000..714627e2f7 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/resolvers/extensions.resolver.ts @@ -0,0 +1,59 @@ +import { ConfigStateService } from "@abp/ng.core"; +import { ExtensionsService, getObjectExtensionEntitiesFromStore, mapEntitiesToContributors, mergeWithDefaultActions, mergeWithDefaultProps } from "@abp/ng.theme.shared/extensions"; +import { inject } from "@angular/core"; +import { CanActivateFn } from "@angular/router"; +import { map, tap } from "rxjs"; +import { eTenantManagementComponents } from "../enums"; +import { TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS, TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS, TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS, TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS, TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS, DEFAULT_TENANT_MANAGEMENT_ENTITY_ACTIONS, DEFAULT_TENANT_MANAGEMENT_TOOLBAR_ACTIONS, DEFAULT_TENANT_MANAGEMENT_ENTITY_PROPS, DEFAULT_TENANT_MANAGEMENT_CREATE_FORM_PROPS, DEFAULT_TENANT_MANAGEMENT_EDIT_FORM_PROPS } from "../tokens"; + +export const TenantManagementExtensionsResolver: CanActivateFn = () => { + const configState = inject(ConfigStateService); + const extensions = inject(ExtensionsService); + + const config = { optional: true }; + + const actionContributors = inject(TENANT_MANAGEMENT_ENTITY_ACTION_CONTRIBUTORS, config) || {}; + const toolbarContributors = inject(TENANT_MANAGEMENT_TOOLBAR_ACTION_CONTRIBUTORS, config) || {}; + const propContributors = inject(TENANT_MANAGEMENT_ENTITY_PROP_CONTRIBUTORS, config) || {}; + const createFormContributors = + inject(TENANT_MANAGEMENT_CREATE_FORM_PROP_CONTRIBUTORS, config) || {}; + const editFormContributors = inject(TENANT_MANAGEMENT_EDIT_FORM_PROP_CONTRIBUTORS, config) || {}; + + return getObjectExtensionEntitiesFromStore(configState, 'TenantManagement').pipe( + map(entities => ({ + [eTenantManagementComponents.Tenants]: entities.Tenant, + })), + mapEntitiesToContributors(configState, 'TenantManagement'), + tap(objectExtensionContributors => { + mergeWithDefaultActions( + extensions.entityActions, + DEFAULT_TENANT_MANAGEMENT_ENTITY_ACTIONS, + actionContributors, + ); + mergeWithDefaultActions( + extensions.toolbarActions, + DEFAULT_TENANT_MANAGEMENT_TOOLBAR_ACTIONS, + toolbarContributors, + ); + mergeWithDefaultProps( + extensions.entityProps, + DEFAULT_TENANT_MANAGEMENT_ENTITY_PROPS, + objectExtensionContributors.prop, + propContributors, + ); + mergeWithDefaultProps( + extensions.createFormProps, + DEFAULT_TENANT_MANAGEMENT_CREATE_FORM_PROPS, + objectExtensionContributors.createForm, + createFormContributors, + ); + mergeWithDefaultProps( + extensions.editFormProps, + DEFAULT_TENANT_MANAGEMENT_EDIT_FORM_PROPS, + objectExtensionContributors.editForm, + editFormContributors, + ); + }), + map(() => true), + ); +}; \ No newline at end of file diff --git a/npm/ng-packs/packages/tenant-management/src/lib/resolvers/index.ts b/npm/ng-packs/packages/tenant-management/src/lib/resolvers/index.ts new file mode 100644 index 0000000000..754a8ccf12 --- /dev/null +++ b/npm/ng-packs/packages/tenant-management/src/lib/resolvers/index.ts @@ -0,0 +1 @@ +export * from './extensions.resolver' \ No newline at end of file diff --git a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management-routing.module.ts b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management-routing.module.ts index 61b438b613..3db4c7c33d 100644 --- a/npm/ng-packs/packages/tenant-management/src/lib/tenant-management-routing.module.ts +++ b/npm/ng-packs/packages/tenant-management/src/lib/tenant-management-routing.module.ts @@ -11,14 +11,15 @@ import { import { TenantsComponent } from './components/tenants/tenants.component'; import { eTenantManagementComponents } from './enums/components'; -import { TenantManagementExtensionsGuardFn } from './guards'; +import { TenantManagementExtensionsResolver } from './resolvers'; const routes: Routes = [ { path: '', redirectTo: 'tenants', pathMatch: 'full' }, { path: '', component: RouterOutletComponent, - canActivate: [AuthGuardFn, PermissionGuardFn, TenantManagementExtensionsGuardFn], + canActivate: [AuthGuardFn, PermissionGuardFn, ], + resolve: [TenantManagementExtensionsResolver], children: [ { path: 'tenants',