Compare commits
1 commit
c98365c722
...
c9fcd56bda
| Author | SHA1 | Date | |
|---|---|---|---|
|
c9fcd56bda |
1 changed files with 5 additions and 9 deletions
|
|
@ -117,7 +117,6 @@ def validate_username(username: str) -> None:
|
||||||
fail(f"invalid username: {username} (allowed: a-z, 0-9, _, ., -)")
|
fail(f"invalid username: {username} (allowed: a-z, 0-9, _, ., -)")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def trigger_password_reset(username: str) -> None:
|
def trigger_password_reset(username: str) -> None:
|
||||||
url = f"{LLDAP_URL}/auth/reset/step1/{username}"
|
url = f"{LLDAP_URL}/auth/reset/step1/{username}"
|
||||||
try:
|
try:
|
||||||
|
|
@ -169,7 +168,7 @@ def email_in_use(conn: Connection, email: str) -> bool:
|
||||||
return bool(conn.entries)
|
return bool(conn.entries)
|
||||||
|
|
||||||
|
|
||||||
@app.command("list", help="List existing users (no passwords shown).")
|
@app.command("list", help="List existing users ")
|
||||||
def cmd_list() -> None:
|
def cmd_list() -> None:
|
||||||
with lldap_connection() as conn:
|
with lldap_connection() as conn:
|
||||||
conn.search(
|
conn.search(
|
||||||
|
|
@ -192,7 +191,7 @@ def cmd_list() -> None:
|
||||||
print(f"{uid:<20} {cn:<30} {mail:<30} {groups}")
|
print(f"{uid:<20} {cn:<30} {mail:<30} {groups}")
|
||||||
|
|
||||||
|
|
||||||
@app.command("add", help="Add a user. Omit --password to send an invite email.")
|
@app.command("add", help="Add a user. Omit --password to send an invite email")
|
||||||
def cmd_add(
|
def cmd_add(
|
||||||
username: str = typer.Option(..., "--username", "-u", help="Username"),
|
username: str = typer.Option(..., "--username", "-u", help="Username"),
|
||||||
displayname: str = typer.Option(..., "--displayname", "-n", help="Display name"),
|
displayname: str = typer.Option(..., "--displayname", "-n", help="Display name"),
|
||||||
|
|
@ -249,7 +248,7 @@ def cmd_add(
|
||||||
print(f"User '{username}' created.")
|
print(f"User '{username}' created.")
|
||||||
|
|
||||||
|
|
||||||
@app.command("remove", help="Remove a user.")
|
@app.command("remove", help="Remove a user")
|
||||||
def cmd_remove(
|
def cmd_remove(
|
||||||
username: str = typer.Option(..., "--username", "-u", help="Username"),
|
username: str = typer.Option(..., "--username", "-u", help="Username"),
|
||||||
) -> None:
|
) -> None:
|
||||||
|
|
@ -264,7 +263,7 @@ def cmd_remove(
|
||||||
print(f"User '{username}' removed from LLDAP.")
|
print(f"User '{username}' removed from LLDAP.")
|
||||||
|
|
||||||
|
|
||||||
@app.command("reset-password", help="Trigger a password reset email for an existing user.")
|
@app.command("reset-password", help="Trigger a password reset email for an existing user")
|
||||||
def cmd_reset_password(
|
def cmd_reset_password(
|
||||||
username: str = typer.Option(..., "--username", "-u", help="Username"),
|
username: str = typer.Option(..., "--username", "-u", help="Username"),
|
||||||
confirm: bool = typer.Option(
|
confirm: bool = typer.Option(
|
||||||
|
|
@ -274,11 +273,8 @@ def cmd_reset_password(
|
||||||
),
|
),
|
||||||
) -> None:
|
) -> None:
|
||||||
validate_username(username)
|
validate_username(username)
|
||||||
|
|
||||||
with lldap_connection() as conn:
|
with lldap_connection() as conn:
|
||||||
user_dn = f"uid={username},ou=people,{LLDAP_BASE_DN}"
|
if not user_exists(conn=conn, username=username):
|
||||||
conn.search(user_dn, "(objectClass=*)", SUBTREE, attributes=["uid"])
|
|
||||||
if not conn.entries:
|
|
||||||
fail(f"user '{username}' not found")
|
fail(f"user '{username}' not found")
|
||||||
|
|
||||||
if confirm:
|
if confirm:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue