From 9df8ebb44529db8f58f768dafe0709ce5aa91b01 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Fri, 14 Feb 2025 15:21:39 +0100
Subject: [PATCH] OZG-7619 Add role hints

---
 .../user-form-roles.component.html            | 28 ++++++++++++++++---
 .../user-form-roles.component.spec.ts         |  4 ++-
 .../user-form-roles.component.ts              |  3 +-
 3 files changed, 29 insertions(+), 6 deletions(-)

diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.html b/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.html
index 026e846163..98a2303f35 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.html
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.html
@@ -3,13 +3,33 @@
   <div [formGroupName]="UserFormService.CLIENT_ROLES" class="mb-8 flex gap-56">
     <div [formGroupName]="UserFormService.ADMINISTRATION_GROUP" class="flex flex-col gap-2">
       <h3 class="text-md block font-medium text-text">Administration</h3>
-      <ods-checkbox-editor [formControlName]="UserFormService.ADMIN" label="Admin" inputId="admin" />
+      <div class="flex items-center gap-2">
+        <ods-checkbox-editor [formControlName]="UserFormService.ADMIN" label="Admin" inputId="admin" />
+        <ods-info-icon
+          tooltip='Wird nur in Kombination mit "User" verwendet. Diese Rolle kann Funktionen in Keycloak und der Administration konfigurieren, z.B. Benutzer anlegen, Gruppen erstellen bzw. Organisationseinheiten hinzufügen und Rollen zuweisen.'
+        />
+      </div>
     </div>
     <div [formGroupName]="UserFormService.ALFA_GROUP" class="flex flex-col gap-2">
       <h3 class="text-md block font-medium text-text">Alfa</h3>
-      <ods-checkbox-editor [formControlName]="UserFormService.LOESCHEN" label="Löschen" inputId="delete" />
-      <ods-checkbox-editor [formControlName]="UserFormService.USER" label="User" inputId="user" />
-      <ods-checkbox-editor [formControlName]="UserFormService.POSTSTELLE" label="Poststelle" inputId="post_office" />
+      <div class="flex items-center gap-2">
+        <ods-checkbox-editor [formControlName]="UserFormService.LOESCHEN" label="Löschen" inputId="delete" />
+        <ods-info-icon
+          tooltip='Diese Rolle hat dieselben Rechte wie die Rolle "User". Zusätzlich kann "Löschen" ausgewählte Vorgänge aus Alfa löschen. Diese Rolle sollten zwei Benutzer haben, da das Löschen einem Vieraugen-Prinzip folgt.'
+        />
+      </div>
+      <div class="flex items-center gap-2">
+        <ods-checkbox-editor [formControlName]="UserFormService.USER" label="User" inputId="user" />
+        <ods-info-icon
+          tooltip='Diese Rolle kann alle Vorgänge sehen und bearbeiten, wenn diese seiner Organisationseinheit zugewiesen sind. Ist kompatibel mit "Löschen" und "Admin".'
+        />
+      </div>
+      <div class="flex items-center gap-2">
+        <ods-checkbox-editor [formControlName]="UserFormService.POSTSTELLE" label="Poststelle" inputId="post_office" />
+        <ods-info-icon
+          tooltip='Diese Rolle kann ausschließlich alle neu eingegangenen Vorgänge sehen und anderen Benutzern zuweisen. Sie sollte nur einem Benutzer zugewiesen sein. Dieser sollte keine weiteren Rollen besitzen. (Sie ist aber kompatibel mit der "Admin")'
+        />
+      </div>
     </div>
   </div>
 </div>
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.spec.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.spec.ts
index 386a028e92..b27337b278 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.spec.ts
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.spec.ts
@@ -1,5 +1,7 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ReactiveFormsModule } from '@angular/forms';
+import { InfoIconComponent, TooltipDirective } from '@ods/system';
+import { MockComponent, MockDirective } from 'ng-mocks';
 import { createUserFormGroup } from '../../../../test/form';
 import { UserFormRolesComponent } from './user-form-roles.component';
 
@@ -9,7 +11,7 @@ describe('UserFormRolesComponent', () => {
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      imports: [UserFormRolesComponent, ReactiveFormsModule],
+      imports: [UserFormRolesComponent, ReactiveFormsModule, MockComponent(InfoIconComponent), MockDirective(TooltipDirective)],
     }).compileComponents();
 
     fixture = TestBed.createComponent(UserFormRolesComponent);
diff --git a/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.ts b/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.ts
index d3c25f54bb..c7d46e948f 100644
--- a/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.ts
+++ b/alfa-client/libs/admin/user/src/lib/user-form/user-form-roles/user-form-roles.component.ts
@@ -1,12 +1,13 @@
 import { Component, Input } from '@angular/core';
 import { ReactiveFormsModule, UntypedFormGroup } from '@angular/forms';
 import { CheckboxEditorComponent } from '@ods/component';
+import { InfoIconComponent, TooltipDirective } from '@ods/system';
 import { UserFormService } from '../user.formservice';
 
 @Component({
   selector: 'admin-user-form-roles',
   standalone: true,
-  imports: [CheckboxEditorComponent, ReactiveFormsModule],
+  imports: [CheckboxEditorComponent, ReactiveFormsModule, TooltipDirective, InfoIconComponent],
   templateUrl: './user-form-roles.component.html',
 })
 export class UserFormRolesComponent {
-- 
GitLab