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

1from .default import DefaultRender as default 

2from viur.core import securitykey, current, errors 

3from viur.core.decorators import * 

4import json 

5 

6__all__ = [default] 

7 

8 

9@exposed 

10def skey(amount: int = 1, *args, **kwargs) -> str: 

11 """ 

12 Creates CSRF-security-keys for transactions. 

13 

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. 

16 

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. 

19 

20 See module securitykey for details. 

21 """ 

22 current.request.get().response.headers["Content-Type"] = "application/json" 

23 

24 if amount == 1: 

25 return json.dumps(securitykey.create()) 

26 

27 if not 0 < amount <= 100: 

28 raise errors.Forbidden("Invalid amount provided") 

29 

30 if not current.user.get(): 

31 raise errors.Forbidden("Batch securitykey creation is only available to authenticated users") 

32 

33 return json.dumps([securitykey.create() for _ in range(amount)]) 

34 

35 

36def _postProcessAppObj(obj): # Register our SKey function 

37 obj["skey"] = skey 

38 return obj