Wie stelle ich fest, ob der Benutzer ein APEX-Entwickler ist?

teaser_is_user_apex_developer

In einem meiner letzten Projekte musste ich wissen, ob der angemeldete Benutzer auch Entwicklerrechte für den Workspace hat oder ob es sich “nur” um einen normalen User handelt.

Im Unterschied zu einem anderen Tipp möchte ich nicht feststellen, ob er auch bereits am Workspace eingeloggt ist. Ich möchte wissen, ob er für den Workspace freigeschaltet ist und sich anmelden könnte.

Der Aufruf APEX_UTIL.GET_USER_ROLES(:APP_USER) kann uns dabei folgendermaßen weiterhelfen.

Wie der Titel der Funktion erahnen lässt, liefert diese für den Namen eines Workspace-Users die freigeschalteten Rollen. Wenn der Benutzer als Workspace-Administrator oder zumindest als Developer freigeschaltet ist, dann erhalten wir einen Rückgabewert zurück. Ansonsten wird NULL zurück gegeben. 

apex_role_developer
Mindestens “Developer” auswählen, um Wert ungleich NULL zu erhalten

Eine Übersicht über die zurückgegebenen Rollen,  habe ich in einem eigenen Beitrag zusammengefasst.

Authorization Scheme “APEX Developer” erstellen

Wir können die Funktion nun dafür nutzen, um bestimmte Berechtigungen, also Autorisierungen zu erstellen. Dafür wählen wir für ein eigenes Autorisierungsschema folgende Einstellungen.

Scheme Type:

PL/SQL Function Returning Boolean

PL/SQL Function Body:

begin
    if APEX_UTIL.GET_USER_ROLES(p_username=>:APP_USER) is null then
        return false;
    else
        return true;
    end if;
end;

Dieses Autorisierungsschema können wir nun verwenden, um zum Beispiel Menüpunkte anzeigen zu lassen, die nur für Entwickler zugänglich sein sollen.

Damit das beschriebene Vorgehen funktioniert, gibt es noch eine Voraussetzung: Die Benutzernamen der Anwendung müssen mit den Benutzernamen des Workspace-User übereinstimmen.

Übrigens: Die erwähnte Funktion liefert auch null, wenn der Benutzer nur für den “Team Development Access” freigeschaltet ist. Aber dann ist der User ja auch kein “echter” Entwickler. 😉

apex_role_team_dev
Einstellung, um Benutzer nur für “Team Development” freizuschalten

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.