From b9f6784570abc1b0608b1f1de0b39c114a903dc7 Mon Sep 17 00:00:00 2001 From: Elwin Schmitz Date: Tue, 21 Jan 2025 18:02:48 +0100 Subject: [PATCH] feat: Add Privacy-notice page AB#32799 --- interfaces/Portalicious/src/app/app.routes.ts | 9 ++ .../components/footer/footer.component.html | 17 +++ .../components/footer/footer.component.ts | 6 +- .../components/header/header.component.html | 52 +++++---- .../components/header/header.component.ts | 1 + .../src/app/pages/login/login.page.html | 14 +-- .../src/app/pages/login/login.page.ts | 5 +- .../src/app/pages/privacy/privacy.page.html | 100 +++++++++++++++++ .../src/app/pages/privacy/privacy.page.ts | 13 +++ .../Portalicious/src/locale/messages.nl.xlf | 102 ++++++++++++++++-- .../Portalicious/src/locale/messages.xlf | 76 ++++++++++++- 11 files changed, 349 insertions(+), 46 deletions(-) create mode 100644 interfaces/Portalicious/src/app/pages/privacy/privacy.page.html create mode 100644 interfaces/Portalicious/src/app/pages/privacy/privacy.page.ts diff --git a/interfaces/Portalicious/src/app/app.routes.ts b/interfaces/Portalicious/src/app/app.routes.ts index a2743d7737..28c44841e3 100644 --- a/interfaces/Portalicious/src/app/app.routes.ts +++ b/interfaces/Portalicious/src/app/app.routes.ts @@ -12,6 +12,7 @@ export enum AppRoutes { authCallback = 'auth-callback', changePassword = 'change-password', login = 'login', + privacy = 'privacy', project = 'project', projectMonitoring = 'monitoring', projectPayments = 'payments', @@ -33,6 +34,14 @@ export const routes: Routes = [ loadComponent: () => import('~/pages/login/login.page').then((x) => x.LoginPageComponent), }, + { + path: AppRoutes.privacy, + title: $localize`:@@page-title-privacy:Privacy`, + loadComponent: () => + import('~/pages/privacy/privacy.page').then( + (x) => x.PrivacyPageComponent, + ), + }, { path: AppRoutes.authCallback, title: $localize`:@@generic-loading:Loading...`, diff --git a/interfaces/Portalicious/src/app/components/page-layout/components/footer/footer.component.html b/interfaces/Portalicious/src/app/components/page-layout/components/footer/footer.component.html index 05ed31c511..611c1bf9e1 100644 --- a/interfaces/Portalicious/src/app/components/page-layout/components/footer/footer.component.html +++ b/interfaces/Portalicious/src/app/components/page-layout/components/footer/footer.component.html @@ -1,3 +1,20 @@
+ Privacy + + + © 510 {{ currentYear }}
diff --git a/interfaces/Portalicious/src/app/components/page-layout/components/footer/footer.component.ts b/interfaces/Portalicious/src/app/components/page-layout/components/footer/footer.component.ts index 351777fd95..032b26abe8 100644 --- a/interfaces/Portalicious/src/app/components/page-layout/components/footer/footer.component.ts +++ b/interfaces/Portalicious/src/app/components/page-layout/components/footer/footer.component.ts @@ -1,11 +1,15 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { RouterLink } from '@angular/router'; + +import { AppRoutes } from '~/app.routes'; @Component({ selector: 'app-footer', - imports: [], + imports: [RouterLink], templateUrl: './footer.component.html', changeDetection: ChangeDetectionStrategy.OnPush, }) export class FooterComponent { + AppRoutes = AppRoutes; currentYear: number = new Date().getFullYear(); } diff --git a/interfaces/Portalicious/src/app/components/page-layout/components/header/header.component.html b/interfaces/Portalicious/src/app/components/page-layout/components/header/header.component.html index 41282b33a2..3b7075663d 100644 --- a/interfaces/Portalicious/src/app/components/page-layout/components/header/header.component.html +++ b/interfaces/Portalicious/src/app/components/page-layout/components/header/header.component.html @@ -18,26 +18,29 @@ -
- -

+ - Logged in as:
- {{ userName() }} -

-
-
+

+ + Logged in as: {{ userName() }} + +

+ + + }
@@ -81,7 +88,8 @@ } (); diff --git a/interfaces/Portalicious/src/app/pages/login/login.page.html b/interfaces/Portalicious/src/app/pages/login/login.page.html index 1db1c45c03..8e57766c8c 100644 --- a/interfaces/Portalicious/src/app/pages/login/login.page.html +++ b/interfaces/Portalicious/src/app/pages/login/login.page.html @@ -25,17 +25,11 @@

