chore: first draft

This commit is contained in:
transcaffeine 2021-05-23 11:11:21 +02:00
commit 6931bfbe82
Signed by: transcaffeine
GPG Key ID: 03624C433676E465
1 changed files with 29 additions and 0 deletions

29
src/main.py Normal file
View File

@ -0,0 +1,29 @@
import ldap
from fastapi import FastAPI
from pydantic import BaseModel
LDAP_URI = "ldap://127.0.0.1:389"
app = FastAPI()
class PasswordUpdate(BaseModel):
bind_pw: str
userPassword: str
@app.post("/users/{dn}/updatePassword")
def change_password(dn: str, updateRequest: PasswordUpdate):
ldap_conn = _connect_ldap_simple_bind(LDAP_URI, dn, updateRequest.bind_pw)
_update_ldap_userPassword(ldap_conn, updateRequest.userPassword)
def _connect_ldap_simple_bind(server_uri: str, bind_dn: str, bind_pw: str) -> LDAPObject:
ldap.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER)
conn = ldap.initialize(server_uri)
conn.simple_bind_s(bind_dn, bind_pw)
return conn
def _update_ldap_userPassword(conn: LDAPObject, new_pass: str):
modlist = [( ldap.MOD_REPLACE, 'userPassword', new_pass )]
ldap.connection.modify_s(ldap.dn, modlist)