diff --git a/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/CommonConstants.java b/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/CommonConstants.java index 739b1e4e617b6dd94deead64422e35204fdc6d46..cf9cf54e6a7ef5f2f62d3a52351f7541fc29b057 100644 --- a/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/CommonConstants.java +++ b/commons/commons-api/src/main/java/fr/gouv/vitamui/commons/api/CommonConstants.java @@ -183,6 +183,8 @@ public class CommonConstants { public static final String UI_URL = "UI_URL"; + public static final String ASSET_FOLDER = "ASSET_FOLDER"; + public static final String THEME_COLORS = "THEME_COLORS"; /** @@ -258,4 +260,5 @@ public class CommonConstants { public static final String MULTIPART_FILE_PARAM_NAME = "uploadedFile"; + public static final String LOGO = "LOGO"; } diff --git a/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/property/UIProperties.java b/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/property/UIProperties.java index 63a5c945ec0488d6a300b5cf77b73734ce5b2e40..04dc4634f0ed5b08469a3e78f464cd1425491734 100644 --- a/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/property/UIProperties.java +++ b/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/property/UIProperties.java @@ -50,4 +50,6 @@ public interface UIProperties { public Map<String, String> getThemeColors(); + public String getLogoURI(); + } diff --git a/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/service/ApplicationService.java b/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/service/ApplicationService.java index 092e0fdccc0b0057177e6980ab87ca1d0fef4dda..2a08f359affbe6078e8c354e7d25150000d2dd93 100644 --- a/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/service/ApplicationService.java +++ b/ui/ui-commons/src/main/java/fr/gouv/vitamui/ui/commons/service/ApplicationService.java @@ -118,13 +118,25 @@ public class ApplicationService extends AbstractCrudService<ApplicationDto> { public Map<String, Object> getConf() { final Map<String, Object> configurationData = new HashMap<>(); configurationData.put(CommonConstants.PORTAL_URL, properties.getBaseUrl().getPortal()); - // TODO check if it s used configurationData.put(CommonConstants.CAS_LOGIN_URL, getCasLoginUrl()); configurationData.put(CommonConstants.CAS_LOGOUT_URL, casLogoutUrl.getValue()); configurationData.put(CommonConstants.UI_URL, uiUrl); configurationData.put(CommonConstants.LOGOUT_REDIRECT_UI_URL, casLogoutUrl.getValueWithRedirection(uiRedirectUrl)); configurationData.put(CommonConstants.THEME_COLORS, properties.getThemeColors()); + final Path logoPath = Paths.get(properties.getLogoURI()); + String base64Logo = null; + try { + base64Logo = DatatypeConverter.printBase64Binary(Files.readAllBytes(logoPath)); + } + catch (IOException e) { + LOGGER.warn("Error while resolve application logo"); + e.printStackTrace(); + } + if (base64Logo != null) { + configurationData.put(CommonConstants.LOGO, base64Logo); + } + return configurationData; } diff --git a/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.html b/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.html index 369765e2aab167a4f2a3b682ec4334a7213a9745..9fc9cff830ac5d5a1c25a9880bd50414ca230df7 100644 --- a/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.html +++ b/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.html @@ -1,5 +1,8 @@ <nav class="vitamui-navbar"> - <a href="{{portalUrl}}" class="vitamui-navbar-logo"><img src="../../../../assets/navbar-logo-vitamui.png"></a> + <a href="{{portalUrl}}" class="vitamui-navbar-logo"> + <img *ngIf="base64Logo" [src]="trustedAppLogoUrl"> + <img *ngIf="!base64Logo" src="../../../../assets/navbar-logo.svg"> + </a> <ul class="menu"> diff --git a/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.ts b/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.ts index e74218ac97804d0307efb1d6d94dc2b5ff619360..1c2b663e698fbf6b92b4d586cd9c35831575d009 100644 --- a/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.ts +++ b/ui/ui-frontend-common/src/app/modules/components/navbar/navbar.component.ts @@ -68,9 +68,11 @@ export class NavbarComponent { @Output() customerSelect = new EventEmitter<string>(); portalUrl: string; + base64Logo: string; currentUser: AuthUser; hasAccountProfile = false; trustedInlineLogoUrl: SafeUrl; + trustedAppLogoUrl: SafeUrl; constructor( public authService: AuthService, @@ -78,6 +80,12 @@ export class NavbarComponent { private subrogationService: SubrogationService, private domSanitizer: DomSanitizer) { this.portalUrl = startupService.getPortalUrl(); + this.base64Logo = startupService.getLogo(); + + if (this.base64Logo) { + this.trustedAppLogoUrl = this.domSanitizer.bypassSecurityTrustUrl('data:image/*;base64,' + this.base64Logo); + } + if (this.authService.user) { this.currentUser = this.authService.user; if (this.currentUser.basicCustomer) { diff --git a/ui/ui-frontend-common/src/app/modules/models/app.configuration.interface.ts b/ui/ui-frontend-common/src/app/modules/models/app.configuration.interface.ts index a5affebaaeb8ffbb58fa3653b7ca88f63c26cd31..340c929a6bf42ca2c7f2c8c4c9df0c935510e3ac 100644 --- a/ui/ui-frontend-common/src/app/modules/models/app.configuration.interface.ts +++ b/ui/ui-frontend-common/src/app/modules/models/app.configuration.interface.ts @@ -42,6 +42,7 @@ export interface AppConfiguration { LOGOUT_REDIRECT_UI_URL: string; SEARCH_URL?: string; THEME_COLORS: any; + LOGO: any; [key: string]: string; } diff --git a/ui/ui-frontend-common/src/app/modules/startup.service.ts b/ui/ui-frontend-common/src/app/modules/startup.service.ts index 6a1b69ff0f0e25caee7f3b43b4883311d121c572..d4b8565532d0d5cb5a8f63040e93b730af391b03 100644 --- a/ui/ui-frontend-common/src/app/modules/startup.service.ts +++ b/ui/ui-frontend-common/src/app/modules/startup.service.ts @@ -93,7 +93,6 @@ export class StartupService { const applicationColorMap = this.configurationData.THEME_COLORS; const customerColorMap = this.authService.user.basicCustomer.graphicIdentity.themeColors; - const themeColors = { '--vitamui-primary': getColorFromMaps('vitamui-primary', '#fe4f02', applicationColorMap, customerColorMap), '--vitamui-primary-light': getColorFromMaps('vitamui-primary-light', '#ff8559', applicationColorMap, customerColorMap), @@ -104,7 +103,8 @@ export class StartupService { '--vitamui-secondary-dark-5': getColorFromMaps('vitamui-secondary-dark', '#52aa9a', applicationColorMap, customerColorMap) }; - console.log('Theme colors: ', themeColors); + const logo64 = this.configurationData.LOGO; + console.log('Logo: ', logo64); for (const themeColorsKey in themeColors) { if (themeColors.hasOwnProperty(themeColorsKey)) { @@ -152,6 +152,12 @@ export class StartupService { } } + getLogo(): string { + if (this.configurationLoaded()) { + return this.configurationData.LOGO; + } + } + getPortalUrl(): string { if (this.configurationLoaded()) { return this.configurationData.PORTAL_URL; diff --git a/ui/ui-frontend/package.json.rej b/ui/ui-frontend/package.json.rej new file mode 100644 index 0000000000000000000000000000000000000000..d3db92f4f7a8a8d5770e0f18bcac8eff457a4dff --- /dev/null +++ b/ui/ui-frontend/package.json.rej @@ -0,0 +1,10 @@ +diff a/ui/ui-frontend/package.json b/ui/ui-frontend/package.json (rejected hunks) +@@ -59,7 +59,7 @@ + "moment": "^2.24.0", + "rxjs": "^6.5.2", + "tslib": "^1.9.0", +- "ui-frontend-common": "file:../ui-frontend-common/ui-frontend-common-0.0.25.tgz", ++ "ui-frontend-common": "file:../ui-frontend-common/ui-frontend-common-0.0.26.tgz", + "underscore": "^1.9.1", + "web-animations-js": "github:angular/web-animations-js#release_pr208", + "zone.js": "~0.9.1" diff --git a/ui/ui-frontend/projects/identity/src/app/customer/customer-preview/graphic-identity-tab/graphic-identity-update/graphic-identity-update.component.ts b/ui/ui-frontend/projects/identity/src/app/customer/customer-preview/graphic-identity-tab/graphic-identity-update/graphic-identity-update.component.ts index f93f6f515dbe40a4b00c63a756eb5a218c294de8..e5d9cd5c4792f9d51f26a25d8f096c3c3da218a3 100644 --- a/ui/ui-frontend/projects/identity/src/app/customer/customer-preview/graphic-identity-tab/graphic-identity-update/graphic-identity-update.component.ts +++ b/ui/ui-frontend/projects/identity/src/app/customer/customer-preview/graphic-identity-tab/graphic-identity-update/graphic-identity-update.component.ts @@ -197,8 +197,6 @@ export class GraphicIdentityUpdateComponent implements OnInit { isGraphicIdentityFormValid() { return this.graphicIdentityForm.get('hasCustomGraphicIdentity').value === false || (this.graphicIdentityForm.get('hasCustomGraphicIdentity').value === true && this.imageUrl); - // TODO: Update me to add themeColors ! - // FIXME: What if we dont want to update imageURL ? Can we test image OR themeColors updates } } diff --git a/ui/ui-identity/src/main/config/ui-identity-application-dev.yml b/ui/ui-identity/src/main/config/ui-identity-application-dev.yml index 9fe3575e27c4a2555da6268a6e662ffc6131693c..56bd8c4819cbf881ce2fc38662b61050a7b9ee29 100644 --- a/ui/ui-identity/src/main/config/ui-identity-application-dev.yml +++ b/ui/ui-identity/src/main/config/ui-identity-application-dev.yml @@ -16,6 +16,8 @@ ui-identity: vitamui-primary-light-20: "#ba52d1" vitamui-secondary: "#7FA1D4" + logoURI: "/home/lubla/vitamui/test_logo.png" + iam-external-client: server-host: localhost server-port: 8083 diff --git a/ui/ui-portal/src/main/config/ui-portal-application-dev.yml b/ui/ui-portal/src/main/config/ui-portal-application-dev.yml index 2d49fefdcac1bad2179b34ae519b545899b0d14a..2566f06f8957452a5ce35591cd6adfeebc2b163e 100644 --- a/ui/ui-portal/src/main/config/ui-portal-application-dev.yml +++ b/ui/ui-portal/src/main/config/ui-portal-application-dev.yml @@ -31,6 +31,8 @@ ui-portal: vitamui-primary-light-20: "#ba52d1" vitamui-secondary: "#7FA1D4" + logoURI: "/home/lubla/vitamui/test_logo.png" + iam-external-client: server-host: localhost server-port: 8083