Benutzerdefinierte Felder nur für bestimmte Benutzer

Deutschsprachiges Forum für Diskussionen und Fragen zu MantisBT

Moderators: Developer, Contributor

Post Reply
Wulf2020
Posts: 13
Joined: 17 Mar 2020, 09:01

Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by Wulf2020 »

Hallo Zusammen,

wir nutzen auf einem internen Server ohne I-Net Anbindung MantisBT in folgender Version.

Version: 2.23.0
Schema-Version: 210

Wir haben 16 benutzerdefinierte Felder die relevant für eine Auswertung für uns sind. Nun möchte ich ausschließen das Benutzer falsche Auswahlen treffen und möchte, falls möglich, Ihnen nur die Felder anzeigen die auch für sie von Wichtigkeit sind.

Mal als Bsp.:

Benutzerdefinierte Felder
1. A
2. B
3. C
4. D
5. E

Benutzer 1 sieht nur die benutzerdefinierten Felder (A,C und E)
Benutzer 2 sieht nur die benutzerdefinierten Felder (B und D)
Benutzer 3 sieht nur die benutzerdefinierten Felder (A,B und D)

Gibt es hier eine Möglichkeit das technisch umzusetzen? Am besten natürlich in der GUI Oberfläche ohne innerhalb einer Datei manuell tätig werden zu müssen.
Wenn es natürlich nicht anders geht dann nehme ich auch diese Lösung und würde dann schauen ob ich es umgesetzt bekomme.

Vielen Dank für jeden Hinweis / jede Unterstützung.

Wulf2020
atrol
Site Admin
Posts: 8243
Joined: 26 Mar 2008, 21:37
Location: Germany

Re: Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by atrol »

Für einzelne Benutzer müssten Anpassungen im Code erfolgen.

Für ganze Gruppen lässt es sich auf der Konfigurationsseite des benutzerdefinierte Felds hier einstellen.
Screenshot 2022-02-16 at 20-42-47 MantisBT.png
Screenshot 2022-02-16 at 20-42-47 MantisBT.png (4.52 KiB) Viewed 5726 times
Please use Search before posting and read the Manual
Wulf2020
Posts: 13
Joined: 17 Mar 2020, 09:01

Re: Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by Wulf2020 »

Aber Gruppen kann ich nicht frei definieren, oder?
Da bin ich auf die vorgegebenen Gruppen beschränkt, oder?

Und wenn ich "eigene" Gruppenbezeichnungen anlegen kann besteht dann auch die Möglichkeit Benutzer in mehrere Gruppen aufzunehmen?
Weil das wäre ja aktuell auch nicht möglich, richtig?

Wie würde(n) denn die Codeänderung(en) aussehen?

Vielen Dank weiterhin für Eure Unterstützung.
atrol
Site Admin
Posts: 8243
Joined: 26 Mar 2008, 21:37
Location: Germany

Re: Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by atrol »

Wulf2020 wrote: 17 Feb 2022, 08:41 Aber Gruppen kann ich nicht frei definieren, oder?
Da bin ich auf die vorgegebenen Gruppen beschränkt, oder?
Nein, die Gruppen lassen sich konfigurieren
https://mantisbt.org/docs/master/en-US/ ... mize.enums
Wulf2020 wrote: 17 Feb 2022, 08:41 Und wenn ich "eigene" Gruppenbezeichnungen anlegen kann besteht dann auch die Möglichkeit Benutzer in mehrere Gruppen aufzunehmen?
Weil das wäre ja aktuell auch nicht möglich, richtig?
Teilweise richtig.
Ein Benutzer kann in unterschiedlichen Projekten unterschiedlichen Gruppen zugeordnet werden
Wulf2020 wrote: 17 Feb 2022, 08:41 Wie würde(n) denn die Codeänderung(en) aussehen?
Das hängt stark davon ab, wie schnell, "wasserdicht", wartbar auf lange Sicht, ... die Lösung sein soll

