[PYTHON] Erteilen Sie die Berechtigung zum Ändern des Redash-Dashboards

Redash-Dashboards und Abfragen können nur vom Administrator oder vom Eigentümer geändert werden. Es spielt keine Rolle, ob Sie derselben Gruppe angehören.

Da es möglich ist, einzelnen Benutzern eine Änderungsberechtigung zu erteilen, werden wir beschreiben, wie dies getan wird.

Umgebung

Redash 8.0.0+b32245 (a16f551e)

Wie es funktioniert

Dies kann erreicht werden, indem ein Datensatz zur Redash-Tabelle "access_permissions" hinzugefügt wird. Ich möchte PostgreSQL nicht direkt berühren, daher füge ich einen Datensatz hinzu, indem ich "AccessPermission.grant" verwende.

Was ist hier zu tun?

Gewähren Sie einem anderen Benutzer (new_user) die Berechtigung zum Ändern des Dashboards, die von einem Benutzer (old_user) gehalten wird.

Wie macht man

Öffnen Sie die Shell in Redash.

/opt/redash


docker-compose exec server ./manage.py shell

Kopieren Sie Folgendes und fügen Sie es ein.

#
# ./manage.py shell
#
from redash.models.users import AccessPermission, User
from redash.models.base import db
from redash.models import Dashboard
from redash import permissions

from contextlib import contextmanager

old_user = User.get_by_id(5)
new_user = User.get_by_id(2)

def grant_dashboards():
    all_dashboards = Dashboard.all(
        old_user.org,
        old_user.group_ids,
        old_user.id,
    )
    not_exists_dashboards = not_exists_obj(all_dashboards)
    grant(not_exists_dashboards)

def not_exists_obj(objects):
    return [
        obj for obj in objects
        if not AccessPermission.exists(obj, permissions.ACCESS_TYPE_MODIFY, new_user)
    ]

@contextmanager
def grant(objects):
    try:
        for obj in objects:
            # !!! grantee == grantor
            AccessPermission.grant(obj, permissions.ACCESS_TYPE_MODIFY, new_user, new_user)
        db.session.commit()
    except Exception:
        db.session.rollback()
        raise

grant_dashboards()

Der Grantor ist auf new_user gesetzt, aber es gibt keine tiefe Bedeutung. https://github.com/getredash/redash/blob/004bc7a2ac0de041907ab0b9b560151ea7057332/redash/models/users.py#L332

Apropos

Die Abfrage kann auch auf die gleiche Weise wie oben beschrieben realisiert werden. Durch Aktivieren von "Unterstützung für experimentelle Mehrfachbesitzer aktivieren" in den Einstellungen ("/ settings / organisation") kann dem Benutzer auch die Berechtigung über den Abfragebearbeitungsbildschirm erteilt werden.

Recommended Posts

Erteilen Sie die Berechtigung zum Ändern des Redash-Dashboards
Befehl zum Ändern von Berechtigungen und Besitzern [Linux]