Log in

Read our Privacy notice - Read our Privacy Policy -

diff --git a/interfaces/Portalicious/src/app/pages/login/login.page.ts b/interfaces/Portalicious/src/app/pages/login/login.page.ts index c967d90267..dfb94b8e47 100644 --- a/interfaces/Portalicious/src/app/pages/login/login.page.ts +++ b/interfaces/Portalicious/src/app/pages/login/login.page.ts @@ -5,10 +5,11 @@ import { computed, inject, } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; +import { ActivatedRoute, Router, RouterLink } from '@angular/router'; import { ToolbarModule } from 'primeng/toolbar'; +import { AppRoutes } from '~/app.routes'; import { FormErrorComponent } from '~/components/form-error/form-error.component'; import { LanguageSwitcherComponent } from '~/components/language-switcher/language-switcher.component'; import { LogoComponent } from '~/components/logo/logo.component'; @@ -25,12 +26,14 @@ import { AUTH_ERROR_IN_STATE_KEY, AuthService } from '~/services/auth.service'; LanguageSwitcherComponent, NgComponentOutlet, FormErrorComponent, + RouterLink, ], templateUrl: './login.page.html', styles: ``, changeDetection: ChangeDetectionStrategy.OnPush, }) export class LoginPageComponent { + AppRoutes = AppRoutes; private authService = inject(AuthService); private router = inject(Router); private route = inject(ActivatedRoute); diff --git a/interfaces/Portalicious/src/app/pages/privacy/privacy.page.html b/interfaces/Portalicious/src/app/pages/privacy/privacy.page.html new file mode 100644 index 0000000000..899fac36b4 --- /dev/null +++ b/interfaces/Portalicious/src/app/pages/privacy/privacy.page.html @@ -0,0 +1,100 @@ + +@let lastUpdated = '2025-01-21'; +@let privacyOfficerEmail = 'privacy@redcross.nl'; + + +

+ Last updated: + +

+ +
+ +

+ This privacy notice tells you what to expect us to do with your personal + information when you use the 121 Platform. +

+ +

Where we get personal information from

+ +
    +
  • + Information you or your employer has provided us. +

    Your e-mail address and/or your (full) name.

    +
  • +
  • + Information automatically collected about you +

    + Your IP-address and some information about the device and web-browser + you use to access the 121 Platform. +

    +
  • +
+ +

How long we keep information

+ +
    +
  • + Personal information: e-mail and name. +

    + We retain your e-mail address and name for as long as you are a user + associated with a project/program on the 121 Platform. +

    +

    + We retain your e-mail address for as long as a project/program is stored + on the 121 Platform. +

    +
  • +
  • + Personal information: IP-address. +

    + We don't store your IP-address. We only use it to generate an anonymous + identifier not linked to any personal information. +

    +

    + This identifier is stored for max. 90 days in our logs-storage. +

    +
  • +
+ +

Who we share information with

+ +

+ The data of the 121 Platform is hosted in a Microsoft Azure-environment of + The Netherlands Red Cross. +

+

We do not share any personal information with other third-parties.

+ +

Cookies

+ +

+ We only use necessary cookies to be able to let users log in to the 121 + Platform. These cookies are not used to track any (returning) use of the 121 + Platform over time. +

+ +

How to contact us

+ +

+ If you have any questions regarding your privacy and the 121 Platform, feel + free to contact us at: + {{ privacyOfficerEmail }} +

+ +
+ +

+ Last updated: + +

+
diff --git a/interfaces/Portalicious/src/app/pages/privacy/privacy.page.ts b/interfaces/Portalicious/src/app/pages/privacy/privacy.page.ts new file mode 100644 index 0000000000..2b659df1d9 --- /dev/null +++ b/interfaces/Portalicious/src/app/pages/privacy/privacy.page.ts @@ -0,0 +1,13 @@ +import { DatePipe } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { PageLayoutComponent } from '~/components/page-layout/page-layout.component'; + +@Component({ + selector: 'app-privacy-page', + imports: [PageLayoutComponent, DatePipe], + templateUrl: './privacy.page.html', + styles: ``, + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class PrivacyPageComponent {} diff --git a/interfaces/Portalicious/src/locale/messages.nl.xlf b/interfaces/Portalicious/src/locale/messages.nl.xlf index f894e16fff..9982d8cc6f 100644 --- a/interfaces/Portalicious/src/locale/messages.nl.xlf +++ b/interfaces/Portalicious/src/locale/messages.nl.xlf @@ -650,8 +650,8 @@ <UNNAMED TEMPLATE> <UNNAMED TEMPLATE> - - Read our Privacy Policy + + Read our Privacy notice Lees ons privacybeleid @@ -858,10 +858,6 @@ The status of registration(s) is being changed to "" successfully. The status change can take up to a minute to process. De status van registratie(s) wordt gewijzigd naar " " succesvol. Het kan tot een minuut duren voordat de statuswijziging is verwerkt. - - Logged in as: - Ingelogd als: - Data change Data wijziging @@ -1879,6 +1875,98 @@ Last message status Last message status + + Privacy + Privacy + + + Logged in as: + Ingelogd als: + + + Last updated: + Laatst gewijzigd: + + + This privacy notice tells you what to expect us to do with your personal information when you use the 121 Platform. + This privacy notice tells you what to expect us to do with your personal information when you use the 121 Platform. + + + Where we get personal information from + Where we get personal information from + + + Information you or your employer has provided us. + Information you or your employer has provided us. + + + Your e-mail address and/or your (full) name. + Your e-mail address and/or your (full) name. + + + Information automatically collected about you + Information automatically collected about you + + + Your IP-address and some information about the device and web-browser you use to access the 121 Platform. + Your IP-address and some information about the device and web-browser you use to access the 121 Platform. + + + How long we keep information + How long we keep information + + + Personal information: e-mail and name. + Personal information: e-mail and name. + + + We retain your e-mail address and name for as long as you are a user associated with a project/program on the 121 Platform. + We retain your e-mail address and name for as long as you are a user associated with a project/program on the 121 Platform. + + + We retain your e-mail address for as long as a project/program is stored on the 121 Platform. + We retain your e-mail address for as long as a project/program is stored on the 121 Platform. + + + Personal information: IP-address. + Personal information: IP-address. + + + We don't store your IP-address. We only use it to generate an anonymous identifier not linked to any personal information. + We don't store your IP-address. We only use it to generate an anonymous identifier not linked to any personal information. + + + This identifier is stored for max. 90 days in our logs-storage. + This identifier is stored for max. 90 days in our logs-storage. + + + Who we share information with + Who we share information with + + + The data of the 121 Platform is hosted in a Microsoft Azure-environment of The Netherlands Red Cross. + The data of the 121 Platform is hosted in a Microsoft Azure-environment of The Netherlands Red Cross. + + + We do not share any personal information with other third-parties. + We do not share any personal information with other third-parties. + + + Cookies + Cookies + + + We only use necessary cookies to be able to let users log in to the 121 Platform. These cookies are not used to track any (returning) use of the 121 Platform over time. + We only use necessary cookies to be able to let users log in to the 121 Platform. These cookies are not used to track any (returning) use of the 121 Platform over time. + + + How to contact us + How to contact us + + + If you have any questions regarding your privacy and the 121 Platform, feel free to contact us at: + If you have any questions regarding your privacy and the 121 Platform, feel free to contact us at: + - \ No newline at end of file + diff --git a/interfaces/Portalicious/src/locale/messages.xlf b/interfaces/Portalicious/src/locale/messages.xlf index 9321463ad6..822bd4af83 100644 --- a/interfaces/Portalicious/src/locale/messages.xlf +++ b/interfaces/Portalicious/src/locale/messages.xlf @@ -48,9 +48,6 @@ Account Top-right user-menu - - Logged in as: - Close @@ -376,8 +373,8 @@ Request a password reset - - Read our Privacy Policy + + Read our Privacy notice Enter a valid email address @@ -1411,6 +1408,75 @@ Number of payments + + Who we share information with + + + Logged in as: + + + The data of the 121 Platform is hosted in a Microsoft Azure-environment of The Netherlands Red Cross. + + + Personal information: e-mail and name. + + + Your e-mail address and/or your (full) name. + + + How to contact us + + + We only use necessary cookies to be able to let users log in to the 121 Platform. These cookies are not used to track any (returning) use of the 121 Platform over time. + + + We retain your e-mail address for as long as a project/program is stored on the 121 Platform. + + + We retain your e-mail address and name for as long as you are a user associated with a project/program on the 121 Platform. + + + How long we keep information + + + We don't store your IP-address. We only use it to generate an anonymous identifier not linked to any personal information. + + + This identifier is stored for max. 90 days in our logs-storage. + + + Information you or your employer has provided us. + + + Cookies + + + This privacy notice tells you what to expect us to do with your personal information when you use the 121 Platform. + + + Information automatically collected about you + + + Where we get personal information from + + + We do not share any personal information with other third-parties. + + + Your IP-address and some information about the device and web-browser you use to access the 121 Platform. + + + Personal information: IP-address. + + + If you have any questions regarding your privacy and the 121 Platform, feel free to contact us at: + + + Privacy + + + Last updated: + \ No newline at end of file