Moderation and Sanctions
Only your own users may be sanctioned.
The bans are implemented around read access (HTTP methods GET, HEAD and OPTIONS), write access (HTTP methods DELETE, POST and PUT), read/write access, or service access.
Potential conflicts are handled this way:
- If any roles are found that decline permission, then the whole request is declined
- If any roles are found which give permission, then the request is processed
- If no roles are found, the whole request is declined.
Roles that ban
The user has no write access to the /newmarks and /xlates hierarchy.
The user has no read or write access to the /newmarks, /xlates and /RBAC hierarchies but still has read/write access to /subscribers perhaps to change or recover his password, etc.
The user is excluded from the whole of the service as soon as he authenticates. This includes the homepage. Of course, as soon as he drops his credentials, he'd have PRIVROLE_ANON access.
ROLE_SUPERORD & ROLE_SUBS_MOD
These users may change another SubOrd's password such that the account remains active, but inaccessible. ROLE_SUPERORD only
May also delete the SubOrd's account such that the account is inactive as well as inaccessible. (However note accounts can be manually resurrected on the server)
All roles may be time-limited, thus all sanctions may be time-limited. When assigning any role, start_date and end_date must be filled in with CDMI times. If a request occurs between those two times according to the clock on the server, the role is effective; outside of those times the role is ignored.
The earliest possible CDMI time is "0001-01-01T00:00:00.000000Z", the latest is "9999-12-31T23:59:59.999999Z" and the service will accept any sanction length 0.000001 seconds or longer.
Leaving a message for the banned
Messages are accomplished through HTTP
303 See Other responses, using a URL to your own site, and a query string to inform your site what to do.
When uploading a ban, you may also choose to include a URL to the http303 field: if and when that role causes a failure, the client will be sent HTTP
303 See Other with your URL in the HTTP
Location: header. Clients should issue a GET against that address and present the result to the user.
A ban can be lifted or changed before the end_date by deleting or modifying the user2role record describing it.