forked from Github-Mirrors/canaille
refactor: LDAP backend initialization
This commit is contained in:
parent
a237fa0198
commit
e8b620588e
10 changed files with 15 additions and 34 deletions
|
@ -128,8 +128,6 @@ def create_app(config=None, validate=True, backend=None):
|
||||||
try:
|
try:
|
||||||
setup_logging(app)
|
setup_logging(app)
|
||||||
backend = setup_backend(app, backend)
|
backend = setup_backend(app, backend)
|
||||||
if app.debug:
|
|
||||||
backend.install(app.config, True)
|
|
||||||
setup_flask_converters(app)
|
setup_flask_converters(app)
|
||||||
setup_blueprints(app)
|
setup_blueprints(app)
|
||||||
setup_jinja(app)
|
setup_jinja(app)
|
||||||
|
|
|
@ -8,4 +8,4 @@ class InstallationException(Exception):
|
||||||
|
|
||||||
def install(config, debug=False):
|
def install(config, debug=False):
|
||||||
install_oidc(config, debug=debug)
|
install_oidc(config, debug=debug)
|
||||||
BaseBackend.get().install(config, debug=debug)
|
BaseBackend.get().install(config)
|
||||||
|
|
|
@ -33,7 +33,7 @@ class BaseBackend:
|
||||||
self.teardown()
|
self.teardown()
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def install(self, config, debug=False):
|
def install(self, config):
|
||||||
"""
|
"""
|
||||||
This methods prepares the database to host canaille data.
|
This methods prepares the database to host canaille data.
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -54,7 +54,7 @@ class Backend(BaseBackend):
|
||||||
setup_ldap_models(config)
|
setup_ldap_models(config)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def install(cls, config, debug=False):
|
def install(cls, config):
|
||||||
cls.setup_schemas(config)
|
cls.setup_schemas(config)
|
||||||
with cls(config).session():
|
with cls(config).session():
|
||||||
models.Token.install()
|
models.Token.install()
|
||||||
|
|
|
@ -3,7 +3,7 @@ from canaille.backends import BaseBackend
|
||||||
|
|
||||||
class Backend(BaseBackend):
|
class Backend(BaseBackend):
|
||||||
@classmethod
|
@classmethod
|
||||||
def install(cls, config, debug=False):
|
def install(cls, config):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
|
|
|
@ -19,7 +19,7 @@ class Backend(BaseBackend):
|
||||||
db_session = None
|
db_session = None
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def install(cls, config, debug=False): # pragma: no cover
|
def install(cls, config): # pragma: no cover
|
||||||
engine = create_engine(
|
engine = create_engine(
|
||||||
config["BACKENDS"]["SQL"]["SQL_DATABASE_URI"],
|
config["BACKENDS"]["SQL"]["SQL_DATABASE_URI"],
|
||||||
echo=False,
|
echo=False,
|
||||||
|
|
|
@ -17,6 +17,7 @@ schemas = [
|
||||||
"ldif/memberof-config.ldif",
|
"ldif/memberof-config.ldif",
|
||||||
"ldif/refint-config.ldif",
|
"ldif/refint-config.ldif",
|
||||||
"ldif/ppolicy-config.ldif",
|
"ldif/ppolicy-config.ldif",
|
||||||
|
"../canaille/backends/ldap/schemas/oauth2-openldap.ldif",
|
||||||
]
|
]
|
||||||
|
|
||||||
slapd = slapd.Slapd(
|
slapd = slapd.Slapd(
|
||||||
|
@ -30,35 +31,18 @@ slapd = slapd.Slapd(
|
||||||
slapd.start()
|
slapd.start()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
suffix_dc = slapd.suffix.split(",")[0][3:]
|
slapd.init_tree()
|
||||||
slapd.ldapadd(
|
|
||||||
"\n".join(
|
|
||||||
[
|
|
||||||
"dn: " + slapd.suffix,
|
|
||||||
"objectClass: dcObject",
|
|
||||||
"objectClass: organization",
|
|
||||||
"dc: " + suffix_dc,
|
|
||||||
"o: " + suffix_dc,
|
|
||||||
"",
|
|
||||||
"dn: " + slapd.root_dn,
|
|
||||||
"objectClass: applicationProcess",
|
|
||||||
"cn: " + slapd.root_cn,
|
|
||||||
]
|
|
||||||
)
|
|
||||||
+ "\n"
|
|
||||||
)
|
|
||||||
|
|
||||||
for ldif in (
|
for ldif in (
|
||||||
"ldif/ppolicy.ldif",
|
"ldif/ppolicy.ldif",
|
||||||
"ldif/bootstrap-users-tree.ldif",
|
"ldif/bootstrap-users-tree.ldif",
|
||||||
"ldif/bootstrap-oidc-tree.ldif",
|
"ldif/bootstrap-oidc-tree.ldif",
|
||||||
):
|
):
|
||||||
with open(ldif) as fd:
|
try:
|
||||||
try:
|
slapd.ldapadd(None, ["-f", ldif])
|
||||||
slapd.ldapadd(fd.read())
|
except RuntimeError:
|
||||||
except RuntimeError:
|
pass
|
||||||
pass
|
|
||||||
|
|
||||||
|
slapd.logger.info("slapd initialized: all ldif files loaded")
|
||||||
slapd.wait()
|
slapd.wait()
|
||||||
finally:
|
finally:
|
||||||
slapd.stop()
|
slapd.stop()
|
||||||
|
|
|
@ -18,8 +18,7 @@ def slapd_server():
|
||||||
"demo/ldif/bootstrap-users-tree.ldif",
|
"demo/ldif/bootstrap-users-tree.ldif",
|
||||||
"demo/ldif/bootstrap-oidc-tree.ldif",
|
"demo/ldif/bootstrap-oidc-tree.ldif",
|
||||||
):
|
):
|
||||||
with open(ldif) as fd:
|
slapd.ldapadd(None, ["-f", ldif])
|
||||||
slapd.ldapadd(fd.read())
|
|
||||||
yield slapd
|
yield slapd
|
||||||
finally:
|
finally:
|
||||||
slapd.stop()
|
slapd.stop()
|
||||||
|
|
|
@ -25,8 +25,7 @@ def slapd_server():
|
||||||
"demo/ldif/bootstrap-users-tree.ldif",
|
"demo/ldif/bootstrap-users-tree.ldif",
|
||||||
"demo/ldif/bootstrap-users.ldif",
|
"demo/ldif/bootstrap-users.ldif",
|
||||||
):
|
):
|
||||||
with open(ldif) as fd:
|
slapd.ldapadd(None, ["-f", ldif])
|
||||||
slapd.ldapadd(fd.read())
|
|
||||||
|
|
||||||
yield slapd
|
yield slapd
|
||||||
finally:
|
finally:
|
||||||
|
|
|
@ -127,6 +127,7 @@ def configuration(smtpd):
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def app(configuration, backend):
|
def app(configuration, backend):
|
||||||
app = create_app(configuration, backend=backend)
|
app = create_app(configuration, backend=backend)
|
||||||
|
backend.install(app.config)
|
||||||
with app.test_request_context():
|
with app.test_request_context():
|
||||||
yield app
|
yield app
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue