feat(server): anonymous sign-in

People can sign in without an account: AnonymousIdpEndpoint exposes Serverpod's anonymous identity provider. lib/src/auth/auth_config.dart holds the token managers and identity providers, shared by server.dart and the tests, so the tests check what production runs. At most 30 new anonymous accounts per IP address and hour (Serverpod's default is 100): a school class behind one address can still start together, while one abuser gets at most 720 a day. No migration: the tables for anonymous accounts and rate limiting already exist.

Tests: signing in creates a person; the 31st account from one IP address within an hour is refused. They run without database rollback, since signing in uses concurrent transactions that the rollback can't wrap, and delete what they create instead.

The server switches off the lint rules for Dart v3.13's constructor syntax: Serverpod v4.0.2's code generator can't parse it yet.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
This commit is contained in:
Tizian 「ティツィアーン」 2026-09-30 09:03:52 +02:00
commit df99def5bc
Signed by: raisondetredev
GPG key ID: 07F6FCF405488B64

View file

@ -6,5 +6,16 @@ analyzer:
- lib/src/generated/**
- test/integration/test_tools/serverpod_test_tools.dart
# Serverpod v4.0.2's code generator reads this package with an analyzer that doesn't
# know Dart v3.13's primary constructors yet, and fails on them ("requires the
# 'primary-constructors' language feature"). So the server keeps the classic
# constructor and class-body syntax; switch these back on once Serverpod parses it.
linter:
rules:
empty_container_bodies: false
unnecessary_type_name_in_constructor: false
use_declaring_parameters: false
use_primary_constructors: false
formatter:
trailing_commas: preserve