From f378ac87d743f9e2dbad7dac10ff8994d5926ea6 Mon Sep 17 00:00:00 2001 From: erdemcaygor Date: Fri, 2 May 2025 11:12:51 +0300 Subject: [PATCH] identity module standalone migration --- .../lib/components/roles/roles.component.ts | 19 +++++-- .../lib/components/users/users.component.ts | 25 ++++++++-- .../identity/src/lib/identity.module.ts | 27 ++-------- .../identity/src/lib/identity.routes.ts | 49 +++++++++++++++++++ .../packages/identity/src/lib/identity.ts | 35 +++++++++++++ 5 files changed, 126 insertions(+), 29 deletions(-) create mode 100644 npm/ng-packs/packages/identity/src/lib/identity.routes.ts create mode 100644 npm/ng-packs/packages/identity/src/lib/identity.ts diff --git a/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts index 89c24fd6a8..664c992478 100644 --- a/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts +++ b/npm/ng-packs/packages/identity/src/lib/components/roles/roles.component.ts @@ -1,8 +1,19 @@ -import { ListService, PagedAndSortedResultRequestDto, PagedResultDto } from '@abp/ng.core'; +import { + CoreModule, + ListService, + PagedAndSortedResultRequestDto, + PagedResultDto, +} from '@abp/ng.core'; import { IdentityRoleDto, IdentityRoleService } from '@abp/ng.identity/proxy'; import { ePermissionManagementComponents } from '@abp/ng.permission-management'; -import { Confirmation, ConfirmationService, ToasterService } from '@abp/ng.theme.shared'; import { + Confirmation, + ConfirmationService, + ThemeSharedModule, + ToasterService, +} from '@abp/ng.theme.shared'; +import { + ExtensibleModule, EXTENSIONS_IDENTIFIER, FormPropData, generateFormFromProps, @@ -11,9 +22,10 @@ import { Component, inject, Injector, OnInit } from '@angular/core'; import { UntypedFormGroup } from '@angular/forms'; import { finalize } from 'rxjs/operators'; import { eIdentityComponents } from '../../enums/components'; +import { CommonModule } from '@angular/common'; +import { PageModule } from '@abp/ng.components/page'; @Component({ - standalone: false, selector: 'abp-roles', templateUrl: './roles.component.html', providers: [ @@ -23,6 +35,7 @@ import { eIdentityComponents } from '../../enums/components'; useValue: eIdentityComponents.Roles, }, ], + imports: [CommonModule, CoreModule, ThemeSharedModule, ExtensibleModule, PageModule], }) export class RolesComponent implements OnInit { protected readonly list = inject(ListService); diff --git a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts index ccca6aa1a9..d3eda88ae9 100644 --- a/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts +++ b/npm/ng-packs/packages/identity/src/lib/components/users/users.component.ts @@ -1,18 +1,23 @@ -import { ListService, PagedResultDto } from '@abp/ng.core'; +import { CoreModule, ListService, PagedResultDto } from '@abp/ng.core'; import { GetIdentityUsersInput, IdentityRoleDto, IdentityUserDto, IdentityUserService, } from '@abp/ng.identity/proxy'; -import { ePermissionManagementComponents } from '@abp/ng.permission-management'; +import { + ePermissionManagementComponents, + PermissionManagementModule, +} from '@abp/ng.permission-management'; import { Confirmation, ConfirmationService, eFormComponets, + ThemeSharedModule, ToasterService, } from '@abp/ng.theme.shared'; import { + ExtensibleModule, EXTENSIONS_IDENTIFIER, FormPropData, generateFormFromProps, @@ -34,9 +39,12 @@ import { } from '@angular/forms'; import { finalize, switchMap, tap } from 'rxjs/operators'; import { eIdentityComponents } from '../../enums/components'; +import { CommonModule } from '@angular/common'; +import { PageModule } from '@abp/ng.components/page'; +import { NgbDropdownModule, NgbNavModule } from '@ng-bootstrap/ng-bootstrap'; +import { NgxValidateCoreModule } from '@ngx-validate/core'; @Component({ - standalone: false, selector: 'abp-users', templateUrl: './users.component.html', providers: [ @@ -46,6 +54,17 @@ import { eIdentityComponents } from '../../enums/components'; useValue: eIdentityComponents.Users, }, ], + imports: [ + CommonModule, + PageModule, + CoreModule, + ThemeSharedModule, + ExtensibleModule, + PermissionManagementModule, + NgbNavModule, + NgbDropdownModule, + NgxValidateCoreModule, + ], }) export class UsersComponent implements OnInit { protected readonly list = inject(ListService); diff --git a/npm/ng-packs/packages/identity/src/lib/identity.module.ts b/npm/ng-packs/packages/identity/src/lib/identity.module.ts index ea07602f7c..f834456e85 100644 --- a/npm/ng-packs/packages/identity/src/lib/identity.module.ts +++ b/npm/ng-packs/packages/identity/src/lib/identity.module.ts @@ -1,14 +1,6 @@ -import { CoreModule, LazyModuleFactory } from '@abp/ng.core'; -import { PermissionManagementModule } from '@abp/ng.permission-management'; -import { ThemeSharedModule } from '@abp/ng.theme.shared'; -import { ExtensibleModule } from '@abp/ng.components/extensible'; +import { LazyModuleFactory } from '@abp/ng.core'; import { ModuleWithProviders, NgModule, NgModuleFactory } from '@angular/core'; -import { NgbDropdownModule, NgbNavModule } from '@ng-bootstrap/ng-bootstrap'; -import { NgxValidateCoreModule } from '@ngx-validate/core'; -import { RolesComponent } from './components/roles/roles.component'; -import { UsersComponent } from './components/users/users.component'; import { IdentityExtensionsGuard } from './guards/extensions.guard'; -import { IdentityRoutingModule } from './identity-routing.module'; import { IdentityConfigOptions } from './models/config-options'; import { IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS, @@ -17,22 +9,11 @@ import { IDENTITY_ENTITY_PROP_CONTRIBUTORS, IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, } from './tokens/extensions.token'; -import { PageModule } from '@abp/ng.components/page'; @NgModule({ - declarations: [RolesComponent, UsersComponent], - exports: [RolesComponent, UsersComponent], - imports: [ - CoreModule, - IdentityRoutingModule, - NgbNavModule, - ThemeSharedModule, - ExtensibleModule, - NgbDropdownModule, - PermissionManagementModule, - NgxValidateCoreModule, - PageModule, - ], + declarations: [], + exports: [], + imports: [], }) export class IdentityModule { static forChild(options: IdentityConfigOptions = {}): ModuleWithProviders { diff --git a/npm/ng-packs/packages/identity/src/lib/identity.routes.ts b/npm/ng-packs/packages/identity/src/lib/identity.routes.ts new file mode 100644 index 0000000000..2b3fea8057 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/identity.routes.ts @@ -0,0 +1,49 @@ +import { Routes } from '@angular/router'; +import { + authGuard, + permissionGuard, + ReplaceableComponents, + ReplaceableRouteContainerComponent, + RouterOutletComponent, +} from '@abp/ng.core'; +import { RolesComponent, UsersComponent } from './components'; +import { identityExtensionsResolver } from './resolvers'; +import { provideIdentity } from './identity'; +import { eIdentityComponents } from './enums'; + +export const identityRoutes: Routes = [ + { + path: '', + component: RouterOutletComponent, + canActivate: [authGuard, permissionGuard], + resolve: [identityExtensionsResolver], + providers: [...provideIdentity()], + children: [ + { path: '', redirectTo: 'roles', pathMatch: 'full' }, + { + path: 'roles', + component: ReplaceableRouteContainerComponent, + data: { + requiredPolicy: 'AbpIdentity.Roles', + replaceableComponent: { + key: eIdentityComponents.Roles, + defaultComponent: RolesComponent, + } as ReplaceableComponents.RouteData, + }, + title: 'AbpIdentity::Roles', + }, + { + path: 'users', + component: ReplaceableRouteContainerComponent, + data: { + requiredPolicy: 'AbpIdentity.Users', + replaceableComponent: { + key: eIdentityComponents.Users, + defaultComponent: UsersComponent, + } as ReplaceableComponents.RouteData, + }, + title: 'AbpIdentity::Users', + }, + ], + }, +]; diff --git a/npm/ng-packs/packages/identity/src/lib/identity.ts b/npm/ng-packs/packages/identity/src/lib/identity.ts new file mode 100644 index 0000000000..c6bec50f41 --- /dev/null +++ b/npm/ng-packs/packages/identity/src/lib/identity.ts @@ -0,0 +1,35 @@ +import { + IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS, + IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS, + IDENTITY_ENTITY_ACTION_CONTRIBUTORS, + IDENTITY_ENTITY_PROP_CONTRIBUTORS, + IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, +} from './tokens'; +import { IdentityExtensionsGuard } from './guards'; +import { IdentityConfigOptions } from './models'; + +export function provideIdentity(options: IdentityConfigOptions = {}) { + return [ + { + provide: IDENTITY_ENTITY_ACTION_CONTRIBUTORS, + useValue: options.entityActionContributors, + }, + { + provide: IDENTITY_TOOLBAR_ACTION_CONTRIBUTORS, + useValue: options.toolbarActionContributors, + }, + { + provide: IDENTITY_ENTITY_PROP_CONTRIBUTORS, + useValue: options.entityPropContributors, + }, + { + provide: IDENTITY_CREATE_FORM_PROP_CONTRIBUTORS, + useValue: options.createFormPropContributors, + }, + { + provide: IDENTITY_EDIT_FORM_PROP_CONTRIBUTORS, + useValue: options.editFormPropContributors, + }, + IdentityExtensionsGuard, + ]; +}