Sehr Quick & Dirty, wasserdicht, schlecht wartbar: An einigen Stellen hartcodierte Abprüfungen auf bestimmte Benutzer einsetzen
Quick & Dirty, wasserdicht, schlecht wartbar: An einigen Stellen Abprüfungen auf in Datenbank und/oder Konfigurationsdateien hinterlegte Benutzer einfügen
Quick & Dirty, nicht wasserdicht, gut wartbar: MantisBT Pugin, das rein Clientseitig die Felder benutzerspezifisch ausblendet
...
...
Clean: Ein Konzept erarbeiten, mit MantisBT Entwicklern diskutieren, einen Pull Request einreichen, so dass es im Standard landet
Please use Search before posting and read the Manual
Wulf2020
Posts: 13
Joined: 17 Mar 2020, 09:01

Re: Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by Wulf2020 »

Ich sehe schon ich werde mich mit den aktuellen Gegebenheiten begnügen müssen, weil ich mich erstens nicht von Anfang an mit dem Thema auseinandersetzen musste und nun die Möglichkeiten dieses umzusetzen von Mantis Seite sehr eingeschränkt sind.
atrol wrote: 18 Feb 2022, 19:47
Wulf2020 wrote: 17 Feb 2022, 08:41 Aber Gruppen kann ich nicht frei definieren, oder?
Da bin ich auf die vorgegebenen Gruppen beschränkt, oder?
Nein, die Gruppen lassen sich konfigurieren
https://mantisbt.org/docs/master/en-US/ ... mize.enums

Hätte das Auswirkungen auf aktuelle Einträge in der DB? (Sprich: würden "Berechtigungsprobleme" auftauchen wenn ich bestehende Gruppenbenennungen und Berechtigungen ändere?)
Wulf2020 wrote: 17 Feb 2022, 08:41 Und wenn ich "eigene" Gruppenbezeichnungen anlegen kann besteht dann auch die Möglichkeit Benutzer in mehrere Gruppen aufzunehmen?
Weil das wäre ja aktuell auch nicht möglich, richtig?
Teilweise richtig.
Ein Benutzer kann in unterschiedlichen Projekten unterschiedlichen Gruppen zugeordnet werden

Ich habe aktuell nur ein Projekt und dabei soll es auch bleiben, weil ich aktuell nicht abschätzen kann welchen weiteren Aufwand es gäbe wenn ich "weitere" Projekte erstellen würde. Somit ist es nicht möglich einen Benutzer "mehreren" Gruppen zuzuweisen, richtig?
Wulf2020 wrote: 17 Feb 2022, 08:41 Wie würde(n) denn die Codeänderung(en) aussehen?
Das hängt stark davon ab, wie schnell, "wasserdicht", wartbar auf lange Sicht, ... die Lösung sein soll

Sehr Quick & Dirty, wasserdicht, schlecht wartbar: An einigen Stellen hartcodierte Abprüfungen auf bestimmte Benutzer einsetzen
Quick & Dirty, wasserdicht, schlecht wartbar: An einigen Stellen Abprüfungen auf in Datenbank und/oder Konfigurationsdateien hinterlegte Benutzer einfügen
Quick & Dirty, nicht wasserdicht, gut wartbar: MantisBT Pugin, das rein Clientseitig die Felder benutzerspezifisch ausblendet
...
...
Clean: Ein Konzept erarbeiten, mit MantisBT Entwicklern diskutieren, einen Pull Request einreichen, so dass es im Standard landet
Da sich seit 2 Jahren nichts an unserer Installation geändert hat und wir auch grundsätzlich nichts ändern wollen (hat keine Anbindung nach draußen und ist somit auch keiner Gefährdung "ausgesetzt") könnte die Lösung ruhig "Quick & Dirty" sein. Gibt es denn so ein MantisBT PlugIn schon? Aber das müsste dann auf jeden Client "installiert/eingerichtet" werden?
Wie würde denn die erste Variante "Sehr Quick & Dirty wasserdicht, schlecht wartbar" aussehen?


Weiterhin vielen Dank für Eure Unterstützungen.
atrol
Site Admin
Posts: 8243
Joined: 26 Mar 2008, 21:37
Location: Germany

