internal.auth.token

Manages tokens in database.

 1"""Manages tokens in database."""
 2
 3from datetime import UTC, datetime, timedelta
 4
 5from sqlalchemy.ext.asyncio import AsyncConnection
 6
 7from internal.queries.models import Token
 8from internal.queries.token import AsyncQuerier as TokenQuerier
 9from internal.queries.token import CreateTokenParams
10from internal.settings.env import auth_settings
11
12from .security import generate_token
13
14
15async def create_token(user_id: int, conn: AsyncConnection) -> Token:
16    """Create, insert into database and return token for the user.
17
18    Args:
19      user_id: user id for which to create token
20      conn: database connection
21
22    Returns:
23      row from the database for the created token
24
25    Raises:
26      ValueError: if database failed to insert token
27    """
28    token = await TokenQuerier(conn).create_token(
29        CreateTokenParams(
30            user_id=user_id,
31            token=generate_token(),
32            expires_at=datetime.now(UTC)
33            + timedelta(seconds=auth_settings.token_exparation),
34        )
35    )
36    if not token:
37        raise ValueError("Failed to create token")
38    return token
39
40
41async def delete_token(token: str, conn: AsyncConnection) -> None:
42    """Delete given token from database.
43
44    Args:
45      token: token to delete
46      conn: database connection
47
48    Raises:
49      ValueError: if failed to delete or find given token
50    """
51    deleted_token = await TokenQuerier(conn).delete_token(token=token)
52    if not deleted_token:
53        raise ValueError("Failed to delete token")
async def create_token( user_id: int, conn: sqlalchemy.ext.asyncio.engine.AsyncConnection) -> internal.queries.models.Token:
16async def create_token(user_id: int, conn: AsyncConnection) -> Token:
17    """Create, insert into database and return token for the user.
18
19    Args:
20      user_id: user id for which to create token
21      conn: database connection
22
23    Returns:
24      row from the database for the created token
25
26    Raises:
27      ValueError: if database failed to insert token
28    """
29    token = await TokenQuerier(conn).create_token(
30        CreateTokenParams(
31            user_id=user_id,
32            token=generate_token(),
33            expires_at=datetime.now(UTC)
34            + timedelta(seconds=auth_settings.token_exparation),
35        )
36    )
37    if not token:
38        raise ValueError("Failed to create token")
39    return token

Create, insert into database and return token for the user.

Arguments:
  • user_id: user id for which to create token
  • conn: database connection
Returns:

row from the database for the created token

Raises:
  • ValueError: if database failed to insert token
async def delete_token(token: str, conn: sqlalchemy.ext.asyncio.engine.AsyncConnection) -> None:
42async def delete_token(token: str, conn: AsyncConnection) -> None:
43    """Delete given token from database.
44
45    Args:
46      token: token to delete
47      conn: database connection
48
49    Raises:
50      ValueError: if failed to delete or find given token
51    """
52    deleted_token = await TokenQuerier(conn).delete_token(token=token)
53    if not deleted_token:
54        raise ValueError("Failed to delete token")

Delete given token from database.

Arguments:
  • token: token to delete
  • conn: database connection
Raises:
  • ValueError: if failed to delete or find given token