Merge pull request #63 from ComputerScienceHouse/ldap_cache

Simple ldap cache
This commit is contained in:
Devin Matte 2020-12-21 23:55:17 -05:00 committed by GitHub
commit e5a7033386
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 13 deletions

View file

@ -44,6 +44,7 @@ from proxstar.vnc import (
) )
from proxstar.auth import get_auth from proxstar.auth import get_auth
from proxstar.util import gen_password from proxstar.util import gen_password
from proxstar.ldapdb import connect_ldap
from proxstar.starrs import check_hostname, renew_ip from proxstar.starrs import check_hostname, renew_ip
from proxstar.proxmox import connect_proxmox, get_isos, get_pools, get_ignored_pools from proxstar.proxmox import connect_proxmox, get_isos, get_pools, get_ignored_pools
@ -82,6 +83,7 @@ engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'])
Base.metadata.bind = engine Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine) DBSession = sessionmaker(bind=engine)
db = DBSession() db = DBSession()
ldap_conn = connect_ldap()
starrs = psycopg2.connect( starrs = psycopg2.connect(
"dbname='{}' user='{}' host='{}' password='{}'".format( "dbname='{}' user='{}' host='{}' password='{}'".format(

View file

@ -1,7 +1,8 @@
from functools import lru_cache
from csh_ldap import CSHLDAP from csh_ldap import CSHLDAP
from flask import current_app as app from flask import current_app as app
from proxstar import logging from proxstar import logging, ldap_conn
def connect_ldap(): def connect_ldap():
@ -13,28 +14,28 @@ def connect_ldap():
return ldap return ldap
@lru_cache(maxsize=32)
def is_rtp(user): def is_rtp(user):
ldap = connect_ldap() rtp_group = ldap_conn.get_group('rtp')
rtp_group = ldap.get_group('rtp') return rtp_group.check_member(ldap_conn.get_member(user, uid=True))
return rtp_group.check_member(ldap.get_member(user, uid=True))
@lru_cache(maxsize=32)
def is_active(user): def is_active(user):
ldap = connect_ldap() active_group = ldap_conn.get_group('active')
active_group = ldap.get_group('active') return active_group.check_member(ldap_conn.get_member(user, uid=True))
return active_group.check_member(ldap.get_member(user, uid=True))
@lru_cache(maxsize=32)
def is_current_student(user): def is_current_student(user):
ldap = connect_ldap() current_student_group = ldap_conn.get_group('current_student')
current_student_group = ldap.get_group('current_student') return current_student_group.check_member(ldap_conn.get_member(user, uid=True))
return current_student_group.check_member(ldap.get_member(user, uid=True))
@lru_cache(maxsize=32)
def is_user(user): def is_user(user):
ldap = connect_ldap()
try: try:
ldap.get_member(user, uid=True) ldap_conn.get_member(user, uid=True)
return True return True
except: except:
return False return False

View file

@ -1,5 +1,5 @@
black~=20.8b1 black~=20.8b1
csh-ldap~=2.2.0 csh-ldap~=2.3.0
flask==1.0.2 flask==1.0.2
flask-pyoidc==1.3.0 flask-pyoidc==1.3.0
gunicorn==19.9.0 gunicorn==19.9.0