@dflat-core/web 1.0.47 → 1.0.49

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dflat-core/web",
3
- "version": "1.0.47",
3
+ "version": "1.0.49",
4
4
  "description": "Librairies Angular Dflat (core, core-*, system-*) et assets partagés, empaquetées en un module npm unique.",
5
5
  "license": "MIT",
6
6
  "peerDependencies": {
@@ -16,10 +16,19 @@ export declare class DataService {
16
16
  baseUrl: string;
17
17
  httpClient: HttpClient;
18
18
  data: any[];
19
+ private initCache;
19
20
  constructor(env: EnvironmentBase, httpClient: HttpClient, headerService: HeadersService);
20
21
  getFormattedParams(params: any): any;
21
22
  private formatValueRecursive;
22
23
  getUrlQueryParams(filter: any): HttpParams;
24
+ /**
25
+ * Appel GET sans paramètre gardé dans le cache d'initialisation (InitCacheService) : données
26
+ * chargées avant la recherche, identiques d'une ouverture de l'écran à l'autre. Le cache est
27
+ * vidé au redémarrage de l'API (horodatage du jeton d'accès) et au changement d'utilisateur.
28
+ */
29
+ getCached<T>(entityKey: string, action: string): Observable<T>;
30
+ /** Vide le cache d'initialisation d'une entité, ou tout le cache. */
31
+ clearCached(entityKey?: string): void;
23
32
  getViewFilterDescriptors(entityKey: string): Observable<FilterDescriptor[]>;
24
33
  getViewColumns(entityKey: string): Observable<ColumnDescriptor[]>;
25
34
  search<TData>(entityKey: string, filter: any): Observable<PagedList<TData>>;
@@ -340,6 +340,15 @@ export interface IUserCredential extends IIdentifiable {
340
340
  ProfileImageUrl: string;
341
341
  AvatarUrl: string;
342
342
  }
343
+ /** Fournisseur d'identité externe proposé à l'écran de connexion (Account/GetLoginProviders). */
344
+ export interface IExternalLoginProvider {
345
+ /** Google, Microsoft ou Apple. */
346
+ Provider: string;
347
+ /** Identifiant de l'application chez le fournisseur. */
348
+ ClientId: string;
349
+ /** Microsoft seulement : locataire du point d'accès (common par défaut). */
350
+ TenantId?: string;
351
+ }
343
352
  export declare class User implements IUserCredential {
344
353
  AccessToken: string;
345
354
  RefreshToken: string;
@@ -1,9 +1,9 @@
1
1
  import { EnsureModuleLoadedOnceGuard, EnvironmentBase } from "@dflat-core/web/core";
2
2
  import * as i0 from "@angular/core";
3
- import { EventEmitter, InjectionToken, Injector } from "@angular/core";
3
+ import { EventEmitter, InjectionToken, Injector, NgZone } from "@angular/core";
4
4
  import * as i1 from "@angular/common";
5
5
  import * as i2 from "@dflat-core/web/core-model";
6
- import { ApiError, DictionnaryWrapper, IUserCredential, Message, Notification, User } from "@dflat-core/web/core-model";
6
+ import { ApiError, DictionnaryWrapper, IExternalLoginProvider, IUserCredential, Message, Notification, User } from "@dflat-core/web/core-model";
7
7
  import { ActivatedRouteSnapshot, Route, Router, RouterStateSnapshot } from "@angular/router";
8
8
  import { Observable, ReplaySubject, Subject, Subscription } from "rxjs";
9
9
  import { HttpClient, HttpErrorResponse, HttpEvent, HttpHandler, HttpHeaders, HttpInterceptor, HttpRequest } from "@angular/common/http";
@@ -189,6 +189,16 @@ export declare class AuthService {
189
189
  private refreshTokenSubscription;
190
190
  constructor(headersService: HeadersService, busMsg: BusMessageService, httpClient: HttpClient, router: Router, localStorage: LocalStoreManager, menuService: MenuService, env: EnvironmentBase);
191
191
  login(username: string, password: string, rememberMe: boolean): Observable<IUserCredential>;
192
+ /**
193
+ * Fournisseurs d'identité externes (Google, Microsoft, Apple) activés et configurés côté
194
+ * serveur (section ExternalLogin de la configuration).
195
+ */
196
+ getLoginProviders(): Observable<IExternalLoginProvider[]>;
197
+ /**
198
+ * Connexion par le jeton d'identité remis par un fournisseur externe. Le serveur vérifie le
199
+ * jeton, retrouve ou crée le compte, puis répond comme la connexion par mot de passe.
200
+ */
201
+ loginExternal(provider: string, idToken: string, rememberMe: boolean, firstName?: string, lastName?: string): Observable<IUserCredential>;
192
202
  register(captchaToken: string, firstName: string, lastName: string, email: string, password: string, rememberMe: boolean): Observable<IUserCredential>;
193
203
  activate(code: string): Observable<Response>;
194
204
  saveUserInfos(user: any, userDetails: string, rememberMe?: boolean): void;
@@ -252,6 +262,69 @@ export declare class AuthInterceptor implements HttpInterceptor {
252
262
  static ɵfac: i0.ɵɵFactoryDeclaration<AuthInterceptor, never>;
253
263
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
254
264
  }
265
+ /** Jeton d'identité remis par un fournisseur externe, à transmettre à AuthService.loginExternal. */
266
+ export interface IExternalLoginResult {
267
+ /** Google, Microsoft ou Apple. */
268
+ provider: string;
269
+ /** Jeton d'identité (JWT) signé par le fournisseur. */
270
+ idToken: string;
271
+ /** Prénom transmis hors du jeton (Apple, à la première connexion). */
272
+ firstName?: string;
273
+ /** Nom transmis hors du jeton (Apple, à la première connexion). */
274
+ lastName?: string;
275
+ }
276
+ /**
277
+ * Lance, dans le navigateur, la connexion chez un fournisseur d'identité externe et en récupère
278
+ * le jeton d'identité. Aucune dépendance npm : les scripts officiels de Google et d'Apple sont
279
+ * chargés à la demande, Microsoft passe par une fenêtre OpenID Connect.
280
+ *
281
+ * Adresse de retour à déclarer chez Microsoft et Apple : l'origine de l'application
282
+ * (`window.location.origin`, ex. https://mon-application.fr). Chez Google, cette origine est à
283
+ * déclarer comme « origine JavaScript autorisée ».
284
+ */
285
+ export declare class ExternalLoginService {
286
+ private zone;
287
+ static readonly google = "Google";
288
+ static readonly microsoft = "Microsoft";
289
+ static readonly apple = "Apple";
290
+ private static readonly googleScript;
291
+ private static readonly appleScript;
292
+ private scripts;
293
+ constructor(zone: NgZone);
294
+ /**
295
+ * Affiche le bouton officiel « Continuer avec Google » dans un élément de la page. Google
296
+ * n'accepte la connexion que depuis son propre bouton : il ne peut pas être remplacé.
297
+ * @param container Élément qui reçoit le bouton.
298
+ * @param provider Réglages de Google (identifiant client).
299
+ * @param onToken Appelé avec le jeton d'identité quand l'utilisateur s'est connecté.
300
+ */
301
+ renderGoogleButton(container: HTMLElement, provider: IExternalLoginProvider, onToken: (result: IExternalLoginResult) => void): Promise<void>;
302
+ /**
303
+ * Connexion par un compte Microsoft, dans une fenêtre : flux OpenID Connect qui renvoie le
304
+ * jeton d'identité à l'origine de l'application (« jetons d'ID » à cocher dans l'inscription
305
+ * de l'application chez Microsoft).
306
+ */
307
+ signInWithMicrosoft(provider: IExternalLoginProvider): Promise<IExternalLoginResult>;
308
+ /** Connexion par un identifiant Apple, dans la fenêtre du script officiel « Sign in with Apple ». */
309
+ signInWithApple(provider: IExternalLoginProvider): Promise<IExternalLoginResult>;
310
+ /** Vrai si l'erreur vient de l'utilisateur qui a fermé la fenêtre de connexion. */
311
+ isCancellation(error: any): boolean;
312
+ /** Adresse de retour déclarée chez les fournisseurs : l'origine de l'application. */
313
+ private get redirectUri();
314
+ /**
315
+ * Ouvre la fenêtre de connexion et attend son retour sur l'origine de l'application : la
316
+ * réponse du fournisseur est lue dans le fragment de son adresse.
317
+ */
318
+ private openPopup;
319
+ /** Charge une fois le script d'un fournisseur. */
320
+ private loadScript;
321
+ /** Valeur aléatoire (nonce, état) liant la réponse du fournisseur à la demande. */
322
+ private random;
323
+ /** Contenu d'un jeton JWT, sans vérification : la signature est contrôlée par le serveur. */
324
+ private readPayload;
325
+ static ɵfac: i0.ɵɵFactoryDeclaration<ExternalLoginService, never>;
326
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
327
+ }
255
328
  export declare class BreadcrumbService {
256
329
  protected title: Title;
257
330
  current: ReplaySubject<any>;
@@ -349,6 +422,35 @@ export declare class HubService {
349
422
  static ɵfac: i0.ɵɵFactoryDeclaration<HubService, never>;
350
423
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
351
424
  }
425
+ /**
426
+ * Cache des données d'initialisation des écrans (colonnes, descripteurs de filtre, filtre vide,
427
+ * actions, formulaire) : tout ce qui est chargé avant la recherche et ne change pas d'une
428
+ * ouverture à l'autre.
429
+ *
430
+ * Le cache est vidé quand le jeton d'accès reçu (connexion, rafraîchissement, déconnexion)
431
+ * porte un autre horodatage serveur (claim "cachestamp", régénéré à chaque redémarrage de l'API
432
+ * ou par Config/ResetClientCache) ou un autre utilisateur.
433
+ */
434
+ export declare class InitCacheService {
435
+ static readonly CACHE_STAMP = "cachestamp";
436
+ static readonly USER_ACCOUNT_ID = "id";
437
+ private entries;
438
+ private stamp;
439
+ constructor(busMsg: BusMessageService, localStorage: LocalStoreManager);
440
+ /**
441
+ * Retourne la valeur en cache pour la clé, ou la charge par la fabrique (une seule requête,
442
+ * partagée par les appels simultanés). Chaque abonné reçoit sa propre copie : il peut la
443
+ * modifier sans toucher au cache.
444
+ */
445
+ get<T>(key: string, factory: () => Observable<T>): Observable<T>;
446
+ /** Vide le cache, ou seulement les entrées dont la clé commence par le préfixe. */
447
+ clear(prefix?: string): void;
448
+ private onTokenChanged;
449
+ /** Identité du cache : horodatage serveur et utilisateur du jeton (null sans jeton). */
450
+ private readStamp;
451
+ static ɵfac: i0.ɵɵFactoryDeclaration<InitCacheService, never>;
452
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
453
+ }
352
454
  export declare class MessagesService {
353
455
  private messagesList;
354
456
  newMessages: Subject<Message>;
@@ -367,6 +469,8 @@ export declare class ServerUrl {
367
469
  static hubUrl: string;
368
470
  static loginPath: string;
369
471
  static connectPath: string;
472
+ static connectExternalPath: string;
473
+ static loginProvidersPath: string;
370
474
  static registerPath: string;
371
475
  static activatePath: string;
372
476
  static refreshPath: string;
@@ -1,7 +1,7 @@
1
1
  import * as i0 from "@angular/core";
2
2
  import * as i1 from "@angular/common";
3
3
  import * as i2 from "@dflat-core/web/system-model";
4
- import { ActivationResults, ActivationViewModel, AddressView, AddressViewFilterViewModel, ChangePasswordViewModel, CheckSireneInfoViewModel, CompanyFilterViewModel, CompanyView, Country, CountryFilterViewModel, CreatePaymentIntentViewModel, Currency, CurrencyFilterViewModel, CustomFieldFilterViewModel, CustomFieldGroup, CustomFieldGroupEntityFilterViewModel, CustomFieldGroupEntityView, CustomFieldGroupFilterViewModel, CustomFieldGroupItemFilterViewModel, CustomFieldGroupItemView, CustomFieldOptionsFilterViewModel, CustomFieldOptionsView, CustomFieldValueFilterViewModel, CustomFieldValueView, CustomFieldView, DayInfo, DayInfoFilterViewModel, EntityFiles, EntityFilesFilterViewModel, ErrorCategory, ErrorCategoryFilterViewModel, ExchangeRateFilterViewModel, ExchangeRateView, ExecOperation, FileDescriptor, FileTypes, FilesFilterViewModel, FilesView, GetFileDescriptorsViewModel, Keyword, KeywordFilterViewModel, LoginViewModel, MetaEntity, MetaEntityField, MetaEntityFieldFilterViewModel, MetaEntityFilterViewModel, MetaEntityFormFieldFilterViewModel, MetaEntityFormFieldView, MetaEntityFormFilterViewModel, MetaEntityFormSectionFilterViewModel, MetaEntityFormSectionView, MetaEntityFormView, MetaEntityKeyword, MetaEntityKeywordFilterViewModel, MetaEntityRelation, MetaEntityRelationDefinition, MetaEntityRelationDefinitionFilterViewModel, MetaEntityRelationFilterViewModel, MetaEntityTranslation, MetaEntityTranslationFilterViewModel, MetaEntityViewField, MetaEntityViewFieldFilterViewModel, News, NewsFilterViewModel, NewsView, ParameterSection, ParameterSectionFilterViewModel, ParameterValueView, ParameterValueViewFilterViewModel, ParameterView, ParameterViewFilterViewModel, PaymentIntentViewModel, Permission, PermissionFilterViewModel, PermissionView, PresentationContext, PresentationProfile, PresentationProfileFilterViewModel, PresentationProfileItem, PresentationProfileItemFilterViewModel, PresentationProfileItemView, Rating, RatingFilterViewModel, RatingSummary, RatingSummaryFilterViewModel, RatingView, RegisterViewModel, RequestEntity, RequestEntityFilterViewModel, RequestFilterViewModel, RequestResultContext, RequestResultFilterViewModel, RequestResultView, RequestType, RequestTypeFilterViewModel, RequestView, ResetPasswordViewModel, ResourceKey, ResourceKeyFilterViewModel, ResourceLanguage, ResourceLanguageFilterViewModel, ResourceTranslationFilterViewModel, ResourceTranslationView, RoleFilterViewModel, RolePermission, RolePermissionFilterViewModel, RoleView, SirenCheckResults, SubcompanyFilterViewModel, SupplierCompany, SupplierCompanyFilterViewModel, SupplierFilterViewModel, SupplierView, SynchronizedCompanyView, SynchronizedCompanyViewFilterViewModel, TvaRateFilterViewModel, TvaRateView, UploadFileResult, UserAccount, UserAccountCompanyFilterViewModel, UserAccountCompanyView, UserAccountFilterViewModel, UserAccountNews, UserAccountNewsFilterViewModel, UserAccountRoleFilterViewModel, UserAccountRoleView, UserAccountToken, UserAccountTokenFilterViewModel, UserCredential, UserFavorite, UserFavoriteFilterViewModel, UserGroup, UserGroupDefinitionFilterViewModel, UserGroupDefinitionView, UserGroupFilterViewModel, UserHistory, UserHistoryFilterViewModel, UserPermissionView, UserPermissionViewFilterViewModel, UserProfileViewModel, UserSession, UserSessionFilterViewModel, Version, VersionFilterViewModel } from "@dflat-core/web/system-model";
4
+ import { ActivationResults, ActivationViewModel, AddressView, AddressViewFilterViewModel, ChangePasswordViewModel, CheckSireneInfoViewModel, CompanyFilterViewModel, CompanyView, Country, CountryFilterViewModel, CreatePaymentIntentViewModel, Currency, CurrencyFilterViewModel, CustomFieldFilterViewModel, CustomFieldGroup, CustomFieldGroupEntityFilterViewModel, CustomFieldGroupEntityView, CustomFieldGroupFilterViewModel, CustomFieldGroupItemFilterViewModel, CustomFieldGroupItemView, CustomFieldOptionsFilterViewModel, CustomFieldOptionsView, CustomFieldValueFilterViewModel, CustomFieldValueView, CustomFieldView, DayInfo, DayInfoFilterViewModel, EntityFiles, EntityFilesFilterViewModel, ErrorCategory, ErrorCategoryFilterViewModel, ExchangeRateFilterViewModel, ExchangeRateView, ExecOperation, ExternalLoginProviderViewModel, ExternalLoginViewModel, FileDescriptor, FileTypes, FilesFilterViewModel, FilesView, GetFileDescriptorsViewModel, Keyword, KeywordFilterViewModel, LoginViewModel, MetaEntity, MetaEntityField, MetaEntityFieldFilterViewModel, MetaEntityFilterViewModel, MetaEntityFormFieldFilterViewModel, MetaEntityFormFieldView, MetaEntityFormFilterViewModel, MetaEntityFormSectionFilterViewModel, MetaEntityFormSectionView, MetaEntityFormView, MetaEntityKeyword, MetaEntityKeywordFilterViewModel, MetaEntityRelation, MetaEntityRelationDefinition, MetaEntityRelationDefinitionFilterViewModel, MetaEntityRelationFilterViewModel, MetaEntityTranslation, MetaEntityTranslationFilterViewModel, MetaEntityViewField, MetaEntityViewFieldFilterViewModel, News, NewsFilterViewModel, NewsView, ParameterSection, ParameterSectionFilterViewModel, ParameterValueView, ParameterValueViewFilterViewModel, ParameterView, ParameterViewFilterViewModel, PaymentIntentViewModel, Permission, PermissionFilterViewModel, PermissionView, PresentationContext, PresentationProfile, PresentationProfileFilterViewModel, PresentationProfileItem, PresentationProfileItemFilterViewModel, PresentationProfileItemView, Rating, RatingFilterViewModel, RatingSummary, RatingSummaryFilterViewModel, RatingView, RegisterViewModel, RequestEntity, RequestEntityFilterViewModel, RequestFilterViewModel, RequestResultContext, RequestResultFilterViewModel, RequestResultView, RequestType, RequestTypeFilterViewModel, RequestView, ResetPasswordViewModel, ResourceKey, ResourceKeyFilterViewModel, ResourceLanguage, ResourceLanguageFilterViewModel, ResourceTranslationFilterViewModel, ResourceTranslationView, RoleFilterViewModel, RolePermission, RolePermissionFilterViewModel, RoleView, SirenCheckResults, SubcompanyFilterViewModel, SupplierCompany, SupplierCompanyFilterViewModel, SupplierFilterViewModel, SupplierView, SynchronizedCompanyView, SynchronizedCompanyViewFilterViewModel, TvaRateFilterViewModel, TvaRateView, UploadFileResult, UserAccount, UserAccountCompanyFilterViewModel, UserAccountCompanyView, UserAccountFilterViewModel, UserAccountLoginFilterViewModel, UserAccountLoginView, UserAccountNews, UserAccountNewsFilterViewModel, UserAccountRoleFilterViewModel, UserAccountRoleView, UserAccountToken, UserAccountTokenFilterViewModel, UserCredential, UserFavorite, UserFavoriteFilterViewModel, UserGroup, UserGroupDefinitionFilterViewModel, UserGroupDefinitionView, UserGroupFilterViewModel, UserHistory, UserHistoryFilterViewModel, UserPermissionView, UserPermissionViewFilterViewModel, UserProfileViewModel, UserSession, UserSessionFilterViewModel, Version, VersionFilterViewModel } from "@dflat-core/web/system-model";
5
5
  import * as i3 from "@dflat-core/web/core-model";
6
6
  import { ColumnDescriptor, EntityViewModelWithFields, EntityWithSpecifics, ExportModel, ExtendedProperty, FilterDescriptor, ImageFormats, PagedList, RunActionContext, SaveResult, SaveResults, TreeItem } from "@dflat-core/web/core-model";
7
7
  import { DataService, EntityDataService } from "@dflat-core/web/core-data";
@@ -19,7 +19,9 @@ export declare class AccountDataService {
19
19
  changePassword(entity: ChangePasswordViewModel): Observable<any>;
20
20
  checkSIRET(checkViewModel: CheckSireneInfoViewModel): Observable<SirenCheckResults>;
21
21
  connect(model: LoginViewModel): Observable<UserCredential>;
22
+ connectExternal(model: ExternalLoginViewModel): Observable<UserCredential>;
22
23
  disconnect(refreshToken: string): Observable<boolean>;
24
+ getLoginProviders(): Observable<ExternalLoginProviderViewModel[]>;
23
25
  refreshToken(refreshToken: string): Observable<UserCredential>;
24
26
  register(registerViewModel: RegisterViewModel): Observable<UserCredential>;
25
27
  resetPassword(activationModel: ResetPasswordViewModel): Observable<ActivationResults>;
@@ -90,6 +92,7 @@ export declare class ConfigDataService {
90
92
  getAgentExecutionHistory(): Observable<ExecOperation[]>;
91
93
  getCachedKeys(): Observable<string[]>;
92
94
  removeExpiredTokens(): Observable<any>;
95
+ resetClientCache(): Observable<number>;
93
96
  runAgentETL(): Observable<SaveResult>;
94
97
  runSSISSP(): Observable<SaveResult>;
95
98
  static ɵfac: i0.ɵɵFactoryDeclaration<ConfigDataService, never>;
@@ -549,4 +552,11 @@ export declare class RequestTypeDataService extends EntityDataService<RequestTyp
549
552
  constructor(dataService: DataService);
550
553
  static ɵfac: i0.ɵɵFactoryDeclaration<RequestTypeDataService, never>;
551
554
  static ɵprov: i0.ɵɵInjectableDeclaration<any>;
555
+ }
556
+ export declare class UserAccountLoginDataService extends EntityDataService<UserAccountLoginView, UserAccountLoginFilterViewModel> {
557
+ protected dataService: DataService;
558
+ getEntityKey(): string;
559
+ constructor(dataService: DataService);
560
+ static ɵfac: i0.ɵɵFactoryDeclaration<UserAccountLoginDataService, never>;
561
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
552
562
  }
@@ -287,6 +287,20 @@ export interface UserAccountNews extends EntityViewModel {
287
287
  RowVersion?: Date;
288
288
  UserAccountId?: number;
289
289
  }
290
+ export interface UserAccountLoginView extends EntityViewModel {
291
+ DisplayName?: string;
292
+ Id?: number;
293
+ IsEmailVerified?: boolean;
294
+ LastLoginDate?: Date;
295
+ LoginProvider?: number;
296
+ LoginProviderLabel?: string;
297
+ ProviderEmail?: string;
298
+ ProviderKey?: string;
299
+ RowVersion?: Date;
300
+ UserAccountEmail?: string;
301
+ UserAccountId?: number;
302
+ UserAccountPseudo?: string;
303
+ }
290
304
  export interface UserAccountCompanyView extends EntityViewModel {
291
305
  CanEditTurnover?: boolean;
292
306
  CompanyCode?: string;
@@ -963,6 +977,11 @@ export interface UserAccountNewsFilterViewModel extends EntityFilterViewModel<Us
963
977
  ReadDate?: Date;
964
978
  UserAccountId?: number;
965
979
  }
980
+ export interface UserAccountLoginFilterViewModel extends EntityFilterViewModel<UserAccountLoginView> {
981
+ LoginProvider?: number;
982
+ ProviderKey?: string;
983
+ UserAccountId?: number;
984
+ }
966
985
  export interface UserAccountFilterViewModel extends EntityFilterViewModel<UserAccount> {
967
986
  CompanyId?: number;
968
987
  Email?: string;
@@ -1246,6 +1265,17 @@ export interface FileDescriptor {
1246
1265
  LengthDescription?: string;
1247
1266
  OwnerUser?: string;
1248
1267
  }
1268
+ export interface ExternalLoginViewModel {
1269
+ FirstName?: string;
1270
+ IdToken?: string;
1271
+ LastName?: string;
1272
+ Provider?: string;
1273
+ }
1274
+ export interface ExternalLoginProviderViewModel {
1275
+ ClientId?: string;
1276
+ Provider?: string;
1277
+ TenantId?: string;
1278
+ }
1249
1279
  export interface ExecOperation {
1250
1280
  CallerName?: string;
1251
1281
  Completed?: boolean;
@@ -1510,6 +1540,11 @@ export declare enum MetaEntityFieldTypes {
1510
1540
  Column = 0,
1511
1541
  CustomField = 1
1512
1542
  }
1543
+ export declare enum LoginProviders {
1544
+ Google = 0,
1545
+ Microsoft = 1,
1546
+ Apple = 2
1547
+ }
1513
1548
  export declare enum LockStatus {
1514
1549
  Unknown = 0,
1515
1550
  Unlocked = 1,
@@ -319,6 +319,12 @@ export declare class SystemPermissions {
319
319
  static readonly SYSTEM_USERACCOUNTCOMPANY_EDIT: string;
320
320
  static readonly SYSTEM_USERACCOUNTCOMPANY_EXPORT: string;
321
321
  static readonly SYSTEM_USERACCOUNTCOMPANY_VIEW: string;
322
+ static readonly SYSTEM_USERACCOUNTLOGIN: string;
323
+ static readonly SYSTEM_USERACCOUNTLOGIN_ADD: string;
324
+ static readonly SYSTEM_USERACCOUNTLOGIN_DELETE: string;
325
+ static readonly SYSTEM_USERACCOUNTLOGIN_EDIT: string;
326
+ static readonly SYSTEM_USERACCOUNTLOGIN_EXPORT: string;
327
+ static readonly SYSTEM_USERACCOUNTLOGIN_VIEW: string;
322
328
  static readonly SYSTEM_USERACCOUNTNEWS: string;
323
329
  static readonly SYSTEM_USERACCOUNTNEWS_ADD: string;
324
330
  static readonly SYSTEM_USERACCOUNTNEWS_DELETE: string;
@@ -436,6 +442,7 @@ export declare class BaseSystemMenuItemProvider {
436
442
  static readonly tvaRateMenuItem: MenuItem;
437
443
  static readonly userAccountMenuItem: MenuItem;
438
444
  static readonly userAccountCompanyMenuItem: MenuItem;
445
+ static readonly userAccountLoginMenuItem: MenuItem;
439
446
  static readonly userAccountNewsMenuItem: MenuItem;
440
447
  static readonly userAccountRoleMenuItem: MenuItem;
441
448
  static readonly userAccountTokenMenuItem: MenuItem;
@@ -542,6 +549,7 @@ export declare class BaseSystemEntityKeys {
542
549
  static readonly TvaRate: string;
543
550
  static readonly UserAccount: string;
544
551
  static readonly UserAccountCompany: string;
552
+ static readonly UserAccountLogin: string;
545
553
  static readonly UserAccountNews: string;
546
554
  static readonly UserAccountRole: string;
547
555
  static readonly UserAccountToken: string;
@@ -1,43 +1,43 @@
1
1
  import * as i0 from "@angular/core";
2
- import { AfterViewInit, EventEmitter, InjectionToken, Injector, ModuleWithProviders, OnDestroy, OnInit, Renderer2, Type } from "@angular/core";
2
+ import { AfterViewInit, ElementRef, EventEmitter, InjectionToken, Injector, ModuleWithProviders, OnDestroy, OnInit, Renderer2, Type } from "@angular/core";
3
3
  import * as i7 from "@dflat-core/web/core";
4
4
  import { EnsureModuleLoadedOnceGuard, EnvironmentBase } from "@dflat-core/web/core";
5
- import * as i123 from "@angular/router";
5
+ import * as i124 from "@angular/router";
6
6
  import { ActivatedRoute, Router, Routes } from "@angular/router";
7
- import * as i112 from "@dflat-core/web/core-ux";
7
+ import * as i113 from "@dflat-core/web/core-ux";
8
8
  import { Action, ActionService, ActionsComponent, AlertService, ApplicationService, BaseComponent, BaseEditorComponent, DefaultLayoutComponent, DynamicFormComponent, EntityFacade, EntitySelector, FacadeModalService, IActionComponent, IIsCancel, IPpService, ISectionConfig, ImageService, LayoutPreferences, ModalService, NewEditorComponent, OrderableModalService, SelectorMapperServiceBase } from "@dflat-core/web/core-ux";
9
- import * as i115 from "@dflat-core/web/system-model";
10
- import { ActivationResults, AddressView, AddressViewFilterViewModel, ChangePasswordViewModel, CompanyFilterViewModel, CompanyView, Country, CountryFilterViewModel, Currency, CurrencyFilterViewModel, CustomFieldFilterViewModel, CustomFieldGroup, CustomFieldGroupEntityFilterViewModel, CustomFieldGroupEntityView, CustomFieldGroupFilterViewModel, CustomFieldGroupItemFilterViewModel, CustomFieldGroupItemView, CustomFieldOptionsFilterViewModel, CustomFieldOptionsView, CustomFieldValueFilterViewModel, CustomFieldValueView, CustomFieldView, DayInfo, DayInfoFilterViewModel, EntityFiles, EntityFilesFilterViewModel, ErrorCategory, ErrorCategoryFilterViewModel, ExchangeRateFilterViewModel, ExchangeRateView, FileDescriptor, FileTypes, FilesFilterViewModel, FilesView, ImageUploadEvent, Keyword, KeywordFilterViewModel, MetaEntity, MetaEntityField, MetaEntityFieldFilterViewModel, MetaEntityFilterViewModel, MetaEntityFormFieldFilterViewModel, MetaEntityFormFieldView, MetaEntityFormFilterViewModel, MetaEntityFormSectionFilterViewModel, MetaEntityFormSectionView, MetaEntityFormView, MetaEntityKeyword, MetaEntityKeywordFilterViewModel, MetaEntityRelation, MetaEntityRelationDefinition, MetaEntityRelationDefinitionFilterViewModel, MetaEntityRelationFilterViewModel, MetaEntityTranslation, MetaEntityTranslationFilterViewModel, MetaEntityViewField, MetaEntityViewFieldFilterViewModel, News, NewsFilterViewModel, ParameterSection, ParameterSectionFilterViewModel, ParameterValueView, ParameterValueViewFilterViewModel, ParameterView, ParameterViewFilterViewModel, Permission, PermissionFilterViewModel, PermissionView, PresentationContext, PresentationProfile, PresentationProfileFilterViewModel, PresentationProfileItem, PresentationProfileItemFilterViewModel, PresentationProfileItemView, PresentationProfilePurposes, PresentationProfileScopes, RatingFilterViewModel, RatingSummary, RatingSummaryFilterViewModel, RatingView, RequestEntity, RequestEntityFilterViewModel, RequestFilterViewModel, RequestResultFilterViewModel, RequestResultView, RequestType, RequestTypeFilterViewModel, RequestView, ResourceKey, ResourceKeyFilterViewModel, ResourceLanguage, ResourceLanguageFilterViewModel, ResourceTranslationFilterViewModel, ResourceTranslationView, RoleFilterViewModel, RolePermission, RolePermissionFilterViewModel, RoleView, SubcompanyFilterViewModel, SupplierCompany, SupplierCompanyFilterViewModel, SupplierFilterViewModel, SupplierView, SynchronizedCompanyView, SynchronizedCompanyViewFilterViewModel, TvaRateFilterViewModel, TvaRateView, UploadFileResult, UserAccount, UserAccountCompanyFilterViewModel, UserAccountCompanyView, UserAccountFilterViewModel, UserAccountNews, UserAccountNewsFilterViewModel, UserAccountRoleFilterViewModel, UserAccountRoleView, UserAccountToken, UserAccountTokenFilterViewModel, UserFavorite, UserFavoriteFilterViewModel, UserGroup, UserGroupDefinitionFilterViewModel, UserGroupDefinitionView, UserGroupFilterViewModel, UserHistory, UserHistoryFilterViewModel, UserPermissionView, UserPermissionViewFilterViewModel, UserProfileViewModel, UserSession, UserSessionFilterViewModel, Version, VersionFilterViewModel } from "@dflat-core/web/system-model";
11
- import * as i111 from "@dflat-core/web/core-model";
12
- import { ApiError, ColumnDescriptor, EntityViewModel, EntityViewModelWithFields, FilterDescriptor, HistoryItem, IUserCredential, ImageFormats, SaveResult, Section, SpecificSection, User } from "@dflat-core/web/core-model";
13
- import * as i116 from "@dflat-core/web/system-data";
9
+ import * as i116 from "@dflat-core/web/system-model";
10
+ import { ActivationResults, AddressView, AddressViewFilterViewModel, ChangePasswordViewModel, CompanyFilterViewModel, CompanyView, Country, CountryFilterViewModel, Currency, CurrencyFilterViewModel, CustomFieldFilterViewModel, CustomFieldGroup, CustomFieldGroupEntityFilterViewModel, CustomFieldGroupEntityView, CustomFieldGroupFilterViewModel, CustomFieldGroupItemFilterViewModel, CustomFieldGroupItemView, CustomFieldOptionsFilterViewModel, CustomFieldOptionsView, CustomFieldValueFilterViewModel, CustomFieldValueView, CustomFieldView, DayInfo, DayInfoFilterViewModel, EntityFiles, EntityFilesFilterViewModel, ErrorCategory, ErrorCategoryFilterViewModel, ExchangeRateFilterViewModel, ExchangeRateView, FileDescriptor, FileTypes, FilesFilterViewModel, FilesView, ImageUploadEvent, Keyword, KeywordFilterViewModel, MetaEntity, MetaEntityField, MetaEntityFieldFilterViewModel, MetaEntityFilterViewModel, MetaEntityFormFieldFilterViewModel, MetaEntityFormFieldView, MetaEntityFormFilterViewModel, MetaEntityFormSectionFilterViewModel, MetaEntityFormSectionView, MetaEntityFormView, MetaEntityKeyword, MetaEntityKeywordFilterViewModel, MetaEntityRelation, MetaEntityRelationDefinition, MetaEntityRelationDefinitionFilterViewModel, MetaEntityRelationFilterViewModel, MetaEntityTranslation, MetaEntityTranslationFilterViewModel, MetaEntityViewField, MetaEntityViewFieldFilterViewModel, News, NewsFilterViewModel, ParameterSection, ParameterSectionFilterViewModel, ParameterValueView, ParameterValueViewFilterViewModel, ParameterView, ParameterViewFilterViewModel, Permission, PermissionFilterViewModel, PermissionView, PresentationContext, PresentationProfile, PresentationProfileFilterViewModel, PresentationProfileItem, PresentationProfileItemFilterViewModel, PresentationProfileItemView, PresentationProfilePurposes, PresentationProfileScopes, RatingFilterViewModel, RatingSummary, RatingSummaryFilterViewModel, RatingView, RequestEntity, RequestEntityFilterViewModel, RequestFilterViewModel, RequestResultFilterViewModel, RequestResultView, RequestType, RequestTypeFilterViewModel, RequestView, ResourceKey, ResourceKeyFilterViewModel, ResourceLanguage, ResourceLanguageFilterViewModel, ResourceTranslationFilterViewModel, ResourceTranslationView, RoleFilterViewModel, RolePermission, RolePermissionFilterViewModel, RoleView, SubcompanyFilterViewModel, SupplierCompany, SupplierCompanyFilterViewModel, SupplierFilterViewModel, SupplierView, SynchronizedCompanyView, SynchronizedCompanyViewFilterViewModel, TvaRateFilterViewModel, TvaRateView, UploadFileResult, UserAccount, UserAccountCompanyFilterViewModel, UserAccountCompanyView, UserAccountFilterViewModel, UserAccountLoginFilterViewModel, UserAccountLoginView, UserAccountNews, UserAccountNewsFilterViewModel, UserAccountRoleFilterViewModel, UserAccountRoleView, UserAccountToken, UserAccountTokenFilterViewModel, UserFavorite, UserFavoriteFilterViewModel, UserGroup, UserGroupDefinitionFilterViewModel, UserGroupDefinitionView, UserGroupFilterViewModel, UserHistory, UserHistoryFilterViewModel, UserPermissionView, UserPermissionViewFilterViewModel, UserProfileViewModel, UserSession, UserSessionFilterViewModel, Version, VersionFilterViewModel } from "@dflat-core/web/system-model";
11
+ import * as i112 from "@dflat-core/web/core-model";
12
+ import { ApiError, ColumnDescriptor, EntityViewModel, EntityViewModelWithFields, FilterDescriptor, HistoryItem, IExternalLoginProvider, IUserCredential, ImageFormats, SaveResult, Section, SpecificSection, User } from "@dflat-core/web/core-model";
13
+ import * as i117 from "@dflat-core/web/system-data";
14
14
  import { AccountDataService, CompanyDataService, ConfigDataService, CountryDataService, CurrencyDataService, CustomFieldGroupEntityDataService, CustomFieldGroupItemDataService, CustomFieldOptionsDataService, ExchangeRateDataService, FilesDataService, MetaEntityFieldDataService, PresentationProfileDataService, PresentationProfileItemDataService, SupplierDataService, TvaRateDataService, UserAccountCompanyDataService, UserAccountDataService, UserAccountRoleDataService, UserGroupDefinitionDataService } from "@dflat-core/web/system-data";
15
15
  import { Observable, Subject, Subscription } from "rxjs";
16
16
  import * as i14 from "ngx-toastr";
17
17
  import { ToastrService } from "ngx-toastr";
18
18
  import * as i9 from "@dflat-core/web/core-services";
19
- import { AuthInterceptor, AuthService, BreadcrumbService, HubService, LocalStoreManager, MenuItem, MenuService, PermissionService, UserService } from "@dflat-core/web/core-services";
19
+ import { AuthInterceptor, AuthService, BreadcrumbService, ExternalLoginService, HubService, IExternalLoginResult, LocalStoreManager, MenuItem, MenuService, PermissionService, UserService } from "@dflat-core/web/core-services";
20
20
  import * as i2 from "@angular/platform-browser";
21
21
  import { Title } from "@angular/platform-browser";
22
- import * as i110 from "@angular/forms";
22
+ import * as i111 from "@angular/forms";
23
23
  import { NgForm, UntypedFormBuilder, UntypedFormGroup } from "@angular/forms";
24
- import * as i122 from "@samotics/ngx-treeview";
24
+ import * as i123 from "@samotics/ngx-treeview";
25
25
  import { TreeviewConfig, TreeviewItem } from "@samotics/ngx-treeview";
26
- import * as i109 from "@kolkov/angular-editor";
26
+ import * as i110 from "@kolkov/angular-editor";
27
27
  import { AngularEditorConfig } from "@kolkov/angular-editor";
28
28
  import { HttpErrorResponse, HttpEvent } from "@angular/common/http";
29
29
  import { NgxImageCompressService } from "ngx-image-compress";
30
- import * as i107 from "@angular/cdk/drag-drop";
30
+ import * as i108 from "@angular/cdk/drag-drop";
31
31
  import { CdkDragDrop } from "@angular/cdk/drag-drop";
32
- import * as i106 from "ngx-bootstrap/modal";
32
+ import * as i107 from "ngx-bootstrap/modal";
33
33
  import { BsModalService } from "ngx-bootstrap/modal";
34
- import * as i108 from "@angular/common";
35
- import * as i114 from "@dflat-core/web/core-data";
36
- import * as i117 from "@dflat-core/web/system-root";
37
- import * as i118 from "@ng-select/ng-select";
38
- import * as i119 from "ng-recaptcha-2";
39
- import * as i120 from "ng-http-loader";
40
- import * as i121 from "ngx-dropzone";
34
+ import * as i109 from "@angular/common";
35
+ import * as i115 from "@dflat-core/web/core-data";
36
+ import * as i118 from "@dflat-core/web/system-root";
37
+ import * as i119 from "@ng-select/ng-select";
38
+ import * as i120 from "ng-recaptcha-2";
39
+ import * as i121 from "ng-http-loader";
40
+ import * as i122 from "ngx-dropzone";
41
41
  import * as i3 from "@angular/platform-browser/animations";
42
42
  import * as i5 from "@swimlane/ngx-datatable";
43
43
  import * as i15 from "ngx-bootstrap/accordion";
@@ -1502,6 +1502,31 @@ export declare class UserAccountCompanyComponent extends BaseUserAccountCompanyC
1502
1502
  static ɵfac: i0.ɵɵFactoryDeclaration<UserAccountCompanyComponent, never>;
1503
1503
  static ɵcmp: i0.ɵɵComponentDeclaration<UserAccountCompanyComponent, "msw-user-account-company-search", never, {}, {}, never, ["[actionsPanelContent]", "*"], false, never>;
1504
1504
  }
1505
+ /**
1506
+ * Recherche et édition des UserAccountLoginView (partie générée) : titre, lien, clé d'entité et
1507
+ * permission. Composant spécifique : UserAccountLoginComponent.
1508
+ */
1509
+ export declare abstract class BaseUserAccountLoginComponent extends BaseComponent<UserAccountLoginFilterViewModel, UserAccountLoginView> {
1510
+ protected route: ActivatedRoute;
1511
+ getTitle(): string;
1512
+ getPath(): string;
1513
+ getEntityKey(): string;
1514
+ get PermissionKey(): string;
1515
+ constructor(app: ApplicationService, route: ActivatedRoute);
1516
+ static ɵfac: i0.ɵɵFactoryDeclaration<BaseUserAccountLoginComponent, never>;
1517
+ static ɵdir: i0.ɵɵDirectiveDeclaration<BaseUserAccountLoginComponent, never, never, {}, {}, never, never, true, never>;
1518
+ }
1519
+ declare namespace useraccountlogin_component_d_exports {
1520
+ export { UserAccountLoginComponent };
1521
+ }
1522
+ /**
1523
+ * Recherche et édition des UserAccountLoginView : code spécifique du composant (la partie générée
1524
+ * est BaseUserAccountLoginComponent). Créé par codegenerator (dflat -g ts), qui ne le modifie plus.
1525
+ */
1526
+ export declare class UserAccountLoginComponent extends BaseUserAccountLoginComponent {
1527
+ static ɵfac: i0.ɵɵFactoryDeclaration<UserAccountLoginComponent, never>;
1528
+ static ɵcmp: i0.ɵɵComponentDeclaration<UserAccountLoginComponent, "msw-user-account-login-search", never, {}, {}, never, ["[actionsPanelContent]", "*"], false, never>;
1529
+ }
1505
1530
  /**
1506
1531
  * Recherche et édition des UserAccountNews (partie générée) : titre, lien, clé d'entité et
1507
1532
  * permission. Composant spécifique : UserAccountNewsComponent.
@@ -2176,10 +2201,31 @@ export declare class LoginComponent implements OnInit {
2176
2201
  loading: boolean;
2177
2202
  hasErrors: boolean;
2178
2203
  errorMessage: string;
2204
+ /** Fournisseurs d'identité externes activés côté serveur (section ExternalLogin de la configuration). */
2205
+ providers: IExternalLoginProvider[];
2206
+ protected externalLoginService: ExternalLoginService;
2207
+ /** Emplacement du bouton officiel de Google, rendu dès qu'il est dans la page. */
2208
+ set googleButton(element: ElementRef<HTMLElement>);
2179
2209
  constructor(userServ: UserService, authService: AuthService, router: Router, route: ActivatedRoute, selectUserCompanyActionService: SelectUserCompanyActionService);
2180
2210
  ngOnInit(): void;
2181
2211
  getShouldRedirect(): boolean;
2182
2212
  login(): void;
2213
+ /** Vrai si le fournisseur (Google, Microsoft, Apple) est proposé. */
2214
+ hasProvider(name: string): boolean;
2215
+ /** Connexion par un compte Microsoft. */
2216
+ loginWithMicrosoft(): void;
2217
+ /** Connexion par un identifiant Apple. */
2218
+ loginWithApple(): void;
2219
+ /** Transmet au serveur le jeton d'identité du fournisseur, puis connecte l'utilisateur. */
2220
+ protected loginExternal(result: IExternalLoginResult): void;
2221
+ /** Erreur survenue chez le fournisseur ; une fenêtre fermée par l'utilisateur n'en est pas une. */
2222
+ protected onExternalError(error: any): void;
2223
+ /**
2224
+ * Message d'un refus de connexion par mot de passe. Un compte sans mot de passe est orienté
2225
+ * vers son fournisseur (réponse ExternalLoginRequired du serveur).
2226
+ */
2227
+ protected getLoginError(error: any): string;
2228
+ private getProvider;
2183
2229
  OnLogin(data: IUserCredential): void;
2184
2230
  onRegisterClick(): void;
2185
2231
  onResetPasswordClick(): void;
@@ -3106,7 +3152,7 @@ declare namespace system_ux_module_d_exports {
3106
3152
  export declare class SystemUxModule extends EnsureModuleLoadedOnceGuard {
3107
3153
  constructor(injector: Injector);
3108
3154
  static ɵfac: i0.ɵɵFactoryDeclaration<SystemUxModule, never>;
3109
- static ɵmod: i0.ɵɵNgModuleDeclaration<SystemUxModule, [typeof AddressComponent, typeof CompanyComponent, typeof CountryComponent, typeof CurrencyComponent, typeof CustomFieldComponent, typeof CustomFieldGroupComponent, typeof CustomFieldGroupEntityComponent, typeof CustomFieldGroupItemComponent, typeof CustomFieldOptionsComponent, typeof CustomFieldValueComponent, typeof DayInfoComponent, typeof ErrorCategoryComponent, typeof ExchangeRateComponent, typeof FilesComponent, typeof KeywordComponent, typeof MetaEntityComponent, typeof MetaEntityFieldComponent, typeof MetaEntityFormComponent, typeof MetaEntityFormFieldComponent, typeof MetaEntityFormSectionComponent, typeof MetaEntityKeywordComponent, typeof MetaEntityRelationComponent, typeof MetaEntityRelationDefinitionComponent, typeof MetaEntityTranslationComponent, typeof MetaEntityViewFieldComponent, typeof NewsComponent, typeof ParameterComponent, typeof ParameterSectionComponent, typeof ParameterValueComponent, typeof PermissionComponent, typeof PresentationProfileItemComponent, typeof RatingComponent, typeof RatingSummaryComponent, typeof RequestComponent, typeof RequestEntityComponent, typeof RequestResultComponent, typeof RequestTypeComponent, typeof ResourceKeyComponent, typeof ResourceLanguageComponent, typeof ResourceTranslationComponent, typeof RoleComponent, typeof RolePermissionComponent, typeof SubcompanyComponent, typeof SupplierComponent, typeof SupplierCompanyComponent, typeof SynchronizedCompanyComponent, typeof TvaRateComponent, typeof UserAccountComponent, typeof UserAccountCompanyComponent, typeof UserAccountNewsComponent, typeof UserAccountRoleComponent, typeof UserAccountTokenComponent, typeof UserFavoriteComponent, typeof UserGroupComponent, typeof UserGroupDefinitionComponent, typeof UserHistoryComponent, typeof UserPermissionViewComponent, typeof UserSessionComponent, typeof VersionComponent, typeof AccessDeniedComponent, typeof DFlatLayoutComponent, typeof DFlatSpinnerComponent, typeof HistoryComponent, typeof HomepageComponent, typeof SearchComponent, typeof SearchResultComponent, typeof UserMenuComponent, typeof UserProfileComponent, typeof ActivateComponent, typeof LoginComponent, typeof ResetPasswordComponent, typeof CompanyEditorComponent, typeof CountryEditorComponent, typeof CurrencyEditorComponent, typeof ExchangeRateEditorComponent, typeof NewsEditorComponent, typeof PermissionEditorComponent, typeof RequestEditorComponent, typeof RequestResultsComponent, typeof RoleEditorComponent, typeof UserRoleComponent, typeof UserPermissionComponent, typeof UserAccountEditorComponent, typeof UserProfileAccountComponent, typeof CustomFieldOptionsEditorComponent, typeof CustomFieldGroupEditorComponent, typeof CustomFieldGroupItemEditorComponent, typeof CustomFieldGroupEntityEditorComponent, typeof CustomFieldEditorComponent, typeof ConfigComponent, typeof ResourceLanguageEditorComponent, typeof ResourceTranslationEditorComponent, typeof MetaEntityFieldEditorComponent, typeof SupplierEditorComponent, typeof TvaRateEditorComponent, typeof TvaRateDetailComponent, typeof ImageUploadComponent, typeof AddressEditorComponent, typeof DWSupplyComponent, typeof EntityFilesComponent, typeof ExchangeRateDetailComponent, typeof UserGroupEditorComponent, typeof UserCompanyComponent, typeof PresentationProfileColumnComponent, typeof PresentationProfileItemsComponent], [typeof i106.ModalModule, typeof i107.DragDropModule, typeof i108.CommonModule, typeof i109.AngularEditorModule, typeof i110.FormsModule, typeof i110.ReactiveFormsModule, typeof i111.CoreModelModule, typeof i112.CoreUxModule, typeof PresentationProfileComponent, typeof i114.CoreDataModule, typeof i115.SystemModelModule, typeof i116.SystemDataModule, typeof i117.SystemRootModule, typeof i118.NgSelectModule, typeof i119.RecaptchaModule, typeof i119.RecaptchaFormsModule, typeof i120.NgHttpLoaderComponent, typeof i121.NgxDropzoneModule, typeof i122.TreeviewModule, typeof i123.RouterModule], [typeof AddressComponent, typeof CompanyComponent, typeof CountryComponent, typeof CurrencyComponent, typeof CustomFieldComponent, typeof CustomFieldGroupComponent, typeof CustomFieldGroupEntityComponent, typeof CustomFieldGroupItemComponent, typeof CustomFieldOptionsComponent, typeof CustomFieldValueComponent, typeof DayInfoComponent, typeof ErrorCategoryComponent, typeof ExchangeRateComponent, typeof FilesComponent, typeof KeywordComponent, typeof MetaEntityComponent, typeof MetaEntityFieldComponent, typeof MetaEntityFormComponent, typeof MetaEntityFormFieldComponent, typeof MetaEntityFormSectionComponent, typeof MetaEntityKeywordComponent, typeof MetaEntityRelationComponent, typeof MetaEntityRelationDefinitionComponent, typeof MetaEntityTranslationComponent, typeof MetaEntityViewFieldComponent, typeof NewsComponent, typeof ParameterComponent, typeof ParameterSectionComponent, typeof ParameterValueComponent, typeof PermissionComponent, typeof PresentationProfileItemComponent, typeof RatingComponent, typeof RatingSummaryComponent, typeof RequestComponent, typeof RequestEntityComponent, typeof RequestResultComponent, typeof RequestTypeComponent, typeof ResourceKeyComponent, typeof ResourceLanguageComponent, typeof ResourceTranslationComponent, typeof RoleComponent, typeof RolePermissionComponent, typeof SubcompanyComponent, typeof SupplierComponent, typeof SupplierCompanyComponent, typeof SynchronizedCompanyComponent, typeof TvaRateComponent, typeof UserAccountComponent, typeof UserAccountCompanyComponent, typeof UserAccountNewsComponent, typeof UserAccountRoleComponent, typeof UserAccountTokenComponent, typeof UserFavoriteComponent, typeof UserGroupComponent, typeof UserGroupDefinitionComponent, typeof UserHistoryComponent, typeof UserPermissionViewComponent, typeof UserSessionComponent, typeof VersionComponent, typeof AccessDeniedComponent, typeof DFlatLayoutComponent, typeof DFlatSpinnerComponent, typeof HistoryComponent, typeof HomepageComponent, typeof SearchComponent, typeof SearchResultComponent, typeof UserMenuComponent, typeof UserProfileComponent, typeof ActivateComponent, typeof LoginComponent, typeof ResetPasswordComponent, typeof CompanyEditorComponent, typeof CountryEditorComponent, typeof CurrencyEditorComponent, typeof ExchangeRateEditorComponent, typeof NewsEditorComponent, typeof PermissionEditorComponent, typeof RequestEditorComponent, typeof RequestResultsComponent, typeof RoleEditorComponent, typeof UserRoleComponent, typeof UserPermissionComponent, typeof UserAccountEditorComponent, typeof UserProfileAccountComponent, typeof CustomFieldOptionsEditorComponent, typeof CustomFieldGroupEditorComponent, typeof CustomFieldGroupItemEditorComponent, typeof CustomFieldGroupEntityEditorComponent, typeof CustomFieldEditorComponent, typeof ConfigComponent, typeof ResourceLanguageEditorComponent, typeof ResourceTranslationEditorComponent, typeof MetaEntityFieldEditorComponent, typeof SupplierEditorComponent, typeof TvaRateEditorComponent, typeof TvaRateDetailComponent, typeof ImageUploadComponent, typeof AddressEditorComponent, typeof DWSupplyComponent, typeof EntityFilesComponent, typeof ExchangeRateDetailComponent, typeof UserGroupEditorComponent, typeof UserCompanyComponent, typeof PresentationProfileColumnComponent, typeof PresentationProfileItemsComponent]>;
3155
+ static ɵmod: i0.ɵɵNgModuleDeclaration<SystemUxModule, [typeof AddressComponent, typeof CompanyComponent, typeof CountryComponent, typeof CurrencyComponent, typeof CustomFieldComponent, typeof CustomFieldGroupComponent, typeof CustomFieldGroupEntityComponent, typeof CustomFieldGroupItemComponent, typeof CustomFieldOptionsComponent, typeof CustomFieldValueComponent, typeof DayInfoComponent, typeof ErrorCategoryComponent, typeof ExchangeRateComponent, typeof FilesComponent, typeof KeywordComponent, typeof MetaEntityComponent, typeof MetaEntityFieldComponent, typeof MetaEntityFormComponent, typeof MetaEntityFormFieldComponent, typeof MetaEntityFormSectionComponent, typeof MetaEntityKeywordComponent, typeof MetaEntityRelationComponent, typeof MetaEntityRelationDefinitionComponent, typeof MetaEntityTranslationComponent, typeof MetaEntityViewFieldComponent, typeof NewsComponent, typeof ParameterComponent, typeof ParameterSectionComponent, typeof ParameterValueComponent, typeof PermissionComponent, typeof PresentationProfileItemComponent, typeof RatingComponent, typeof RatingSummaryComponent, typeof RequestComponent, typeof RequestEntityComponent, typeof RequestResultComponent, typeof RequestTypeComponent, typeof ResourceKeyComponent, typeof ResourceLanguageComponent, typeof ResourceTranslationComponent, typeof RoleComponent, typeof RolePermissionComponent, typeof SubcompanyComponent, typeof SupplierComponent, typeof SupplierCompanyComponent, typeof SynchronizedCompanyComponent, typeof TvaRateComponent, typeof UserAccountComponent, typeof UserAccountCompanyComponent, typeof UserAccountLoginComponent, typeof UserAccountNewsComponent, typeof UserAccountRoleComponent, typeof UserAccountTokenComponent, typeof UserFavoriteComponent, typeof UserGroupComponent, typeof UserGroupDefinitionComponent, typeof UserHistoryComponent, typeof UserPermissionViewComponent, typeof UserSessionComponent, typeof VersionComponent, typeof AccessDeniedComponent, typeof DFlatLayoutComponent, typeof DFlatSpinnerComponent, typeof HistoryComponent, typeof HomepageComponent, typeof SearchComponent, typeof SearchResultComponent, typeof UserMenuComponent, typeof UserProfileComponent, typeof ActivateComponent, typeof LoginComponent, typeof ResetPasswordComponent, typeof CompanyEditorComponent, typeof CountryEditorComponent, typeof CurrencyEditorComponent, typeof ExchangeRateEditorComponent, typeof NewsEditorComponent, typeof PermissionEditorComponent, typeof RequestEditorComponent, typeof RequestResultsComponent, typeof RoleEditorComponent, typeof UserRoleComponent, typeof UserPermissionComponent, typeof UserAccountEditorComponent, typeof UserProfileAccountComponent, typeof CustomFieldOptionsEditorComponent, typeof CustomFieldGroupEditorComponent, typeof CustomFieldGroupItemEditorComponent, typeof CustomFieldGroupEntityEditorComponent, typeof CustomFieldEditorComponent, typeof ConfigComponent, typeof ResourceLanguageEditorComponent, typeof ResourceTranslationEditorComponent, typeof MetaEntityFieldEditorComponent, typeof SupplierEditorComponent, typeof TvaRateEditorComponent, typeof TvaRateDetailComponent, typeof ImageUploadComponent, typeof AddressEditorComponent, typeof DWSupplyComponent, typeof EntityFilesComponent, typeof ExchangeRateDetailComponent, typeof UserGroupEditorComponent, typeof UserCompanyComponent, typeof PresentationProfileColumnComponent, typeof PresentationProfileItemsComponent], [typeof i107.ModalModule, typeof i108.DragDropModule, typeof i109.CommonModule, typeof i110.AngularEditorModule, typeof i111.FormsModule, typeof i111.ReactiveFormsModule, typeof i112.CoreModelModule, typeof i113.CoreUxModule, typeof PresentationProfileComponent, typeof i115.CoreDataModule, typeof i116.SystemModelModule, typeof i117.SystemDataModule, typeof i118.SystemRootModule, typeof i119.NgSelectModule, typeof i120.RecaptchaModule, typeof i120.RecaptchaFormsModule, typeof i121.NgHttpLoaderComponent, typeof i122.NgxDropzoneModule, typeof i123.TreeviewModule, typeof i124.RouterModule], [typeof AddressComponent, typeof CompanyComponent, typeof CountryComponent, typeof CurrencyComponent, typeof CustomFieldComponent, typeof CustomFieldGroupComponent, typeof CustomFieldGroupEntityComponent, typeof CustomFieldGroupItemComponent, typeof CustomFieldOptionsComponent, typeof CustomFieldValueComponent, typeof DayInfoComponent, typeof ErrorCategoryComponent, typeof ExchangeRateComponent, typeof FilesComponent, typeof KeywordComponent, typeof MetaEntityComponent, typeof MetaEntityFieldComponent, typeof MetaEntityFormComponent, typeof MetaEntityFormFieldComponent, typeof MetaEntityFormSectionComponent, typeof MetaEntityKeywordComponent, typeof MetaEntityRelationComponent, typeof MetaEntityRelationDefinitionComponent, typeof MetaEntityTranslationComponent, typeof MetaEntityViewFieldComponent, typeof NewsComponent, typeof ParameterComponent, typeof ParameterSectionComponent, typeof ParameterValueComponent, typeof PermissionComponent, typeof PresentationProfileItemComponent, typeof RatingComponent, typeof RatingSummaryComponent, typeof RequestComponent, typeof RequestEntityComponent, typeof RequestResultComponent, typeof RequestTypeComponent, typeof ResourceKeyComponent, typeof ResourceLanguageComponent, typeof ResourceTranslationComponent, typeof RoleComponent, typeof RolePermissionComponent, typeof SubcompanyComponent, typeof SupplierComponent, typeof SupplierCompanyComponent, typeof SynchronizedCompanyComponent, typeof TvaRateComponent, typeof UserAccountComponent, typeof UserAccountCompanyComponent, typeof UserAccountLoginComponent, typeof UserAccountNewsComponent, typeof UserAccountRoleComponent, typeof UserAccountTokenComponent, typeof UserFavoriteComponent, typeof UserGroupComponent, typeof UserGroupDefinitionComponent, typeof UserHistoryComponent, typeof UserPermissionViewComponent, typeof UserSessionComponent, typeof VersionComponent, typeof AccessDeniedComponent, typeof DFlatLayoutComponent, typeof DFlatSpinnerComponent, typeof HistoryComponent, typeof HomepageComponent, typeof SearchComponent, typeof SearchResultComponent, typeof UserMenuComponent, typeof UserProfileComponent, typeof ActivateComponent, typeof LoginComponent, typeof ResetPasswordComponent, typeof CompanyEditorComponent, typeof CountryEditorComponent, typeof CurrencyEditorComponent, typeof ExchangeRateEditorComponent, typeof NewsEditorComponent, typeof PermissionEditorComponent, typeof RequestEditorComponent, typeof RequestResultsComponent, typeof RoleEditorComponent, typeof UserRoleComponent, typeof UserPermissionComponent, typeof UserAccountEditorComponent, typeof UserProfileAccountComponent, typeof CustomFieldOptionsEditorComponent, typeof CustomFieldGroupEditorComponent, typeof CustomFieldGroupItemEditorComponent, typeof CustomFieldGroupEntityEditorComponent, typeof CustomFieldEditorComponent, typeof ConfigComponent, typeof ResourceLanguageEditorComponent, typeof ResourceTranslationEditorComponent, typeof MetaEntityFieldEditorComponent, typeof SupplierEditorComponent, typeof TvaRateEditorComponent, typeof TvaRateDetailComponent, typeof ImageUploadComponent, typeof AddressEditorComponent, typeof DWSupplyComponent, typeof EntityFilesComponent, typeof ExchangeRateDetailComponent, typeof UserGroupEditorComponent, typeof UserCompanyComponent, typeof PresentationProfileColumnComponent, typeof PresentationProfileItemsComponent]>;
3110
3156
  static ɵinj: i0.ɵɵInjectorDeclaration<SystemUxModule>;
3111
3157
  }
3112
3158
  export declare class RatesActionService {
@@ -3233,7 +3279,7 @@ export declare class DflatAppModule {
3233
3279
  */
3234
3280
  static forRoot(environment: EnvironmentBase): ModuleWithProviders<DflatAppModule>;
3235
3281
  static ɵfac: i0.ɵɵFactoryDeclaration<DflatAppModule, never>;
3236
- static ɵmod: i0.ɵɵNgModuleDeclaration<DflatAppModule, never, [typeof i110.FormsModule, typeof i110.ReactiveFormsModule, typeof i2.BrowserModule, typeof i3.BrowserAnimationsModule, typeof i119.RecaptchaModule, typeof i119.RecaptchaFormsModule, typeof i5.NgxDatatableModule, typeof i118.NgSelectModule, typeof i7.CoreModule, typeof i111.CoreModelModule, typeof i9.CoreServicesModule, typeof i114.CoreDataModule, typeof i112.CoreUxModule, typeof i117.SystemRootModule, typeof SystemUxModule, typeof i14.ToastrModule, typeof i15.AccordionModule], [typeof i110.FormsModule, typeof i110.ReactiveFormsModule, typeof i2.BrowserModule, typeof i3.BrowserAnimationsModule, typeof i119.RecaptchaModule, typeof i119.RecaptchaFormsModule, typeof i5.NgxDatatableModule, typeof i118.NgSelectModule, typeof i7.CoreModule, typeof i111.CoreModelModule, typeof i9.CoreServicesModule, typeof i114.CoreDataModule, typeof i112.CoreUxModule, typeof i117.SystemRootModule, typeof SystemUxModule]>;
3282
+ static ɵmod: i0.ɵɵNgModuleDeclaration<DflatAppModule, never, [typeof i111.FormsModule, typeof i111.ReactiveFormsModule, typeof i2.BrowserModule, typeof i3.BrowserAnimationsModule, typeof i120.RecaptchaModule, typeof i120.RecaptchaFormsModule, typeof i5.NgxDatatableModule, typeof i119.NgSelectModule, typeof i7.CoreModule, typeof i112.CoreModelModule, typeof i9.CoreServicesModule, typeof i115.CoreDataModule, typeof i113.CoreUxModule, typeof i118.SystemRootModule, typeof SystemUxModule, typeof i14.ToastrModule, typeof i15.AccordionModule], [typeof i111.FormsModule, typeof i111.ReactiveFormsModule, typeof i2.BrowserModule, typeof i3.BrowserAnimationsModule, typeof i120.RecaptchaModule, typeof i120.RecaptchaFormsModule, typeof i5.NgxDatatableModule, typeof i119.NgSelectModule, typeof i7.CoreModule, typeof i112.CoreModelModule, typeof i9.CoreServicesModule, typeof i115.CoreDataModule, typeof i113.CoreUxModule, typeof i118.SystemRootModule, typeof SystemUxModule]>;
3237
3283
  static ɵinj: i0.ɵɵInjectorDeclaration<DflatAppModule>;
3238
3284
  }
3239
3285
  /**
@@ -3272,7 +3318,7 @@ export declare abstract class BasePresentationProfileComponent extends BaseCompo
3272
3318
  static ɵdir: i0.ɵɵDirectiveDeclaration<BasePresentationProfileComponent, never, never, {}, {}, never, never, true, never>;
3273
3319
  }
3274
3320
  /** Composants des entités du module System (composants spécifiques), à déclarer dans son module Angular. */
3275
- export declare const SystemGeneratedComponents: (typeof RoleComponent | typeof CustomFieldGroupComponent | typeof CustomFieldGroupEntityComponent | typeof MetaEntityFieldComponent | typeof CustomFieldGroupItemComponent | typeof CustomFieldOptionsComponent | typeof AddressComponent | typeof CompanyComponent | typeof CountryComponent | typeof CurrencyComponent | typeof CustomFieldComponent | typeof CustomFieldValueComponent | typeof DayInfoComponent | typeof ErrorCategoryComponent | typeof ExchangeRateComponent | typeof FilesComponent | typeof KeywordComponent | typeof MetaEntityComponent | typeof MetaEntityFormComponent | typeof MetaEntityFormFieldComponent | typeof MetaEntityFormSectionComponent | typeof MetaEntityKeywordComponent | typeof MetaEntityRelationComponent | typeof MetaEntityRelationDefinitionComponent | typeof MetaEntityTranslationComponent | typeof MetaEntityViewFieldComponent | typeof NewsComponent | typeof ParameterComponent | typeof ParameterSectionComponent | typeof ParameterValueComponent | typeof PermissionComponent | typeof PresentationProfileItemComponent | typeof RatingComponent | typeof RatingSummaryComponent | typeof RequestComponent | typeof RequestEntityComponent | typeof RequestResultComponent | typeof RequestTypeComponent | typeof ResourceKeyComponent | typeof ResourceLanguageComponent | typeof ResourceTranslationComponent | typeof RolePermissionComponent | typeof SubcompanyComponent | typeof SupplierComponent | typeof SupplierCompanyComponent | typeof SynchronizedCompanyComponent | typeof TvaRateComponent | typeof UserAccountComponent | typeof UserAccountCompanyComponent | typeof UserAccountNewsComponent | typeof UserAccountRoleComponent | typeof UserAccountTokenComponent | typeof UserFavoriteComponent | typeof UserGroupComponent | typeof UserGroupDefinitionComponent | typeof UserHistoryComponent | typeof UserPermissionViewComponent | typeof UserSessionComponent | typeof VersionComponent)[];
3321
+ export declare const SystemGeneratedComponents: (typeof ExchangeRateComponent | typeof AddressComponent | typeof CompanyComponent | typeof CountryComponent | typeof CurrencyComponent | typeof CustomFieldComponent | typeof CustomFieldGroupComponent | typeof CustomFieldGroupEntityComponent | typeof CustomFieldGroupItemComponent | typeof CustomFieldOptionsComponent | typeof CustomFieldValueComponent | typeof DayInfoComponent | typeof ErrorCategoryComponent | typeof FilesComponent | typeof KeywordComponent | typeof MetaEntityComponent | typeof MetaEntityFieldComponent | typeof MetaEntityFormComponent | typeof MetaEntityFormFieldComponent | typeof MetaEntityFormSectionComponent | typeof MetaEntityKeywordComponent | typeof MetaEntityRelationComponent | typeof MetaEntityRelationDefinitionComponent | typeof MetaEntityTranslationComponent | typeof MetaEntityViewFieldComponent | typeof NewsComponent | typeof ParameterComponent | typeof ParameterSectionComponent | typeof ParameterValueComponent | typeof PermissionComponent | typeof PresentationProfileItemComponent | typeof RatingComponent | typeof RatingSummaryComponent | typeof RequestComponent | typeof RequestEntityComponent | typeof RequestResultComponent | typeof RequestTypeComponent | typeof ResourceKeyComponent | typeof ResourceLanguageComponent | typeof ResourceTranslationComponent | typeof RoleComponent | typeof RolePermissionComponent | typeof SubcompanyComponent | typeof SupplierComponent | typeof SupplierCompanyComponent | typeof SynchronizedCompanyComponent | typeof TvaRateComponent | typeof UserAccountComponent | typeof UserAccountCompanyComponent | typeof UserAccountLoginComponent | typeof UserAccountNewsComponent | typeof UserAccountRoleComponent | typeof UserAccountTokenComponent | typeof UserFavoriteComponent | typeof UserGroupComponent | typeof UserGroupDefinitionComponent | typeof UserHistoryComponent | typeof UserPermissionViewComponent | typeof UserSessionComponent | typeof VersionComponent)[];
3276
3322
  /** Routes des composants des entités du module System (clé d'entité), à ajouter à RouterModule.forChild. */
3277
3323
  export declare const SystemGeneratedRoutes: Routes;
3278
3324
  /**