Re: Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by atrol »

Wulf2020 wrote: 21 Feb 2022, 06:20
atrol wrote: 18 Feb 2022, 19:47
Wulf2020 wrote: 17 Feb 2022, 08:41 Aber Gruppen kann ich nicht frei definieren, oder?
Da bin ich auf die vorgegebenen Gruppen beschränkt, oder?
Nein, die Gruppen lassen sich konfigurieren
https://mantisbt.org/docs/master/en-US/ ... mize.enums

Hätte das Auswirkungen auf aktuelle Einträge in der DB? (Sprich: würden "Berechtigungsprobleme" auftauchen wenn ich bestehende Gruppenbenennungen und Berechtigungen ändere?)
Wenn ich z.B. konfiguriere, dass ein Benutzer der bisher auf ein Feld Zugriff hatte, nun einer Gruppe angehört die keinen Zugriff hat, wirkt sich das auf alle Einträge aus.
Wulf2020 wrote: 17 Feb 2022, 08:41
Ich habe aktuell nur ein Projekt und dabei soll es auch bleiben, weil ich aktuell nicht abschätzen kann welchen weiteren Aufwand es gäbe wenn ich "weitere" Projekte erstellen würde. Somit ist es nicht möglich einen Benutzer "mehreren" Gruppen zuzuweisen, richtig?
Richtig
Wulf2020 wrote: 17 Feb 2022, 08:41
Da sich seit 2 Jahren nichts an unserer Installation geändert hat und wir auch grundsätzlich nichts ändern wollen (hat keine Anbindung nach draußen und ist somit auch keiner Gefährdung "ausgesetzt") könnte die Lösung ruhig "Quick & Dirty" sein. Gibt es denn so ein MantisBT PlugIn schon? Aber das müsste dann auf jeden Client "installiert/eingerichtet" werden?
Wie würde denn die erste Variante "Sehr Quick & Dirty wasserdicht, schlecht wartbar" aussehen?

Es gibt kein derartiges Plugin.
Plugins werden nicht auf jedem Client installiert, sondern lediglich auf dem Server.

Für die erste Variante "Sehr Quick & Dirty wasserdicht, schlecht wartbar" müssten in der Funktion custom_field_has_read_access User- und Feldspezifische Überprüfungen eingebaut werden.
Please use Search before posting and read the Manual
atrol
Site Admin
Posts: 8243
Joined: 26 Mar 2008, 21:37
Location: Germany

Re: Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by atrol »

Noch eine Anmerkung zu:
Da sich seit 2 Jahren nichts an unserer Installation geändert hat und wir auch grundsätzlich nichts ändern wollen (hat keine Anbindung nach draußen und ist somit auch keiner Gefährdung "ausgesetzt")
Das bedeutet aber trotzdem, dass die internen Nutzer alte bekannte bereits behobene Sicherheitslücken ausnutzen können.
Und auch wenn Mantis nicht direkt von außen via HTTP(S) erreichbar ist, ist es von einem Angreifer erreichbar wenn der Zugang eines internen Nutzers auf andere Art und Weise kompromitiert wurde.
Please use Search before posting and read the Manual
Wulf2020
Posts: 13
Joined: 17 Mar 2020, 09:01

Re: Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by Wulf2020 »

Es gibt kein derartiges Plugin.
Plugins werden nicht auf jedem Client installiert, sondern lediglich auf dem Server.

Für die erste Variante "Sehr Quick & Dirty wasserdicht, schlecht wartbar" müssten in der Funktion custom_field_has_read_access User- und Feldspezifische Überprüfungen eingebaut werden.
Ok da es kein solches Plugin zu geben scheint benötige ich die Stelle und den Code um die entsprechenden Überprüfungen einzubauen, da ich selbst leider nicht dazu in der Lage bin.

Vielen Dank für weitere Unterstützungen.

VG
atrol
Site Admin
Posts: 8243
Joined: 26 Mar 2008, 21:37
Location: Germany

Re: Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by atrol »

