Skip to content

store

mlte/store/user/store.py

MLTE user store interface implementation.

DEFAULT_PASSWORD = 'admin1234' module-attribute

Default user for setup.

UserStore

Bases: Store

An abstract user store.

Source code in mlte/store/user/store.py
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
class UserStore(Store):
    """
    An abstract user store.
    """

    ID_MAP: dict[str, str] = {
        ResourceType.USER: "username",
        ResourceType.MODEL: "identifier",
        ResourceType.GROUP: "name",
    }
    """Map of ids used for each resource."""

    def __init__(self, uri: StoreURI, add_default_data: bool = True):
        """Base constructor."""
        super().__init__(uri=uri)
        """Store uri."""

        # Sets up default user and permissions.
        if add_default_data:
            self._init_default_user()
            self._init_default_permissions()

    def session(self) -> UserStoreSession:
        """
        Return a session handle for the store instance.
        :return: The session handle
        """
        raise NotImplementedError("Cannot get handle to abstract Store.")

    def _init_default_user(self):
        """Adds the default user."""
        try:
            self.session().user_mapper.create(
                UserWithPassword(
                    username=DEFAULT_USERNAME,
                    password=DEFAULT_PASSWORD,
                    role=RoleType.ADMIN,
                )
            )
        except error.ErrorAlreadyExists:
            # If default user was already there, ignore warning, we don't want to overrwite any changes on it.
            pass

    def _init_default_permissions(self):
        """Create all default permissions."""
        user_store = self.session()
        for resource_type in ResourceType:
            policy = Policy(resource_type, resource_id=None)
            if not policy.is_stored(user_store=user_store):
                policy.save_to_store(user_store=user_store)

ID_MAP = {ResourceType.USER: 'username', ResourceType.MODEL: 'identifier', ResourceType.GROUP: 'name'} class-attribute instance-attribute

Map of ids used for each resource.

__init__(uri, add_default_data=True)

Base constructor.

Source code in mlte/store/user/store.py
37
38
39
40
41
42
43
44
45
def __init__(self, uri: StoreURI, add_default_data: bool = True):
    """Base constructor."""
    super().__init__(uri=uri)
    """Store uri."""

    # Sets up default user and permissions.
    if add_default_data:
        self._init_default_user()
        self._init_default_permissions()

session()

Return a session handle for the store instance.

Returns:

Type Description
UserStoreSession

The session handle

Source code in mlte/store/user/store.py
47
48
49
50
51
52
def session(self) -> UserStoreSession:
    """
    Return a session handle for the store instance.
    :return: The session handle
    """
    raise NotImplementedError("Cannot get handle to abstract Store.")