Coverage for /home/runner/work/viur-core/viur-core/viur/src/viur/core/render/json/__init__.py: 0%
18 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-13 11:04 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-13 11:04 +0000
1from .default import DefaultRender as default
2from viur.core import securitykey, current, errors
3from viur.core.decorators import *
4import json
6__all__ = [default]
9@exposed
10def skey(amount: int = 1, *args, **kwargs) -> str:
11 """
12 Creates CSRF-security-keys for transactions.
14 All returned keys are associated with the session, therefore they cannot be used across sessions.
15 The keys get a maximum lifetime of the session lifetime, afterward they become invalid.
17 :param amount: Optional amount of securitykeys to create in a batch.
18 `amount > 1` can only be used by authenticated users, for a maximum of 100 keys.
20 See module securitykey for details.
21 """
22 current.request.get().response.headers["Content-Type"] = "application/json"
24 if amount == 1:
25 return json.dumps(securitykey.create())
27 if not 0 < amount <= 100:
28 raise errors.Forbidden("Invalid amount provided")
30 if not current.user.get():
31 raise errors.Forbidden("Batch securitykey creation is only available to authenticated users")
33 return json.dumps([securitykey.create() for _ in range(amount)])
36def _postProcessAppObj(obj): # Register our SKey function
37 obj["skey"] = skey
38 return obj