chore: first draft
This commit is contained in:
commit
6931bfbe82
29
src/main.py
Normal file
29
src/main.py
Normal 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)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user