Source code for datacube.index.abstract._users
# This file is part of the Open Data Cube, see https://opendatacube.org for more information
#
# Copyright (c) 2015-2025 ODC Contributors
# SPDX-License-Identifier: Apache-2.0
from abc import ABC, abstractmethod
from collections.abc import Iterable
[docs]
class AbstractUserResource(ABC):
"""
Abstract base class for the User portion of an index api.
All UserResource implementations should inherit from this base
class and implement all abstract methods.
(If a particular abstract method is not applicable for a particular implementation
raise a NotImplementedError)
"""
[docs]
@abstractmethod
def grant_role(self, role: str, *usernames: str) -> None:
"""
Grant a role to users
:param role: name of the database role
:param usernames: usernames to grant the role to.
"""
[docs]
@abstractmethod
def create_user(
self, username: str, password: str, role: str, description: str | None = None
) -> None:
"""
Create a new user
:param username: username of the new user
:param password: password of the new user
:param role: default role of the the new user
:param description: optional description for the new user
"""
[docs]
@abstractmethod
def delete_user(self, *usernames: str) -> None:
"""
Delete database users
:param usernames: usernames of users to be deleted
"""
[docs]
@abstractmethod
def list_users(self) -> Iterable[tuple[str, str, str | None]]:
"""
List all database users
:return: Iterable of (role, username, description) tuples
"""