This commit is contained in:
@@ -8,6 +8,13 @@ application concern belongs in the shared module.
|
||||
|
||||
## Gamertan accounts and commerce
|
||||
|
||||
- Instance operators need all-user/all-organization directories, not a staff
|
||||
roster or implicit membership in every business. Optional bounded readers now
|
||||
expose identity/profile records without credentials, independent of membership.
|
||||
The application must authorize each call through an explicit instance scope;
|
||||
these readers intentionally contain no Gamertan-specific roles or UI policy.
|
||||
Stable-ID cursors and literal searches are covered against pagination gaps,
|
||||
renamed profiles, inactive/personal records and wildcard/query injection.
|
||||
- Customer profile and membership editing requires current ownership for every
|
||||
write, not just changes involving another owner. The existing generic methods
|
||||
intentionally permit application-authorized delegated administrators, so an
|
||||
|
||||
@@ -26,7 +26,7 @@ The packages are ordinary Go imports. Pin the current preview and verify its
|
||||
module checksum:
|
||||
|
||||
```bash
|
||||
go get gamertan.com/web/requestmeta@v0.1.0-preview.24
|
||||
go get gamertan.com/web/requestmeta@v0.1.0-preview.25
|
||||
go mod verify
|
||||
```
|
||||
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ import "gamertan.com/web/requestmeta"
|
||||
and request the containing module at an exact version:
|
||||
|
||||
```bash
|
||||
go get gamertan.com/web/requestmeta@v0.1.0-preview.24
|
||||
go get gamertan.com/web/requestmeta@v0.1.0-preview.25
|
||||
```
|
||||
|
||||
Only imported packages are compiled and linked. The packages nevertheless
|
||||
|
||||
@@ -40,6 +40,25 @@ never accept the owner-role policy or actor identity from submitted fields.
|
||||
|
||||
## Creating an organization with an owner
|
||||
|
||||
For instance-wide administrative directories, the optional
|
||||
`auth.UserDirectoryRepository` and `organizations.DirectoryRepository` readers
|
||||
on `authsqlite.Store` list all identities/organizations, not just memberships.
|
||||
**Authorize an explicit instance-read capability before every call.** These are
|
||||
not customer self-service or public directory APIs; they deliberately include
|
||||
incomplete/inactive accounts and personal/archived organizations without exposing
|
||||
credentials, recovery material or invitations. Merchant classification remains
|
||||
application policy. Reading never creates a membership or grants a role.
|
||||
|
||||
Both queries accept literal `Search` (up to 128 bytes), exclusive `AfterID`, and
|
||||
`Limit` (default 50, maximum 200). An empty `NextID` ends the result. Preserve the
|
||||
search when following a cursor; reset it when changing the search. IDs give stable
|
||||
ordering despite renamed profiles, but pages are current views rather than a
|
||||
multi-request snapshot. New records sorting before a cursor appear on a fresh
|
||||
listing. SQLite search folds ASCII case; non-ASCII display-name text matches with
|
||||
its original case. Wildcards and SQL fragments are always literal search text.
|
||||
These optional readers do not change the required authentication/organization
|
||||
repository contracts or schema 10.
|
||||
|
||||
For an existing authenticated user creating a business, use
|
||||
`CreateOwnedOrganization` with `OwnerRole` configured when constructing the
|
||||
service. Seed that role first. This commits the organization, active membership,
|
||||
|
||||
Reference in New Issue
Block a user