Ajout de documentation sur is_modifiable dans userPassword
This commit is contained in:
parent
a1f27f9f1a
commit
48de31425d
1 changed files with 14 additions and 3 deletions
17
attributs.py
17
attributs.py
|
@ -351,9 +351,7 @@ class Attr(object):
|
||||||
raise UniquenessError("%s déjà existant" % attr, [r.dn for r in res])
|
raise UniquenessError("%s déjà existant" % attr, [r.dn for r in res])
|
||||||
|
|
||||||
def is_modifiable(self, liste_droits):
|
def is_modifiable(self, liste_droits):
|
||||||
"""
|
"""L'attribut est-il modifiable par un des droits dans liste_droits ?"""
|
||||||
L'attribut est-il modifiable par un des droits dans liste_droits ?
|
|
||||||
"""
|
|
||||||
return not set(liste_droits).isdisjoint(self.can_modify)
|
return not set(liste_droits).isdisjoint(self.can_modify)
|
||||||
|
|
||||||
class AttributeFactory(object):
|
class AttributeFactory(object):
|
||||||
|
@ -394,13 +392,26 @@ class rightProtectedAttr(Attr):
|
||||||
"""
|
"""
|
||||||
On permet la modification à un utilisateur
|
On permet la modification à un utilisateur
|
||||||
"""
|
"""
|
||||||
|
# Si on est soi-même, on peut changer son mot de passe sans condition
|
||||||
if not soi in liste_droits:
|
if not soi in liste_droits:
|
||||||
|
|
||||||
modifiables = set()
|
modifiables = set()
|
||||||
|
|
||||||
|
# On regarde la liste des droits qu'a la connexion courante, ce sont a priori
|
||||||
|
# les droits de l'utilisateur qui modifie le mot de passe, ajoutés de soi/parent
|
||||||
|
# les cas échéants.
|
||||||
for i in liste_droits:
|
for i in liste_droits:
|
||||||
|
|
||||||
|
# Si le droit est un droit "superviseur" (ie ayant le droit de modifier certains
|
||||||
|
# utilisateurs ayant un des droits "supervisés", on ajoute la liste des droits
|
||||||
|
# supervisés aux droits modifiables
|
||||||
if i in DROITS_SUPERVISEUR:
|
if i in DROITS_SUPERVISEUR:
|
||||||
modifiables = modifiables.union(DROITS_SUPERVISEUR[i])
|
modifiables = modifiables.union(DROITS_SUPERVISEUR[i])
|
||||||
modifiables = list(modifiables)
|
modifiables = list(modifiables)
|
||||||
|
|
||||||
|
# On prend les droits de l'utilisateur dont on cherche à modifier le mot de passe
|
||||||
|
# et on les compare à la liste des droits que l'utilisateur qui modifie a le droit
|
||||||
|
# de modifier. S'il y en a un qui n'est pas dans la liste des droits modifiables, on jette.
|
||||||
for droit in self.parent.get('droits', []):
|
for droit in self.parent.get('droits', []):
|
||||||
if droit not in modifiables and droit in TOUS_DROITS:
|
if droit not in modifiables and droit in TOUS_DROITS:
|
||||||
return False
|
return False
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue