The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”,
“SHOULD NOT”, “RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be
interpreted as described in [RFC 2119](https://tools.ietf.org/html/rfc2119).
"entity" or "entities" are to be interpreted as [Doctrine Objects](https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/working-with-objects.html).
# requiremts
## interfaces
The application MUST contain the following interfaces:
* HTML
* JSON
## actors
### user
The application MUST provide the following functions:
* delete user
* register user
* modify user
* create user (child)
* login
* logout
A user MUST have one node.
A user MUST be a source.
### law
A law MUST belong exclusive to a node.
A law MUST contain one of each of right types one time.
#### right
A right MUST NOT be a source.
A right MUST belong to a law.
A right MUST be of one of the following types:
* read
* write
* administrate
#### permission
A permission MAY have a father from which it inherit.
A permission MUST belong to a right.
A permission MUST allow blacklisting.
A permission MUST allow whitelisting.
A permission MUST allow that it applies to child of collection.
A permission MUST allow that it applies to the parents of the collection.
A permission MUST contain a collection on which the rule set applies.