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