Les tableaux de bord et requêtes Redash ne peuvent être modifiés que par l'administrateur ou le propriétaire. Peu importe si vous appartenez au même groupe.
Puisqu'il est possible d'accorder une autorisation de modification à des utilisateurs individuels, nous décrirons comment procéder.
Redash 8.0.0+b32245 (a16f551e)
Ceci peut être réalisé en ajoutant un enregistrement à la table access_permissions
de Redash.
Je ne veux pas toucher PostgreSQL directement, donc j'ajoute un enregistrement en utilisant AccessPermission.grant
.
Accordez l'autorisation de modification du tableau de bord détenue par un utilisateur (ancien_utilisateur) à un autre utilisateur (nouvel_utilisateur).
Ouvrez le shell dans Redash.
/opt/redash
docker-compose exec server ./manage.py shell
Copiez et collez ce qui suit.
#
# ./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()
Le concédant est défini sur new_user, mais il n'y a pas de signification profonde. https://github.com/getredash/redash/blob/004bc7a2ac0de041907ab0b9b560151ea7057332/redash/models/users.py#L332
La requête peut également être réalisée par la même chose que celle décrite ci-dessus.
De plus, en activant Activer la prise en charge expérimentale de plusieurs propriétaires
dans les paramètres ( / settings / organization
), vous pouvez accorder des autorisations à l'utilisateur à partir de l'écran d'édition de la requête.