Compare commits

..

1 commit

Author SHA1 Message Date
c9fcd56bda
feat: add k8s/argo-apps/authelia
- add scripts/users.py to manage users against lldap
- add smtp values for lldap so it can send emails
2026-08-18 19:05:02 +02:00

View file

@ -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: