mirror of https://github.com/abpframework/abp.git
26 changed files with 436 additions and 501 deletions
@ -0,0 +1,15 @@ |
|||||
|
import { NAVIGATE_TO_MANAGE_PROFILE } from '@abp/ng.core'; |
||||
|
import { makeEnvironmentProviders, Injector } from '@angular/core'; |
||||
|
import { navigateToManageProfileFactory } from '../utils/factories'; |
||||
|
import { ACCOUNT_ROUTE_PROVIDERS } from './route.provider'; |
||||
|
|
||||
|
export function provideAccountConfig() { |
||||
|
return makeEnvironmentProviders([ |
||||
|
ACCOUNT_ROUTE_PROVIDERS, |
||||
|
{ |
||||
|
provide: NAVIGATE_TO_MANAGE_PROFILE, |
||||
|
useFactory: navigateToManageProfileFactory, |
||||
|
deps: [Injector], |
||||
|
}, |
||||
|
]); |
||||
|
} |
||||
@ -1 +1,2 @@ |
|||||
export * from './route.provider'; |
export * from './route.provider'; |
||||
|
export * from './account-config.provider'; |
||||
|
|||||
@ -0,0 +1,166 @@ |
|||||
|
import { |
||||
|
ABP, |
||||
|
AuthErrorFilterService, |
||||
|
CORE_OPTIONS, |
||||
|
DEFAULT_DYNAMIC_LAYOUTS, |
||||
|
DefaultQueueManager, |
||||
|
LOCALIZATIONS, |
||||
|
LocalStorageListenerService, |
||||
|
LocalizationService, |
||||
|
OTHERS_GROUP, |
||||
|
QUEUE_MANAGER, |
||||
|
SORT_COMPARE_FUNC, |
||||
|
TENANT_KEY, |
||||
|
compareFuncFactory, |
||||
|
coreOptionsFactory, |
||||
|
getInitialData, |
||||
|
localeInitializer, |
||||
|
localizationContributor, |
||||
|
noop, |
||||
|
} from '@abp/ng.core'; |
||||
|
import { makeEnvironmentProviders, APP_INITIALIZER, Injector, Provider } from '@angular/core'; |
||||
|
import { TitleStrategy } from '@angular/router'; |
||||
|
import { RoutesHandler } from '../handlers'; |
||||
|
import { AbpTitleStrategy } from '../services/title-strategy.service'; |
||||
|
import { DYNAMIC_LAYOUTS_TOKEN } from '../tokens/dynamic-layout.token'; |
||||
|
import { CookieLanguageProvider } from './cookie-language.provider'; |
||||
|
import { IncludeLocalizationResourcesProvider } from './include-localization-resources.provider'; |
||||
|
import { LocaleProvider } from './locale.provider'; |
||||
|
|
||||
|
export enum CoreFeatureKind { |
||||
|
Options, |
||||
|
compareFuncFactory, |
||||
|
TitleStrategy, |
||||
|
} |
||||
|
|
||||
|
export interface CoreFeature<KindT extends CoreFeatureKind> { |
||||
|
ɵkind: KindT; |
||||
|
ɵproviders: Provider[]; |
||||
|
} |
||||
|
|
||||
|
function makeCoreFeature<KindT extends CoreFeatureKind>( |
||||
|
kind: KindT, |
||||
|
providers: Provider[], |
||||
|
): CoreFeature<KindT> { |
||||
|
return { |
||||
|
ɵkind: kind, |
||||
|
ɵproviders: providers, |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
export function withOptions(options = {} as ABP.Root): CoreFeature<CoreFeatureKind.Options> { |
||||
|
return makeCoreFeature(CoreFeatureKind.Options, [ |
||||
|
{ |
||||
|
provide: 'CORE_OPTIONS', |
||||
|
useValue: options, |
||||
|
}, |
||||
|
{ |
||||
|
provide: CORE_OPTIONS, |
||||
|
useFactory: coreOptionsFactory, |
||||
|
deps: ['CORE_OPTIONS'], |
||||
|
}, |
||||
|
{ provide: TENANT_KEY, useValue: options.tenantKey || '__tenant' }, |
||||
|
{ |
||||
|
provide: LOCALIZATIONS, |
||||
|
multi: true, |
||||
|
useValue: localizationContributor(options.localizations), |
||||
|
deps: [LocalizationService], |
||||
|
}, |
||||
|
{ |
||||
|
provide: OTHERS_GROUP, |
||||
|
useValue: options.othersGroup || 'AbpUi::OthersGroup', |
||||
|
}, |
||||
|
{ |
||||
|
provide: DYNAMIC_LAYOUTS_TOKEN, |
||||
|
useValue: options.dynamicLayouts || DEFAULT_DYNAMIC_LAYOUTS, |
||||
|
}, |
||||
|
]); |
||||
|
} |
||||
|
|
||||
|
export function withTitleStrategy(strategy: any): CoreFeature<CoreFeatureKind.TitleStrategy> { |
||||
|
return makeCoreFeature(CoreFeatureKind.TitleStrategy, [ |
||||
|
{ |
||||
|
provide: TitleStrategy, |
||||
|
useExisting: strategy, |
||||
|
}, |
||||
|
]); |
||||
|
} |
||||
|
|
||||
|
export function withCompareFuncFactory( |
||||
|
factory: any, |
||||
|
): CoreFeature<CoreFeatureKind.compareFuncFactory> { |
||||
|
return makeCoreFeature(CoreFeatureKind.compareFuncFactory, [ |
||||
|
{ |
||||
|
provide: SORT_COMPARE_FUNC, |
||||
|
useFactory: factory, |
||||
|
}, |
||||
|
]); |
||||
|
} |
||||
|
|
||||
|
export function provideCoreModuleConfig(...features: CoreFeature<CoreFeatureKind>[]) { |
||||
|
const providers = [ |
||||
|
LocaleProvider, |
||||
|
CookieLanguageProvider, |
||||
|
{ |
||||
|
provide: APP_INITIALIZER, |
||||
|
multi: true, |
||||
|
deps: [Injector], |
||||
|
useFactory: getInitialData, |
||||
|
}, |
||||
|
{ |
||||
|
provide: APP_INITIALIZER, |
||||
|
multi: true, |
||||
|
deps: [Injector], |
||||
|
useFactory: localeInitializer, |
||||
|
}, |
||||
|
{ |
||||
|
provide: APP_INITIALIZER, |
||||
|
multi: true, |
||||
|
deps: [LocalizationService], |
||||
|
useFactory: noop, |
||||
|
}, |
||||
|
{ |
||||
|
provide: APP_INITIALIZER, |
||||
|
multi: true, |
||||
|
deps: [LocalStorageListenerService], |
||||
|
useFactory: noop, |
||||
|
}, |
||||
|
{ |
||||
|
provide: APP_INITIALIZER, |
||||
|
multi: true, |
||||
|
deps: [RoutesHandler], |
||||
|
useFactory: noop, |
||||
|
}, |
||||
|
{ |
||||
|
provide: SORT_COMPARE_FUNC, |
||||
|
useFactory: compareFuncFactory, |
||||
|
}, |
||||
|
{ |
||||
|
provide: QUEUE_MANAGER, |
||||
|
useClass: DefaultQueueManager, |
||||
|
}, |
||||
|
AuthErrorFilterService, |
||||
|
IncludeLocalizationResourcesProvider, |
||||
|
{ |
||||
|
provide: TitleStrategy, |
||||
|
useExisting: AbpTitleStrategy, |
||||
|
}, |
||||
|
]; |
||||
|
|
||||
|
for (const feature of features) { |
||||
|
providers.push(...feature.ɵproviders); |
||||
|
} |
||||
|
|
||||
|
return makeEnvironmentProviders(providers); |
||||
|
} |
||||
|
|
||||
|
export function provideCoreModuleConfigChild(options = {} as ABP.Child) { |
||||
|
return makeEnvironmentProviders([ |
||||
|
{ |
||||
|
provide: LOCALIZATIONS, |
||||
|
multi: true, |
||||
|
useValue: localizationContributor(options.localizations), |
||||
|
deps: [LocalizationService], |
||||
|
}, |
||||
|
]); |
||||
|
} |
||||
@ -1,3 +1,4 @@ |
|||||
export * from './cookie-language.provider'; |
export * from './cookie-language.provider'; |
||||
export * from './locale.provider'; |
export * from './locale.provider'; |
||||
export * from './include-localization-resources.provider'; |
export * from './include-localization-resources.provider'; |
||||
|
export * from './core-module-config.provider'; |
||||
|
|||||
@ -0,0 +1,6 @@ |
|||||
|
import { makeEnvironmentProviders } from '@angular/core'; |
||||
|
import { FEATURE_MANAGEMENT_SETTINGS_PROVIDERS } from './feature-management-settings.provider'; |
||||
|
|
||||
|
export function provideFeatureManagementConfig() { |
||||
|
return makeEnvironmentProviders([FEATURE_MANAGEMENT_SETTINGS_PROVIDERS]); |
||||
|
} |
||||
@ -1 +1,2 @@ |
|||||
export * from './feature-management-settings.provider'; |
export * from './feature-management-settings.provider'; |
||||
|
export * from './feature-management-config.provider'; |
||||
|
|||||
@ -0,0 +1,6 @@ |
|||||
|
import { makeEnvironmentProviders } from '@angular/core'; |
||||
|
import { IDENTITY_ROUTE_PROVIDERS } from './route.provider'; |
||||
|
|
||||
|
export function provideIdentityConfig() { |
||||
|
return makeEnvironmentProviders([IDENTITY_ROUTE_PROVIDERS]); |
||||
|
} |
||||
@ -1 +1,2 @@ |
|||||
export * from './route.provider'; |
export * from './route.provider'; |
||||
|
export * from './identity-config.provider'; |
||||
|
|||||
@ -1 +1,2 @@ |
|||||
export * from './navigate-to-manage-profile.provider'; |
export * from './navigate-to-manage-profile.provider'; |
||||
|
export * from './oauth-module-config.provider'; |
||||
|
|||||
@ -0,0 +1,67 @@ |
|||||
|
import { |
||||
|
AuthService, |
||||
|
AuthGuard, |
||||
|
authGuard, |
||||
|
ApiInterceptor, |
||||
|
PIPE_TO_LOGIN_FN_KEY, |
||||
|
CHECK_AUTHENTICATION_STATE_FN_KEY, |
||||
|
AbpLocalStorageService, |
||||
|
AuthErrorFilterService, |
||||
|
noop, |
||||
|
} from '@abp/ng.core'; |
||||
|
import { APP_INITIALIZER, Provider, makeEnvironmentProviders } from '@angular/core'; |
||||
|
import { OAuthModule, OAuthStorage } from 'angular-oauth2-oidc'; |
||||
|
import { AbpOAuthGuard, abpOAuthGuard } from '../guards'; |
||||
|
import { OAuthConfigurationHandler } from '../handlers'; |
||||
|
import { OAuthApiInterceptor } from '../interceptors'; |
||||
|
import { AbpOAuthService, OAuthErrorFilterService } from '../services'; |
||||
|
import { pipeToLogin, checkAccessToken } from '../utils'; |
||||
|
import { NavigateToManageProfileProvider } from './navigate-to-manage-profile.provider'; |
||||
|
|
||||
|
import { HTTP_INTERCEPTORS } from '@angular/common/http'; |
||||
|
|
||||
|
export function provideAbpOAuthConfig() { |
||||
|
const providers = [ |
||||
|
{ |
||||
|
provide: AuthService, |
||||
|
useClass: AbpOAuthService, |
||||
|
}, |
||||
|
{ |
||||
|
provide: AuthGuard, |
||||
|
useClass: AbpOAuthGuard, |
||||
|
}, |
||||
|
{ |
||||
|
provide: authGuard, |
||||
|
useValue: abpOAuthGuard, |
||||
|
}, |
||||
|
{ |
||||
|
provide: ApiInterceptor, |
||||
|
useClass: OAuthApiInterceptor, |
||||
|
}, |
||||
|
{ |
||||
|
provide: PIPE_TO_LOGIN_FN_KEY, |
||||
|
useValue: pipeToLogin, |
||||
|
}, |
||||
|
{ |
||||
|
provide: CHECK_AUTHENTICATION_STATE_FN_KEY, |
||||
|
useValue: checkAccessToken, |
||||
|
}, |
||||
|
{ |
||||
|
provide: HTTP_INTERCEPTORS, |
||||
|
useExisting: ApiInterceptor, |
||||
|
multi: true, |
||||
|
}, |
||||
|
NavigateToManageProfileProvider, |
||||
|
{ |
||||
|
provide: APP_INITIALIZER, |
||||
|
multi: true, |
||||
|
deps: [OAuthConfigurationHandler], |
||||
|
useFactory: noop, |
||||
|
}, |
||||
|
OAuthModule.forRoot().providers as Provider[], |
||||
|
{ provide: OAuthStorage, useClass: AbpLocalStorageService }, |
||||
|
{ provide: AuthErrorFilterService, useExisting: OAuthErrorFilterService }, |
||||
|
]; |
||||
|
|
||||
|
return makeEnvironmentProviders(providers); |
||||
|
} |
||||
@ -1,3 +1,4 @@ |
|||||
export * from './route.provider'; |
export * from './route.provider'; |
||||
export * from './setting-tab.provider'; |
export * from './setting-tab.provider'; |
||||
export * from './visible.provider'; |
export * from './visible.provider'; |
||||
|
export * from './setting-management-config.provider'; |
||||
|
|||||
@ -0,0 +1,14 @@ |
|||||
|
import { makeEnvironmentProviders } from '@angular/core'; |
||||
|
import { SETTING_MANAGEMENT_FEATURES_PROVIDERS } from './features.token'; |
||||
|
import { SETTING_MANAGEMENT_ROUTE_PROVIDERS } from './route.provider'; |
||||
|
import { SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS } from './setting-tab.provider'; |
||||
|
import { SETTING_MANAGEMENT_VISIBLE_PROVIDERS } from './visible.provider'; |
||||
|
|
||||
|
export function provideSettingManagementConfig() { |
||||
|
return makeEnvironmentProviders([ |
||||
|
SETTING_MANAGEMENT_ROUTE_PROVIDERS, |
||||
|
SETTING_MANAGEMENT_SETTING_TAB_PROVIDERS, |
||||
|
SETTING_MANAGEMENT_FEATURES_PROVIDERS, |
||||
|
SETTING_MANAGEMENT_VISIBLE_PROVIDERS, |
||||
|
]); |
||||
|
} |
||||
@ -1 +1,2 @@ |
|||||
export * from './route.provider'; |
export * from './route.provider'; |
||||
|
export * from './tenant-management-config.provider'; |
||||
|
|||||
@ -0,0 +1,6 @@ |
|||||
|
import { makeEnvironmentProviders } from '@angular/core'; |
||||
|
import { TENANT_MANAGEMENT_ROUTE_PROVIDERS } from './route.provider'; |
||||
|
|
||||
|
export function provideTenantManagementConfig() { |
||||
|
return makeEnvironmentProviders([TENANT_MANAGEMENT_ROUTE_PROVIDERS]); |
||||
|
} |
||||
@ -0,0 +1,75 @@ |
|||||
|
import { APP_INITIALIZER, ErrorHandler, makeEnvironmentProviders } from '@angular/core'; |
||||
|
import { noop } from '@abp/ng.core'; |
||||
|
import { NgbDateParserFormatter } from '@ng-bootstrap/ng-bootstrap'; |
||||
|
import { |
||||
|
VALIDATION_BLUEPRINTS, |
||||
|
VALIDATION_MAP_ERRORS_FN, |
||||
|
defaultMapErrorsFn, |
||||
|
VALIDATION_VALIDATE_ON_SUBMIT, |
||||
|
} from '@ngx-validate/core'; |
||||
|
import { DEFAULT_VALIDATION_BLUEPRINTS } from '../constants'; |
||||
|
import { DocumentDirHandlerService } from '../handlers'; |
||||
|
import { RootParams } from '../models'; |
||||
|
import { THEME_SHARED_APPEND_CONTENT, HTTP_ERROR_CONFIG } from '../tokens'; |
||||
|
import { CONFIRMATION_ICONS, DEFAULT_CONFIRMATION_ICONS } from '../tokens/confirmation-icons.token'; |
||||
|
import { DateParserFormatter } from '../utils'; |
||||
|
import { DEFAULT_HANDLERS_PROVIDERS } from './error-handlers.provider'; |
||||
|
import { NG_BOOTSTRAP_CONFIG_PROVIDERS } from './ng-bootstrap-config.provider'; |
||||
|
import { THEME_SHARED_ROUTE_PROVIDERS } from './route.provider'; |
||||
|
import { tenantNotFoundProvider } from './tenant-not-found.provider'; |
||||
|
|
||||
|
export function provideThemeSharedConfig( |
||||
|
{ httpErrorConfig, validation = {}, confirmationIcons = {} } = {} as RootParams, |
||||
|
) { |
||||
|
const providers = [ |
||||
|
{ |
||||
|
provide: APP_INITIALIZER, |
||||
|
multi: true, |
||||
|
deps: [ErrorHandler], |
||||
|
useFactory: noop, |
||||
|
}, |
||||
|
THEME_SHARED_ROUTE_PROVIDERS, |
||||
|
{ |
||||
|
provide: APP_INITIALIZER, |
||||
|
multi: true, |
||||
|
deps: [THEME_SHARED_APPEND_CONTENT], |
||||
|
useFactory: noop, |
||||
|
}, |
||||
|
{ provide: HTTP_ERROR_CONFIG, useValue: httpErrorConfig }, |
||||
|
{ provide: NgbDateParserFormatter, useClass: DateParserFormatter }, |
||||
|
NG_BOOTSTRAP_CONFIG_PROVIDERS, |
||||
|
{ |
||||
|
provide: VALIDATION_BLUEPRINTS, |
||||
|
useValue: { |
||||
|
...DEFAULT_VALIDATION_BLUEPRINTS, |
||||
|
...(validation.blueprints || {}), |
||||
|
}, |
||||
|
}, |
||||
|
{ |
||||
|
provide: VALIDATION_MAP_ERRORS_FN, |
||||
|
useValue: validation.mapErrorsFn || defaultMapErrorsFn, |
||||
|
}, |
||||
|
{ |
||||
|
provide: VALIDATION_VALIDATE_ON_SUBMIT, |
||||
|
useValue: validation.validateOnSubmit, |
||||
|
}, |
||||
|
DocumentDirHandlerService, |
||||
|
{ |
||||
|
provide: APP_INITIALIZER, |
||||
|
useFactory: noop, |
||||
|
multi: true, |
||||
|
deps: [DocumentDirHandlerService], |
||||
|
}, |
||||
|
{ |
||||
|
provide: CONFIRMATION_ICONS, |
||||
|
useValue: { |
||||
|
...DEFAULT_CONFIRMATION_ICONS, |
||||
|
...(confirmationIcons || {}), |
||||
|
}, |
||||
|
}, |
||||
|
tenantNotFoundProvider, |
||||
|
DEFAULT_HANDLERS_PROVIDERS, |
||||
|
]; |
||||
|
|
||||
|
return makeEnvironmentProviders(providers); |
||||
|
} |
||||
Loading…
Reference in new issue