diff --git a/mo/rights.py b/mo/rights.py
index 75c8a876705587f5decb2ab121d63f35005f43e3..1bc0b58d0602362d5b64b247209d6e3c309b13a4 100644
--- a/mo/rights.py
+++ b/mo/rights.py
@@ -167,6 +167,7 @@ class Rights:
     user: db.User
     user_roles: List[db.UserRole]
     rights: Set[Right]
+    gatekeeper: 'Gatekeeper'        # který tato práva přidělil
 
     def __repr__(self):
         ros = " ".join([r.role.name for r in self.user_roles])
@@ -409,6 +410,7 @@ class Gatekeeper:
             return self.rights_cache[cache_key]
 
         rights = Rights()
+        rights.gatekeeper = self
         rights.user = self.user
         rights.user_roles = []
         rights.rights = set()
@@ -444,6 +446,7 @@ class Gatekeeper:
         else:
             place = self.get_root_place()
         rights = RoundRights()
+        rights.gatekeeper = self
         rights.round = round
         rights._clone_from(self.rights_for(
             place=place,
@@ -455,6 +458,7 @@ class Gatekeeper:
 
     def rights_for_contest(self, contest: db.Contest, site: Optional[db.Place] = None) -> ContestRights:
         rights = ContestRights()
+        rights.gatekeeper = self
         rights.round = contest.round
         rights.contest = contest
         rights._clone_from(self.rights_for(