org.models.tan

Attributes

ALPHABET

DEFAULT_EXPIRES_AFTER

DEFAULT_ACCESS_WINDOW

Classes

TAN

A single use TAN for temporarily elevating access through e.g.

_GeneratedTAN

A single use TAN for temporarily elevating access through e.g.

TANCollection

Abstract base class for generic types.

TANAccess

This exists to keep track of which protected URLs have been accesed

TANAccessCollection

Abstract base class for generic types.

Functions

generate_tan(→ str)

Module Contents

org.models.tan.ALPHABET = 'ABCDEFGHIJKLMNPQRSTUVWXYZ123456789'[source]
org.models.tan.DEFAULT_EXPIRES_AFTER[source]
org.models.tan.DEFAULT_ACCESS_WINDOW[source]
org.models.tan.generate_tan() str[source]
class org.models.tan.TAN[source]

Bases: onegov.core.orm.Base, onegov.core.orm.mixins.TimestampMixin, onegov.core.orm.mixins.ContentMixin

A single use TAN for temporarily elevating access through e.g. a mobile phone number.

__tablename__ = 'tans'[source]
__table_args__[source]
id: Column[uuid.UUID][source]
hashed_tan: Column[str][source]
client: Column[str][source]
expired: Column[datetime | None][source]
is_active(expires_after: datetime.timedelta | None = DEFAULT_EXPIRES_AFTER) bool[source]
is_active(expires_after: datetime.timedelta | None = DEFAULT_EXPIRES_AFTER) ColumnElement[bool][source]
expire() None[source]
class org.models.tan._GeneratedTAN[source]

Bases: TAN

A single use TAN for temporarily elevating access through e.g. a mobile phone number.

tan: str[source]
class org.models.tan.TANCollection(session: sqlalchemy.orm.Session, expires_after: datetime.timedelta = DEFAULT_EXPIRES_AFTER)[source]

Bases: onegov.core.collection.GenericCollection[TAN]

Abstract base class for generic types.

A generic type is typically declared by inheriting from this class parameterized with one or more type variables. For example, a generic mapping type might be defined as:

class Mapping(Generic[KT, VT]):
    def __getitem__(self, key: KT) -> VT:
        ...
    # Etc.

This class can then be used as follows:

def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:
    try:
        return mapping[key]
    except KeyError:
        return default
property model_class: type[TAN][source]
query() Query[TAN][source]
hash_tan(tan: str) str[source]
add(*, client: str, created: datetime | None = None, **meta: Any) _GeneratedTAN[source]
by_client(client: str) Query[TAN][source]
by_tan(tan: str) TAN | None[source]
class org.models.tan.TANAccess[source]

Bases: onegov.core.orm.Base, onegov.core.orm.mixins.TimestampMixin

This exists to keep track of which protected URLs have been accesed by any given TAN session.

This allows us to throttle requests to protected resources.

__tablename__ = 'tan_accesses'[source]
__table_args__[source]
id: Column[uuid.UUID][source]
session_id: Column[str][source]
url: Column[str][source]
class org.models.tan.TANAccessCollection(session: sqlalchemy.orm.Session, session_id: str, access_window: datetime.timedelta = DEFAULT_ACCESS_WINDOW)[source]

Bases: onegov.core.collection.GenericCollection[TANAccess]

Abstract base class for generic types.

A generic type is typically declared by inheriting from this class parameterized with one or more type variables. For example, a generic mapping type might be defined as:

class Mapping(Generic[KT, VT]):
    def __getitem__(self, key: KT) -> VT:
        ...
    # Etc.

This class can then be used as follows:

def lookup_name(mapping: Mapping[KT, VT], key: KT, default: VT) -> VT:
    try:
        return mapping[key]
    except KeyError:
        return default
property model_class: type[TANAccess][source]
query() Query[TANAccess][source]
add(*, url: str) TANAccess[source]
by_url(url: str) TANAccess | None[source]
count() int[source]