Rückspeichern in RadioDB unter anderem Benutzernamen

Hallo Torben.

Ich habe eine Problem mit der Datenbank Berechtigung in der RadioDB.
Wir haben im Funkhaus auf diversen Rechnern mAirList.
Einige die an diesen Rechnern arbeiten,
haben “Datenbank ändern” Rechte um Cue-Punkte usw. zu setzen.
Wie gesagt, einige.
Damit alle anderen die nicht in der AG Audiopool sind trotzdem
mit der Datenbank arbeiten können (Playlisten erstellen usw.)
habe ich einen Standardbenutzer mit Leserechten in der Datenbank eingerichtet.
Dieser steht in der mAirList.ini.
Nun müsste jeder Benutzer der “Ändern-Rechte” hat seine eigene mAirList Version haben
(Benutzernamen sind in der Datenbank angelegt).
Lässt sich irgendwie eine Abfrage einbauen, mit der sich
im laufenden Betrieb diese Beschränkung aufheben lässt?
Also, Standard ist “nur lesen”. Will ich einen Cue-Punkt
berichtigen werde ich normalerweise abgewiesen.
Damit ich trotzdem ändern kann, müsste ich die neuen Werte
unter einem anderen Benutzernamen der Datenbank zurückschreiben.
Kannst Du da etwas möglich machen?
Dadurch könnten wir auf die ungenaue Java Oberfläche verzichten.
Wäre toll.
Danke.

Prinzipiell müsste die Datenbank-Verbindung dazu komplett neu hergestellt werden, was derzeit in der Architektur nicht vorgesehen ist.

Falls ihr PostgreSQL 8.1 verwendet, gibt es aber vielleicht einen Trick, mit dem man eine eingeschränkte Version hinkriegen könnte: Dort kann man - wenn man Superuser ist - mit dem Befehl SET ROLE im laufenden Betrieb eine andere Benutzer-ID annehmen. Das könnte dann so aussehen:

  • In der mAirList.ini ist der Superuser als Benutzer eingetragen.
  • Bei Programmstart wird mittels Notification Script ein SET ROLE an den Server abgesetzt und zunächst auf den Benutzer umgeschaltet, der nur lesen darf.
  • Zwei weitere, normale Scripte, schalten dann bei Bedarf ebenfalls mit SET ROLE zwischen dem Superuser und dem normalen User hin und her.

Damit das geht, müsste ich dem IDatabase-Interface beibringen, dass man aus einem Script heraus direkt SQL-Befehle absetzen kann. Das ist aber eine Kleinigkeit.

Torben

Du bist super :slight_smile:
Wenn das ginge, dann…
Mist, 'ne Flasche Sekt kann man ja garnicht mailen :frowning:

So, ab Version 1.5.48 hat IDatabase eine neue Methode:

procedure ExecuteSQL(iSQL: string);

Torben

PS: Meine Postadresse findest du im Impressum auf der Homepage :wink:

Hallo Torben.

Wie kann ich mAirList (bzw. der Datenbank) sagen,
dass ich erst der “Eingeschränkte” dann der mit “Ändern” Rechte bin?Bekomme ich nicht hin :frowning:
Kannst Du mir mal mit einem Script aushelfen?
Also Standard nur lesen (normaler Benutzer)
dann Schreibrechte. Bin ratlos.

Vielen Dank.

Eigentlich hab ich oben schon alles sehr genau beschrieben. Wenn du nun noch die PostgreSQL-Dokumentation zu “SET ROLE” durchliest, müsstest du leicht hinkriegen.

Torben