from typing import Callable, Iterator, Optional from sqlalchemy import select from sqlalchemy.orm import Session #from ..models.user import User from models.user import User from .security import hash_password, manager import xml.dom.minidom import hashlib from .ldap import LDAPConsole # lc = None # LDAP disabilitato temporaneamente def getText( nodelist): rc = [] for node in nodelist: if node.nodeType == node.TEXT_NODE: rc.append(node.data) return ''.join(rc) def check_is_admin(uidname): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("/conf/etc/useradmin/mnusers.xml"); ssonode = doc.getElementsByTagName("useradmin") print ( "%d ssonode:" % ssonode.length) is_adminlevel= ""; for skill in ssonode: binddn = getText(skill.getElementsByTagName("uid")[0].childNodes) #print(binddn) if binddn == uidname: is_adminlevel = getText (skill.getElementsByTagName("privilegi")[0].childNodes) #print (is_adminlevel) break return is_adminlevel @manager.user_loader() def get_user_by_name( name: str, #db: Optional[Session] = None, #session_provider: Callable[[], Iterator[Session]] = None ) -> Optional[User]: """ Args: name: The name of the user Returns: The user object or none """ #if db is None and session_provider is None: # raise ValueError("db and session_provider cannot both be None.") # if db is None: # db = next(session_provider()) print (name) results = lc.doLdapGetUser("ou=users", username=name) print (results) #user = db.query(User).where(User.username == name).first() user=User() if results['authen'] == "yeah": print ('Welcome', results['authen']) user.username = name user.password = results['data']['ntPassword'] else: print (' wrong!') print (check_is_admin(name)) if check_is_admin(name) == "gruppo4": user.is_admin = True print (user) return user # def create_user(name: str, password: str, db: Session, is_admin: bool = False) -> User: # """ # Creates and commits a new user object to the database # Args: # name: The name of the user # password: The plaintext password # db: The active db session # is_admin: Whether the user is a admin, defaults to false # Returns: # The newly created user. # """ # hashed_pw = hash_password(password) # user = User(username=name, password=hashed_pw, is_admin=is_admin) # db.add(user) # db.commit() # return user # def create_post(text: str, owner: User, db: Session) -> Post: # post = Post(text=text, owner=owner) # db.add(post) # db.commit() # db.close() # return post