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
« 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.
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.
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.
18Usage example::
20 from viur.core.modules.user import User
21 from viur.core.contrib.loginkey import LoginKey
23 class MyUser(User):
24 authenticationProviders = [LoginKey, ...]
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.
32Usage example::
34 from viur.core.request import Router
35 from viur.core.contrib.ratelimit import RequestRateLimit, TimeWindow
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"""