mirror of
https://github.com/janeczku/calibre-web
synced 2025-11-17 07:27:10 +00:00
initial flask_simpleldap implementation
This commit is contained in:
45
cps/ub.py
45
cps/ub.py
@@ -148,14 +148,6 @@ class UserBase:
|
||||
def __repr__(self):
|
||||
return '<User %r>' % self.nickname
|
||||
|
||||
#Login via LDAP method
|
||||
@staticmethod
|
||||
def try_login(username, password):
|
||||
conn = get_ldap_connection()
|
||||
conn.simple_bind_s(
|
||||
config.config_ldap_dn.replace("%s", username),
|
||||
password
|
||||
)
|
||||
|
||||
# Baseclass for Users in Calibre-Web, settings which are depending on certain users are stored here. It is derived from
|
||||
# User Base (all access methods are declared there)
|
||||
@@ -315,8 +307,18 @@ class Settings(Base):
|
||||
config_goodreads_api_key = Column(String)
|
||||
config_goodreads_api_secret = Column(String)
|
||||
config_use_ldap = Column(Boolean)
|
||||
config_ldap_provider_url = Column(String)
|
||||
config_ldap_provider_url = Column(String, default='localhost')
|
||||
config_ldap_port = Column(SmallInteger, default=389)
|
||||
config_ldap_schema = Column(String, default='ldap')
|
||||
config_ldap_serv_username = Column(String)
|
||||
config_ldap_serv_password = Column(String)
|
||||
config_ldap_use_ssl = Column(Boolean, default=False)
|
||||
config_ldap_use_tls = Column(Boolean, default=False)
|
||||
config_ldap_require_cert = Column(Boolean, default=False)
|
||||
config_ldap_cert_path = Column(String)
|
||||
config_ldap_dn = Column(String)
|
||||
config_ldap_user_object = Column(String)
|
||||
config_ldap_openldap = Column(Boolean)
|
||||
config_mature_content_tags = Column(String)
|
||||
config_logfile = Column(String)
|
||||
config_ebookconverter = Column(Integer, default=0)
|
||||
@@ -392,7 +394,17 @@ class Config:
|
||||
self.config_goodreads_api_secret = data.config_goodreads_api_secret
|
||||
self.config_use_ldap = data.config_use_ldap
|
||||
self.config_ldap_provider_url = data.config_ldap_provider_url
|
||||
self.config_ldap_port = data.config_ldap_port
|
||||
self.config_ldap_schema = data.config_ldap_schema
|
||||
self.config_ldap_serv_username = data.config_ldap_serv_username
|
||||
self.config_ldap_serv_password = data.config_ldap_serv_password
|
||||
self.config_ldap_use_ssl = data.config_ldap_use_ssl
|
||||
self.config_ldap_use_tls = data.config_ldap_use_ssl
|
||||
self.config_ldap_require_cert = data.config_ldap_require_cert
|
||||
self.config_ldap_cert_path = data.config_ldap_cert_path
|
||||
self.config_ldap_dn = data.config_ldap_dn
|
||||
self.config_ldap_user_object = data.config_ldap_user_object
|
||||
self.config_ldap_openldap = data.config_ldap_openldap
|
||||
if data.config_mature_content_tags:
|
||||
self.config_mature_content_tags = data.config_mature_content_tags
|
||||
else:
|
||||
@@ -681,7 +693,17 @@ def migrate_Database():
|
||||
conn = engine.connect()
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_use_ldap` INTEGER DEFAULT 0")
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_ldap_provider_url` String DEFAULT ''")
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_ldap_port` INTEGER DEFAULT ''")
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_ldap_schema ` String DEFAULT ''")
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_ldap_serv_username` String DEFAULT ''")
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_ldap_serv_password` String DEFAULT ''")
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_ldap_use_ssl` INTEGER DEFAULT 0")
|
||||
conn.execute("ALTER TABLE Settings ADD column `cconfig_ldap_use_tls` INTEGER DEFAULT 0")
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_ldap_require_cert` INTEGER DEFAULT 0")
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_ldap_cert_path` String DEFAULT ''")
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_ldap_dn` String DEFAULT ''")
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_ldap_user_object` String DEFAULT ''")
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_ldap_openldap` INTEGER DEFAULT 0")
|
||||
session.commit()
|
||||
try:
|
||||
session.query(exists().where(Settings.config_theme)).scalar()
|
||||
@@ -799,11 +821,6 @@ else:
|
||||
migrate_Database()
|
||||
clean_database()
|
||||
|
||||
#get LDAP connection
|
||||
def get_ldap_connection():
|
||||
import ldap
|
||||
conn = ldap.initialize('ldap://{}'.format(config.config_ldap_provider_url))
|
||||
return conn
|
||||
|
||||
# Generate global Settings Object accessible from every file
|
||||
config = Config()
|
||||
|
||||
Reference in New Issue
Block a user