watchword-core 0.3.0

The types watchword's server and frontends share: users, roles, the wire types of its routes, and AuthError.
Documentation

watchword-core

The types watchword's server and frontends share: identities, roles, account state, the JSON wire types of the /api/auth routes, AuthError, and input validation.

Apps normally use these through watchword, which re-exports them as watchword::types and at its crate root, or through a frontend crate such as watchword-yew023. Released in lockstep with watchword.

Features

The crate is no_std, and safe to build for wasm32-unknown-unknown with any feature but axum08 and sqll015. Only std is on by default.

Feature What it provides
(none) UserId, Role, Access, Method, Conflict, AuthConfig, MIN_PASSWORD_LEN and is_same_origin_path, the rule a ?next= is followed by
alloc the wire types that hold strings (UserInfo, LoginRequest, CreatedUser, ...), AuthError and its Invalid reasons, validate_password and normalize_email, and AuthRequest and AuthResponse, every operation of watchword's service as one value, which the server's Auth::dispatch runs and a frontend's transport carries
std (default) alloc, and the standard library for the dependencies that have it
musli02 musli 0.2 Encode/Decode on the types, so an app can embed them in its own WebSocket messages
musliweb05 alloc + musli02 + musliweb05: the account, user-management and Cloudflare Access settings endpoints and AuthBroadcast as musli-web 0.5 API types, with their ids pinned in 32000–32255
axum08 std + axum 0.8 IntoResponse for AuthError, answering with its JSON body and status, and for AuthResponse; watchword's axum08 feature turns it on (not for wasm)
sqll015 std + sqll 0.15 BindValue, Bind and FromColumn for UserId (an integer with the same bits) and for Role, Access and Method (their names as text), so an app's own statements bind and read them directly; watchword's sqll015 feature turns it on. It takes sqll with threadsafe only; the app names bundled or links its own SQLite (not for wasm)
phrasebookcatalog01 phrasebookcatalog01: L10N, watchword's messages (the text of its Yew components) as a phrasebook-catalog 0.1 catalog, which phrasebook 0.2 takes, for a tool such as an app's localization checker that needs them without building a frontend; it needs neither std nor alloc. watchword-yew023 re-exports it, and watchword's phrasebookcatalog01 and yew023 features turn it on