Skip to content

Commit 13e04cf

Browse files
muratmerdoglu-dpNFriedohoeppner-dataport
authored
BC-10342 - Registration Step: consent
* implement Consent step in the external person's registration process --------- Co-authored-by: NFriedo <[email protected]> Co-authored-by: hoeppner.dataport <[email protected]>
1 parent d6baa4f commit 13e04cf

File tree

16 files changed

+1012
-56
lines changed

16 files changed

+1012
-56
lines changed

src/layouts/Registration.layout.unit.ts

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Logo from "@/assets/img/logo/logo-image-mono.svg";
33
import NavigationBar from "@/components/legacy/NavigationBar.vue";
44
import TheFooter from "@/components/legacy/TheFooter.vue";
55
import { createTestingVuetify } from "@@/tests/test-utils/setup";
6+
import { createTestingPinia } from "@pinia/testing";
67

78
describe("Registration.layout", () => {
89
const setup = (options?: Partial<{ windowWidth: number }>) => {
@@ -13,8 +14,8 @@ describe("Registration.layout", () => {
1314
const slotContent = "<h1>Test Slot Content</h1>";
1415
const wrapper = mount(RegistrationLayout, {
1516
global: {
16-
plugins: [createTestingVuetify()],
17-
stubs: { NavigationBar: true, TheFooter: true },
17+
plugins: [createTestingVuetify(), createTestingPinia()],
18+
stubs: { NavigationBar: true, TheFooter: true, ApplicationError: true, AlertContainer: true, VMain: true },
1819
},
1920
slots: {
2021
default: slotContent,
@@ -58,29 +59,29 @@ describe("Registration.layout", () => {
5859
describe("main content", () => {
5960
it("should render main landmark", () => {
6061
const { wrapper } = setup();
61-
const main = wrapper.find("main");
62+
const main = wrapper.findComponent({ name: "VMain" });
6263

6364
expect(main.exists()).toBe(true);
6465
});
6566

6667
it("should render slot content in main landmark", () => {
6768
const { wrapper, slotContent } = setup();
68-
const main = wrapper.find("main");
69+
const main = wrapper.findComponent({ name: "VMain" });
6970

7071
expect(main.html()).toContain(slotContent);
7172
});
7273

7374
it("should render in a smaller wrapper for extra small devices", () => {
7475
const { wrapper } = setup({ windowWidth: 500 });
75-
const mainWrapper = wrapper.find("main");
76+
const mainWrapper = wrapper.findComponent({ name: "VMain" });
7677

7778
expect(mainWrapper.classes()).toContain("small-wrapper");
7879
expect(mainWrapper.classes()).not.toContain("wrapper");
7980
});
8081

8182
it("should render in a normal wrapper for devices larger than extra small", () => {
8283
const { wrapper } = setup({ windowWidth: 1280 });
83-
const mainWrapper = wrapper.find("main");
84+
const mainWrapper = wrapper.findComponent({ name: "VMain" });
8485

8586
expect(mainWrapper.classes()).toContain("wrapper");
8687
expect(mainWrapper.classes()).not.toContain("small-wrapper");

src/layouts/Registration.layout.vue

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
<header class="topbar" data-testid="registration-layout-top-bar">
44
<NavigationBar :img="Logo" :hide-buttons="true" />
55
</header>
6-
<main :class="isExtraSmallDevice ? 'small-wrapper' : 'wrapper'">
6+
<VMain :class="isExtraSmallDevice ? 'small-wrapper' : 'wrapper'">
7+
<ApplicationError>
8+
<AlertContainer />
9+
</ApplicationError>
710
<slot />
8-
</main>
11+
</VMain>
912
<TheFooter />
1013
</div>
1114
</template>
@@ -14,6 +17,8 @@
1417
import Logo from "@/assets/img/logo/logo-image-mono.svg";
1518
import NavigationBar from "@/components/legacy/NavigationBar.vue";
1619
import TheFooter from "@/components/legacy/TheFooter.vue";
20+
import AlertContainer from "@/components/molecules/AlertContainer.vue";
21+
import ApplicationError from "@/components/molecules/ApplicationError.vue";
1722
import { computed } from "vue";
1823
import { useDisplay } from "vuetify";
1924

src/locales/de.ts

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1544,7 +1544,26 @@ export default {
15441544
"pages.news.new.create": "Erstellen",
15451545
"pages.news.new.title": "Erstelle eine Neuigkeit",
15461546
"pages.news.title": "Neuigkeiten",
1547+
"pages.registrationExternalMembers.error.notCompleted":
1548+
"Die Registrierung konnte leider nicht abgeschlossen werden. Bitte später erneut versuchen.",
15471549
"pages.registrationExternalMembers.steps.declarationOfConsent.title": "Einwilligungserklärung",
1550+
"pages.registrationExternalMembers.steps.declarationOfConsent.firstParagraph":
1551+
"Bitte die folgenden Einwilligungserklärung bestätigen, damit die {instanceTitle} genutzt werden kann.",
1552+
"pages.registrationExternalMembers.steps.declarationOfConsent.secondParagraph": "Ich, {userName}, erkläre Folgendes:",
1553+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.consent.text.default":
1554+
"Ich erkläre mich damit einverstanden, dass meine personenbezogenen Daten entsprechend der {dataProtectionLink} der Schule in der {instanceTitle} sowie bei den von der Schule ausgewählten und weisungsgebundenen Lernmittelanbieter verarbeitet werden.",
1555+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.consent.subtext.default":
1556+
"Die Einwilligung und damit die Nutzung ist freiwillig, das heißt, wenn du deine Einwilligung nicht erteilst, führt diese für dich nicht zu Nachteilen im Unterricht. Eine Teilnahme am Unterricht, außerhalb der {instanceTitle}, wird durch die Schule ermöglicht werden. Die Einwilligung kann jederzeit von dir widerrufen werden. Eine kurze E-Mail mit der Erklärung des Widerrufes, der Angabe des Vor- und Nachnamens, der Klasse und der Schule an folgende Adresse genügt: {email}. Im Fall des Widerrufs löschen wir die auf Basis der Einwilligung gespeicherten personenbezogenen Daten unverzüglich, es sei denn, es besteht ein gesetzlicher Grund zur Aufbewahrung oder du willst vorher noch auf die gespeicherten Daten zugreifen. Weitere Hinweise zum Datenschutz kannst du auch unseren {faqLink} entnehmen.",
1557+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.consent.text.brb":
1558+
"Ich erkläre mich damit einverstanden, dass meine personenbezogenen Daten entsprechend der Datenschutzerklärung in der Schul-Cloud Brandenburg sowie bei den ausgewählten und weisungsgebundenen Lernmittelanbietern verarbeitet werden.",
1559+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.consent.subtext.brb":
1560+
"Die Einwilligung und damit die Nutzung ist freiwillig und jederzeit mit Wirkung für die Zukunft widerrufbar per E-Mail an: {email}. Im Falle des Widerrufs löschen wir die auf Basis der Einwilligung gespeicherten Daten unverzüglich, es sei denn, es besteht ein gesetzlicher Grund zur Aufbewahrung oder du willst vorher noch auf die gespeicherten Daten zugreifen. Weitere Hinweise zum Datenschutz kannst Du auch unseren {faqLink} entnehmen.",
1561+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.termsOfUse":
1562+
"Ich habe die {termsOfUse} der {instanceTitle} gelesen und stimme ihr zu.",
1563+
"pages.registrationExternalMembers.steps.declarationOfConsent.validation.required":
1564+
"Die Einverständniserklärung ist notwendig, um die Registrierung abzuschließen.",
1565+
"pages.registrationExternalMembers.steps.declarationOfConsent.termOfUse.validation.required":
1566+
"Die Zustimmung zur Nutzungsordnung ist notwendig, um die Registrierung abzuschließen.",
15481567
"pages.registrationExternalMembers.steps.confirmationCode.title": "Bestätigungscode",
15491568
"pages.registrationExternalMembers.steps.registration.title": "Registrierung",
15501569
"pages.registrationExternalMembers.steps.password.firstParagraph":
@@ -1557,7 +1576,7 @@ export default {
15571576
"pages.registrationExternalMembers.steps.password.instructions.numberAndSpecialCharacter":
15581577
"davon jeweils mindestens eine Zahl und ein Sonderzeichen",
15591578
"pages.registrationExternalMembers.steps.password.instructions.allowedSpecialCharacters":
1560-
"erlaube Sonderzeichen sind: ! § $ % / ( ) = ? \\ ; : , . # + * ~ -",
1579+
"erlaubte Sonderzeichen sind: ! § $ % / ( ) = ? \\ ; : , . # + * ~ -",
15611580
"pages.registrationExternalMembers.steps.password.validation.required": "Bitte ein Passwort eingeben.",
15621581
"pages.registrationExternalMembers.steps.password.validation.minLength":
15631582
"Das Passwort muss mindestens 8 Zeichen lang sein.",
@@ -1573,9 +1592,7 @@ export default {
15731592
"pages.registrationExternalMembers.steps.registration.heading": "Registrierung erfolgreich",
15741593
"pages.registrationExternalMembers.steps.language.heading": "Bitte Sprache wählen",
15751594
"pages.registrationExternalMembers.steps.welcome.heading":
1576-
"Mit der Registrierung in der dBildungscloud im nächsten Schritt werden die {dataProtection} und {tos} akzeptiert. Die {dataProtection} ist jederzeit im Footer verfügbar. Für die Nutzung gilt folgende {tos} (soweit die Schule oder Bildungseinrichtung keine eigene Nutzungsordnung erlassen hat).",
1577-
"pages.registrationExternalMembers.steps.welcome.dataProtection": "Datenschutzerklärung",
1578-
"pages.registrationExternalMembers.steps.welcome.tos": "Nutzungsordnung",
1595+
"Mit der Registrierung in der {instance} im nächsten Schritt werden die {dataProtection} und {tos} akzeptiert. Die {dataProtection} ist jederzeit im Footer verfügbar. Für die Nutzung gilt folgende {tos} (soweit die Schule oder Bildungseinrichtung keine eigene Nutzungsordnung erlassen hat).",
15791596
"pages.registrationExternalMembers.steps.password.heading": "Passwort vergeben",
15801597
"pages.registrationExternalMembers.steps.success.title": "Registrierung erfolgreich",
15811598
"pages.registrationExternalMembers.steps.success.heading":

src/locales/en.ts

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1517,7 +1517,27 @@ export default {
15171517
"pages.news.new.create": "Create",
15181518
"pages.news.new.title": "Create News",
15191519
"pages.news.title": "News",
1520+
"pages.registrationExternalMembers.error.notCompleted":
1521+
"Registration could not be completed. Please try again later.",
15201522
"pages.registrationExternalMembers.steps.declarationOfConsent.title": "Declaration of consent",
1523+
"pages.registrationExternalMembers.steps.declarationOfConsent.firstParagraph":
1524+
"Please confirm the following declaration of consent so that the {instanceTitle} can be used.",
1525+
"pages.registrationExternalMembers.steps.declarationOfConsent.secondParagraph":
1526+
"I, {userName}, declare the following:",
1527+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.consent.text.default":
1528+
"I agree that my personal data may be processed in accordance with the {dataProtectionLink} of the school in the {instanceTitle} as well as by the learning material providers selected and bound by the school's instructions.",
1529+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.consent.subtext.default":
1530+
"The consent and thus the use is voluntary, which means that if you do not give your consent, it will not lead to disadvantages for you in class. Participation in lessons outside the {title} will be made possible by the school. You can revoke this consent at any time. A short e-mail with the declaration of revocation, stating your first and last name, class and school to the following address is sufficient: {email}. In the event of revocation, we will immediately delete the personal data stored on the basis of the consent, unless there is a legal reason for storage or you wish to access the stored data beforehand. You can also find further information on data protection in our {faqLink}.",
1531+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.consent.text.brb":
1532+
"I agree that my personal data may be processed in accordance with the school's {dataProtectionLink} in the Schul-Cloud Brandenburg and by the selected and authorized learning material providers.",
1533+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.consent.subtext.brb":
1534+
"The consent and thus the use is voluntary and can be revoked at any time with effect for the future by e-mail to: {email}. In the event of revocation, we will immediately delete the data stored on the basis of the consent, unless there is a legal reason for retention or you want to access the stored data beforehand. You can also find further information on data protection in our {faqLink}.",
1535+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.termsOfUse":
1536+
"I have read the {termsOfUse} of the {instanceTitle} and agree to them.",
1537+
"pages.registrationExternalMembers.steps.declarationOfConsent.validation.required":
1538+
"The declaration of consent is required to complete the registration.",
1539+
"pages.registrationExternalMembers.steps.declarationOfConsent.termOfUse.validation.required":
1540+
"The acceptance of the terms of use is required to complete the registration.",
15211541
"pages.registrationExternalMembers.steps.confirmationCode.title": "Confirmation code",
15221542
"pages.registrationExternalMembers.steps.registration.title": "Registration",
15231543
"pages.registrationExternalMembers.steps.password.firstParagraph":
@@ -1546,9 +1566,7 @@ export default {
15461566
"pages.registrationExternalMembers.steps.registration.heading": "Registration successful",
15471567
"pages.registrationExternalMembers.steps.language.heading": "Please select your language",
15481568
"pages.registrationExternalMembers.steps.welcome.heading":
1549-
"By registering in the dBildungscloud in the next step, you accept the {dataProtection} and {tos}. The {dataProtection} are always available in the footer. The following {tos} apply for use (unless your school or educational institution has issued its own terms of use).",
1550-
"pages.registrationExternalMembers.steps.welcome.dataProtection": "Privacy policy",
1551-
"pages.registrationExternalMembers.steps.welcome.tos": "Terms of use",
1569+
"By registering in the {instance} in the next step, you accept the {dataProtection} and {tos}. The {dataProtection} are always available in the footer. The following {tos} apply for use (unless your school or educational institution has issued its own terms of use).",
15521570
"pages.registrationExternalMembers.steps.password.heading": "Set password",
15531571
"pages.registrationExternalMembers.steps.success.title": "Registration successful",
15541572
"pages.registrationExternalMembers.steps.success.heading": "Thank you for registering with the {applicationName}!",

src/locales/es.ts

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1550,7 +1550,27 @@ export default {
15501550
"pages.news.new.create": "Crear",
15511551
"pages.news.new.title": "Crear noticias",
15521552
"pages.news.title": "Noticias",
1553+
"pages.registrationExternalMembers.error.notCompleted":
1554+
"La inscripción no pudo completarse. Por favor, inténtelo de nuevo más tarde.",
15531555
"pages.registrationExternalMembers.steps.declarationOfConsent.title": "Declaración de consentimiento",
1556+
"pages.registrationExternalMembers.steps.declarationOfConsent.firstParagraph":
1557+
"Por favor, confirma la siguiente declaración de consentimiento para que se pueda utilizar la {instanceTitle}.",
1558+
"pages.registrationExternalMembers.steps.declarationOfConsent.secondParagraph":
1559+
"Yo, {userName}, declaro lo siguiente:",
1560+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.consent.text.default":
1561+
"Acepto que mis datos personales se procesen de acuerdo con la {dataProtectionLink} en {instanceTitle} y en los proveedores de material de aprendizaje seleccionados e instruidos por la escuela.",
1562+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.consent.subtext.default":
1563+
"El consentimiento y uso es, por tanto, voluntario, lo que significa que si no das tu consentimiento, no te supondrá ninguna desventaja en clase. La escuela hará posible la participación en lecciones fuera de {title}. Puedes revocar este consentimiento en cualquier momento. Será suficiente con un breve correo electrónico con la declaración de revocación, indicando tu nombre y apellido, clase y escuela a la siguiente dirección: {email}. En caso de revocación, eliminaremos inmediatamente los datos personales almacenados en virtud de tu consentimiento, a menos que exista una razón legal para el almacenamiento o desees acceder a los datos almacenados de antemano. También puedes encontrar más información sobre la protección de datos en nuestras {faqLink}.",
1564+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.consent.text.brb":
1565+
"Acepto que mis datos personales se procesen de acuerdo con la {dataProtectionLink} de la escuela en la Schul-Cloud Brandenburg y por los proveedores de material de aprendizaje seleccionados y autorizados.",
1566+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.consent.subtext.brb":
1567+
"El consentimiento, y por lo tanto el uso, es voluntario y puede revocarse en cualquier momento con efecto futuro enviando un correo electrónico a: {email}. En caso de revocación, eliminaremos inmediatamente los datos almacenados en base al consentimiento, a menos que exista una razón legal para su conservación o que desee acceder a ellos previamente. También puede encontrar más información sobre protección de datos en nuestro {faqLink}.",
1568+
"pages.registrationExternalMembers.steps.declarationOfConsent.checkbox.termsOfUse":
1569+
"He leído las {termsOfUse} de la {instanceTitle} y las acepto.",
1570+
"pages.registrationExternalMembers.steps.declarationOfConsent.validation.required":
1571+
"La declaración de consentimiento es necesaria para completar el registro.",
1572+
"pages.registrationExternalMembers.steps.declarationOfConsent.termOfUse.validation.required":
1573+
"La aceptación de los términos de uso es necesaria para completar el registro.",
15541574
"pages.registrationExternalMembers.steps.confirmationCode.title": "Código de confirmación",
15551575
"pages.registrationExternalMembers.steps.registration.title": "Registro",
15561576
"pages.registrationExternalMembers.steps.password.firstParagraph":
@@ -1579,9 +1599,7 @@ export default {
15791599
"pages.registrationExternalMembers.steps.registration.heading": "Registro exitoso",
15801600
"pages.registrationExternalMembers.steps.language.heading": "Por favor seleccione su idioma",
15811601
"pages.registrationExternalMembers.steps.welcome.heading":
1582-
"Al registrarse en dBildungscloud en el siguiente paso, acepta la {dataProtection} y los {tos}. La {dataProtection} está siempre disponible en el pie de página. Para el uso, se aplican los siguientes {tos} (a menos que su escuela o institución educativa haya establecido sus propias condiciones de uso).",
1583-
"pages.registrationExternalMembers.steps.welcome.dataProtection": "Política de privacidad",
1584-
"pages.registrationExternalMembers.steps.welcome.tos": "Condiciones de uso",
1602+
"Al registrarse en {instance} en el siguiente paso, acepta la {dataProtection} y los {tos}. La {dataProtection} está siempre disponible en el pie de página. Para el uso, se aplican los siguientes {tos} (a menos que su escuela o institución educativa haya establecido sus propias condiciones de uso).",
15851603
"pages.registrationExternalMembers.steps.password.heading": "Establecer contraseña",
15861604
"pages.registrationExternalMembers.steps.success.title": "Registro exitoso",
15871605
"pages.registrationExternalMembers.steps.success.heading": "¡Gracias por registrarse en la {applicationName}!",

0 commit comments

Comments
 (0)