INNER CODE UNIT · Python

edit_account

kejilion/sh · site_access_accounts.py:30

def edit_account(directory: str, name: str, expected_sha256: str, action: str,
                 username: str, *, password: str = '', previous_username: str | None = None,
                 hasher=hash_password, assert_context=None) -> str:
    if action not in ('add', 'update', 'delete'):
        raise ConfigError('invalid account action')
    if action == 'add' and previous_username is not None:
        raise ConfigError('unexpected previous account')
    if action == 'update' and previous_username is None:
        raise ConfigError('previous account is required')
    if action == 'delete' and (previous_username is not None or password):
        raise ConfigError('unexpected deletion arguments')
    new_hash = None if action == 'delete' else hasher(password)
    def transform(content):
        return update_account(content, username, new_hash,
                              previous_username=previous_username,
                              must_create=action == 'add')
    # Nginx reads the password file for each request. No configuration reload
    # is necessary, and no credential is passed through a command line.

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…