Coverage for /home/runner/work/viur-core/viur-core/viur/src/viur/core/contrib/__init__.py: 100%

0 statements  

« prev     ^ index     » next       coverage.py v7.16.1, created at 2026-09-25 15:02 +0000

1""" 

2viur.core.contrib — optional, reusable application-level components. 

3 

4This package contains self-contained components that are commonly needed 

5but *not* required to run a ViUR application. Components are opt-in; 

6import only what you use. 

7 

8Available modules 

9----------------- 

10loginkey 

11 :class:`~viur.core.contrib.loginkey.IndexedCredentialBone` and 

12 :class:`~viur.core.contrib.loginkey.LoginKey` — a 

13 :class:`~viur.core.modules.user.UserPrimaryAuthentication` that 

14 authenticates users via a secret token stored in a Datastore-indexed 

15 :class:`~viur.core.bones.CredentialBone`. Suitable for "magic link" 

16 style logins or machine-to-machine auth. 

17 

18Usage example:: 

19 

20 from viur.core.modules.user import User 

21 from viur.core.contrib.loginkey import LoginKey 

22 

23 class MyUser(User): 

24 authenticationProviders = [LoginKey, ...] 

25 

26ratelimit 

27 :class:`~viur.core.contrib.ratelimit.RequestRateLimit` — a 

28 :class:`~viur.core.request.RequestValidator` that enforces per-IP / 

29 per-user request-rate limits using App Engine Memcache. Suitable for 

30 global rate-limiting and basic DDoS mitigation at the WSGI boundary. 

31 

32Usage example:: 

33 

34 from viur.core.request import Router 

35 from viur.core.contrib.ratelimit import RequestRateLimit, TimeWindow 

36 

37 Router.requestValidators.append( 

38 RequestRateLimit( 

39 rate_for_guests=TimeWindow(limit=200, time_window=60), 

40 rate_for_users=TimeWindow(limit=500, time_window=60), 

41 ) 

42 ) 

43"""