feat(ldap) fix sync from ldap
This commit is contained in:
parent
e0acb80f5d
commit
a50ba403fc
|
@ -1,6 +1,7 @@
|
||||||
import click
|
import click
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
from flask.cli import with_appcontext
|
from flask.cli import with_appcontext
|
||||||
|
from werkzeug.exceptions import NotFound
|
||||||
|
|
||||||
|
|
||||||
@click.command(no_args_is_help=True)
|
@click.command(no_args_is_help=True)
|
||||||
|
@ -13,8 +14,10 @@ def ldap(ctx, sync):
|
||||||
from flaschengeist.controller import userController
|
from flaschengeist.controller import userController
|
||||||
from flaschengeist.plugins.auth_ldap import AuthLDAP
|
from flaschengeist.plugins.auth_ldap import AuthLDAP
|
||||||
from ldap3 import SUBTREE
|
from ldap3 import SUBTREE
|
||||||
|
from flaschengeist.models import User
|
||||||
|
from flaschengeist.database import db
|
||||||
|
|
||||||
auth_ldap: AuthLDAP = current_app.config.get("FG_AUTH_BACKEND")
|
auth_ldap: AuthLDAP = current_app.config.get("FG_PLUGINS").get("auth_ldap")
|
||||||
if auth_ldap is None or not isinstance(auth_ldap, AuthLDAP):
|
if auth_ldap is None or not isinstance(auth_ldap, AuthLDAP):
|
||||||
ctx.fail("auth_ldap plugin not found or not enabled!")
|
ctx.fail("auth_ldap plugin not found or not enabled!")
|
||||||
conn = auth_ldap.ldap.connection
|
conn = auth_ldap.ldap.connection
|
||||||
|
@ -24,4 +27,9 @@ def ldap(ctx, sync):
|
||||||
ldap_users_response = conn.response
|
ldap_users_response = conn.response
|
||||||
for ldap_user in ldap_users_response:
|
for ldap_user in ldap_users_response:
|
||||||
uid = ldap_user["attributes"]["uid"][0]
|
uid = ldap_user["attributes"]["uid"][0]
|
||||||
userController.find_user(uid)
|
try:
|
||||||
|
user = userController.get_user(uid)
|
||||||
|
except NotFound:
|
||||||
|
user = User(userid=uid)
|
||||||
|
db.session.add(user)
|
||||||
|
userController.update_user(user, auth_ldap)
|
||||||
|
|
Loading…
Reference in New Issue