Files
Link-Log/backend/app/core/security.py
T
2026-08-25 08:39:46 +02:00

29 lines
888 B
Python

## Copyright © 2026 Olaf Kolkman
## SPDX-License-Identifier: GPL-3.0-or-later
from datetime import datetime, timedelta, timezone
from hashlib import sha256
from backend.app.core.config import settings
def hash_token(token: str) -> str:
return sha256(token.encode('utf-8')).hexdigest()
def token_expires_at() -> datetime:
return datetime.now(timezone.utc) + timedelta(days=settings.token_expiry_days)
def clean_url(url: str) -> str:
from urllib.parse import parse_qsl, urlsplit, urlunsplit
parts = urlsplit(url)
if not parts.query:
return url
params = parse_qsl(parts.query, keep_blank_values=True)
filtered = [(k, v) for k, v in params if k not in settings.tracking_params]
new_query = '&'.join(f'{k}={v}' if v != '' else k for k, v in filtered)
return urlunsplit((parts.scheme, parts.netloc, parts.path, new_query, parts.fragment))