Sind Datenbankkenntnisse vorhanden?
Sind rudimentäre Programmierkenntnisse in irgendeiner Programmiersprache vorhanden?
Please use Search before posting and read the Manual
Wulf2020
Posts: 13
Joined: 17 Mar 2020, 09:01

Re: Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by Wulf2020 »

Datenbank Kenntnisse - NEIN. Ich kann mit MySQL Workbench etwas umgehen. User anlegen, Passwörter setzen. Also Kleinigkeiten.
Programmierkenntnisse sind vorhanden aber sehr veraltert. Aber ich hatte mit diesen Kenntnissen damals MantisBT installiert und in Betrieb genommen falls die Information weiterhilft.

VG
atrol
Site Admin
Posts: 8243
Joined: 26 Mar 2008, 21:37
Location: Germany

Re: Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by atrol »

Um hartcodierte Überprüfungen einzubauen, muss man zunächst in der Datenbank die IDs der Benutzer und der Feldern herausfinen.
Je nach Konfiguration von $g_db_table_prefix und $g_db_table_suffix wären das z.B. die Tabellen mantis_user_table und mantis_custom_field_table
s. hierzu auch in der Übersicht https://mantisbt.org/docs/erd/mantisbt_ ... erd_r1.pdf

Danach in core/custom_field_api.php die folgende Funktion ändern und dabei die IDs für Felder und User entsprechend anpassen
Hier beispielhaft, dass auf Feld 1 die User 1 und 2 zugreifen dürfen und auf Feld 2 die User 3 und 4

Code: Select all

function custom_field_has_read_access( $p_field_id, $p_bug_id, $p_user_id = null ) {
	custom_field_ensure_exists( $p_field_id );

	if( null === $p_user_id ) {
		$p_user_id = auth_get_current_user_id();
	}
	
	if ( $p_field_id == 1 ) return $p_user_id == 1 || $p_user_id == 2;
	if ( $p_field_id == 2 ) return $p_user_id == 3 || $p_user_id == 4;

	$t_access_level_r = custom_field_get_field( $p_field_id, 'access_level_r' );

	$t_project_id = bug_get_field( $p_bug_id, 'project_id' );

	return access_has_project_level( $t_access_level_r, $t_project_id, $p_user_id );
}
Vorsicht! Ich habe das nicht getestet, sondern nur so runtergeschrieben!
Please use Search before posting and read the Manual
Wulf2020
Posts: 13
Joined: 17 Mar 2020, 09:01

Re: Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by Wulf2020 »

Ok das habe ich vom Prinzip her verstanden.
Ich denke ich bin doch auf der sicheren Seite wenn ich die Datei core/custom_field_api.php vorher sichere, oder sehe ich das falsch?
Benötigt es einer bestimmten Stelle wo ich diesen Code einfügen muss? Ich gehe mal davon aus das es nicht reicht es am Ende einzufügen.
Da ich an der DB selbst ja nichts ändern sondern "nur" die ID´s herausfinden muss.

Vielen Dank bis hierhin für die Unterstützungen.
Ich berichte sobald ich es entweder erfolgreich oder aber auch erfolglos umgesetzt habe.

VG
atrol
Site Admin
Posts: 8243
Joined: 26 Mar 2008, 21:37
Location: Germany

Re: Benutzerdefinierte Felder nur für bestimmte Benutzer

Post by atrol »

Wulf2020 wrote: 25 Feb 2022, 09:43 Ich denke ich bin doch auf der sicheren Seite wenn ich die Datei core/custom_field_api.php vorher sichere, oder sehe ich das falsch?
Das sollte man immer tun, zumindest wenn man kein Versionsverwaltungssystem wie z.B: Git einsetzt.
Wulf2020 wrote: 25 Feb 2022, 09:43 Benötigt es einer bestimmten Stelle wo ich diesen Code einfügen muss?

Man muss die existierende Funktion custom_field_has_read_access in der Datei suchen, komplett löschen, und dann durch die hier angehängte Version ersetzen.
Please use Search before posting and read the Manual
Post Reply