create_user()

Legt einen neuen Benutzer auf dem ECM-Server an. Server-vergebene Felder (id, guid) werden im Rückgabewert zurückgeliefert.

Empirisch ist nur username (XML-Attribut benutzer) tatsächlich pflicht — alle anderen Felder hat der Server sichere Defaults für. Eine Ausnahme: changepwd defaultet serverseitig auf 1 und zwingt den Benutzer dadurch beim ersten Login zum Passwort-Wechsel.

create_user() schreibt deshalb changepwd="0" mit, damit der neue Benutzer sich direkt anmelden kann. Wer den Wechsel-Zwang aktivieren möchte, setzt change_pwd=True.

1. Signatur

  • Sync

  • Async

ecm.security.create_user(
    username: str,
    *,
    login_name: str | None = None,
    display_name: str = "",
    email: str = "",
    remark: str = "",
    password: str = "",
    plain_password: bool = False,
    profile_id: int = -1,
    locked: bool = False,
    supervisor: bool = False,
    account_type: int = 0,
    flags: int = 0,
    lang_id: int = 0,
    server_id: int = 0,
    valid_from: datetime | None = None,
    valid_to: datetime | None = None,
    change_pwd: bool = False,
    never_expire: bool = False,
) -> ECMUserAttributes
await ecm.security.create_user(...) -> ECMUserAttributes

2. Parameter

Parameter Standard Beschreibung

username

Interner Benutzername (Attribut benutzer).

login_name

username

Anmeldename. Standard: gleicher Wert wie username.

display_name

""

Vollständiger Anzeigename.

email

""

E-Mail-Adresse.

remark

""

Bemerkung.

password

""

Klartext-Passwort. Wird vor dem Senden automatisch mit password_encrypt() ins Blue-Server-Format kodiert — gleiche Konvention wie das UserPwd-Argument des Pool-Clients. Mit ECMIND_KEY verschlüsselte Werte werden zusätzlich vorab via password_reveal() entschlüsselt.

plain_password

False

Wenn True, wird password ohne clientseitige Kodierung an den Server gesendet — der Server kodiert dann selbst. Erfordert die Einmalpasswort-Funktion auf dem Server (Registry Login\PasswordSingleUse=1), sonst Fehler -1040906137.

change_pwd

False

Wenn True, muss der Benutzer beim ersten Login das Passwort ändern. Wird die globale Login\PasswordSingleUse-Einstellung serverseitig erzwungen, kann der Wert dort überschrieben werden.

never_expire

False

Wenn True, läuft das Konto unabhängig von valid_to nicht ab.

profile_id

-1

-1 = kein Profil, 0 = eigenes Profil, >0 = ID eines bestehenden Profils.

locked

False

Konto initial gesperrt.

supervisor

False

Supervisor-Rechte vergeben (XML-Wert -1).

account_type

0

0 Benutzer, 1 AppServer, 2 ANONYMOUS, 3 Java-AppServer.

flags

0

0 normaler Benutzer, 1 Server / ANONYMOUS.

lang_id

0

Sprach-ID; 0 = Server-Standard.

server_id

0

ID des Home-Servers.

valid_from

None

Gültig-ab-Zeitpunkt.

valid_to

None

Gültig-bis-Zeitpunkt.

3. Rückgabewert

ECMUserAttributes mit gesetzten id und guid.

4. Fehler

  • ECMException (oder Unterklasse) – wenn der Server die Anlage ablehnt, z.B. bei doppeltem Benutzernamen.

5. Beispiele

5.1. Minimaler Aufruf

  • Sync

  • Async

user = ecm.security.create_user("john", display_name="John Doe", email="j@x.de")
print(user.guid, user.id)
user = await ecm.security.create_user("john", display_name="John Doe")

5.2. Befristetes Konto mit Supervisor-Rechten

from datetime import datetime

user = ecm.security.create_user(
    "contractor1",
    display_name="External Contractor",
    email="c@partner.de",
    supervisor=True,
    valid_from=datetime(2026, 1, 1),
    valid_to=datetime(2026, 12, 31, 23, 59, 59),
)

5.3. Klartext-Passwort (empfohlen)

user = ecm.security.create_user("john", password="S3cret!")
# Der Benutzer kann sich mit "S3cret!" anmelden — die Kodierung läuft automatisch.

5.4. ECMIND_KEY-verschlüsseltes Passwort

Ist die Umgebungsvariable ECMIND_KEY gesetzt, kann das Passwort base85-XOR-verschlüsselt übergeben werden — password_reveal() entschlüsselt es transparent vor der Blue-Kodierung:

import os
os.environ["ECMIND_KEY"] = "shared-key"

# Nehmen wir an, "ENCRYPTED..." wurde mit ECMIND_KEY verschlüsselt:
user = ecm.security.create_user("john", password="ENCRYPTED...")

5.5. Einmalpasswort (Server muss konfiguriert sein)

user = ecm.security.create_user(
    "john",
    password="S3cret!",
    plain_password=True,
    change_pwd=True,
)
# Mit plain_password=True wird das Passwort ohne clientseitige Kodierung
# gesendet — der Server kodiert es selbst und der Benutzer muss es beim
# ersten Login ändern.

6. Siehe auch