#2290 closed Verbesserung/Featurewunsch (fixed)
Neue Rechte für Produktivität
| Erstellt von: | Niclas | Verantwortlicher: | Niclas |
|---|---|---|---|
| Priorität: | normal | Meilenstein: | |
| Komponente: | kivitendo ERP | Version: | 3.0.0 unstable |
| Schweregrad: | normal | Stichworte: | |
| Beobachter: |
Beschreibung
Vorschlag: man könnte, um die Produktivität einzublenden, neue Rechte einführen.
Hintergrund: wenn eine andere Firma Zugriff auf die Datenbank bekommen soll, sollte sie keine User-Logins sehen können. Denn dann könnten auf den bekannten Login-Namen Passwörter ausprobiert werden. Sind Passwörter einfach gewählt, hat man ein Problem.
Soll das Feature auch in den Standard?
Änderungshistorie (8)
comment:1 Geändert vor 21 Monaten durch Niclas
- Status von new nach assigned geändert
- Verantwortlicher auf Niclas gesetzt
comment:2 Geändert vor 21 Monaten durch Niclas
- Lösung auf fixed gesetzt
- Status von assigned nach closed geändert
comment:3 Geändert vor 21 Monaten durch bibi@…
Bei mir wurden die beiden neuen Rechte standardmäßig nicht gesetzt, allerdings hatte ich den commit mit einem cherry-pick in die 3.0 portiert und musste das upgrade-Script anpassen. Da ist evtl. was durcheinander gekommen.
Btw: Sollte das Upgrade-Skript nicht in sql/Pg-upgrade2-auth/, wenn es die auth-db ändert?
comment:4 Geändert vor 21 Monaten durch m.bunkus@…
Auf jeden Fall! Upgradescripte in SL/Pg-upgrade2 haben nix an der Auth-DB zu ändern! Sprich alles, was auth.* anfasst, gehört nach SL/Pg-upgrade2-auth.
comment:5 Geändert vor 21 Monaten durch m.bunkus@…
- Lösung fixed gelöscht
- Status von closed nach reopened geändert
Ich öffne den Bug daher wieder; bitte Script verschieben.
comment:6 Geändert vor 21 Monaten durch bibi@…
Und charset setzen.
comment:7 Geändert vor 21 Monaten durch Niclas
- Lösung auf fixed gesetzt
- Status von reopened nach closed geändert
Ok, Scripte sind jetzt verschoben.
Charset ist (und war schon) durch use utf8; gesetzt. Soll man ja so in den neuen perl-Scripten machen statt @charset zu verwenden.
Warum es bei dir nicht funktioniert hat, kann ich mir allerdings auch nicht erklären, tut mir leid. Vielleicht bräuchte ich da noch ein paar genauere Informationen.
comment:8 Geändert vor 21 Monaten durch m.bunkus@…
Dass die Rechte nicht gesetzt wurden, liegt an einem Bug im Upgradescript. Bei mir wurden sie auch nicht gesetzt. Analyse:
Das Script macht so etwas:
$group->{rights}->{productivity} = 1 unless defined $group->{rights}->{productivity};
Sinn soll wohl sein, das Recht zu setzen, sofern das Recht auf der Gruppe bisher noch gar nicht vorhanden war. Das ist nur dann nötig, wenn das Script potenziell mehrfach für dieselbe Auth-DB ausgeführt wird, was dann der Fall ist, wenn es im falschen Verzeichnis liegt (sql/Pg-upgrade2 anstelle von sql/Pg-upgrade2-auth).
Das klappt aber nicht, weil $::auth->read_groups alle bekannten Rechte in $group->{rights} hinterlegt. Für all diejenigen Rechte, die in der Datenbank noch nicht existieren, die aber von $::auth->all_rights zurückgegeben werden, wird dort schlicht eine 0 eingetragen.
Daher ist die einzig richtige Art, Gruppen forçiert ein neues Recht zuzuweisen, ein simples
$group->{rights}->{productivity} = 1;
Wenn so ein Update in sql/Pg-upgrade2-auth liegt, wo es aufgrund seiner Natur eindeutig hingehört (alle Änderungen an der Auth-DB gehören in dieses Verzeichnis!), dann gibt es hier auch keine Probleme mit "der Admin hat dieser Gruppe das Recht bewusst genommen, also nicht noch einmal forçiert setzen", weil es definitiv nur einmal pro Auth-DB ausgeführt wird.
Ich fixe das gleich.

In 606032ad1617f22d19e7113c40b620b9efaa5286/erp: