diff --git a/gestion/gest_crans.py b/gestion/gest_crans.py index 965f7330..e6a990d0 100755 --- a/gestion/gest_crans.py +++ b/gestion/gest_crans.py @@ -29,9 +29,13 @@ import re import affich_tools, config from lock import make_lock, remove_lock -from ldap_crans import crans_ldap, blacklist_items, isadm, isdeconnecteur, ann_scol, droits_possibles, droits_critiques, smtpserv, script_utilisateur +from ldap_crans import crans_ldap, blacklist_items, ann_scol, droits_possibles, droits_critiques, smtpserv, script_utilisateur from ldap_crans import Adherent, AssociationCrans, Club from ldap_crans import Machine, MachineFixe, MachineWifi, MachineCrans, BorneWifi +import user_tests + +isadm = user_tests.isadm() +isdeconnecteur = user_tests.isdeconnecteur() def dialog(arg): return affich_tools.dialog(u'Gestion des adhérents et machines du Crans', arg) diff --git a/gestion/ldap_crans.py b/gestion/ldap_crans.py index df450fc3..9877f19a 100755 --- a/gestion/ldap_crans.py +++ b/gestion/ldap_crans.py @@ -10,10 +10,10 @@ Licence : GPLv2 """ from socket import gethostname -import smtplib, sre, os, random, string, time, sys +import smtplib, sre, os, random, string, time, sys, pwd import ldap, ldap.modlist, ldap_passwd -import config, annuaires, iptools, chgpass, user_tests, cPickle, config_mail +import config, annuaires, iptools, chgpass, cPickle, config_mail from chgpass import chgpass from affich_tools import coul, prompt, cprint from email_tools import send_email @@ -29,6 +29,8 @@ random.seed() # On initialise le g ################################################################################## ### paramètres de connexion à la base LDAP +cur_user = os.getenv('SUDO_USER') or pwd.getpwuid(os.getuid())[0] + if __name__ == 'ldap_crans_test' or os.environ.get('crans_ldap', '') == 'test': if hostname != "egon": cprint("La base de test n'est accessible que depuis egon !", "rouge") @@ -41,7 +43,7 @@ if __name__ == 'ldap_crans_test' or os.environ.get('crans_ldap', '') == 'test': ldap_auth_dn = 'cn=admin,dc=crans,dc=org' ldap_password = '75bdb64f32' -elif user_tests.getuser() == 'freerad': +elif cur_user == 'freerad': # Freeradius n'a pas accès au secret, donc accès que en local uri = '' ro_uri = 'ldapi://%2fvar%2frun%2fslapd%2fldapi/' @@ -92,10 +94,11 @@ droits_vieux = [u'Nounou', u'Bureau'] ################################################################################## ### Variables internes diverses -isadm = user_tests.isadm() -isdeconnecteur = user_tests.isdeconnecteur() +#isadm = user_tests.isadm() +#isdeconnecteur = user_tests.isdeconnecteur() ann_scol = config.ann_scol -script_utilisateur = user_tests.getuser() +#script_utilisateur = user_tests.getuser() +script_utilisateur = cur_user ################################################################################## ### Fonctions utiles @@ -2209,8 +2212,9 @@ class Adherent(BaseProprietaire): if droits == None: return map(decode, self._data.get('droits', [])) - - if not isadm: + + from user_tests import isadm + if not isadm(): raise EnvironmentError(u'Il faut être administrateur pour effectuer cette opération.') if type(droits) != list: @@ -2853,7 +2857,8 @@ class Machine(BaseClasseCrans): Enregistre la machine courante dans la base LDAP Retourne une chaîne indiquant les opération effectuées. """ - if self.proprietaire().__class__ == AssociationCrans and not (isadm or user_tests.getuser() == 'www-data'): + from user_tests import isadm + if self.proprietaire().__class__ == AssociationCrans and not (isadm() or user_tests.getuser() == 'www-data'): raise EnvironmentError(u'Il faut être administrateur pour effectuer cette opération.') if not self._init_data: @@ -2938,7 +2943,8 @@ class Machine(BaseClasseCrans): def delete(self, comment=''): """ Destruction de la machines """ - if self.proprietaire().__class__ == AssociationCrans and not isadm: + from user_tests import isadm + if self.proprietaire().__class__ == AssociationCrans and not isadm(): raise EnvironmentError(u'Il faut être administrateur pour effectuer cette opération.')