Updated requirements

This commit is contained in:
Kevin Frantz 2018-09-12 23:46:57 +02:00
parent 287d60000e
commit bf32608956

View File

@ -4,6 +4,8 @@ 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). "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).
**Bold** words define a unique type.
# requiremts # requiremts
## interfaces ## interfaces
@ -22,63 +24,80 @@ The application MUST provide the following functions:
* login * login
* logout * logout
A user MUST have one node. A **user** MUST have one **node**.
A user MUST be a source. A **user** MUST be a **source**.
### law ### law
A law MUST belong exclusive to a node. A **law** MUST belong exclusive to a **node**.
A law MUST contain one of each of right types one time. A **law** MUST contain one of each of **right** types one time.
#### right #### right
A right MUST NOT be a source. A **right** MUST NOT be a **source**.
A right MUST belong to a law. A **right** MUST belong to a **law**.
A right MUST be of one of the following types: A **right** MUST be of one of the following types:
* read * read
* write * write
* administrate * administrate
#### permission #### permission
A permission MAY have a father from which it inherit. A **permission** MAY have a father from which it inherit.
A permission MUST belong to a right. A **permission** MUST belong to a **right**.
A permission MUST allow blacklisting. A **permission** MUST allow blacklisting.
A permission MUST allow whitelisting. 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 parent **relative collection** s of the rule set.
A permission MUST allow that it applies to the parents of the collection. A **permission** MUST allow that it applies to the child **relative collection** s of the rule set.
A permission MUST contain a collection on which the rule set applies. A **permission** MUST contain a **collection** on which the rule set applies.
### node ### node
A node MUST have one source. A **node** MUST have one **source**.
A node MAY contain a parents collection. A **node** MUST contain a parent **relative collection**.
A node MAY contain a children collection. A **node** MUST contain a children **relative collection**.
A node MAY be a member of a collection entity. A **node** MAY be a member of one or more **relative collection** s.
A node MUST have a law. A **node** MAY be a member of one or more **collection** entity.
A node MUST have a history.
A **node** MUST have a **law**.
A **node** MUST have a **history**.
#### relative collection
A **relative collection** MUST belong to a **node**.
A **relative collection** MUST contain **node** s.
A **relative collection** MUST provide the following functions:
* get all relatives
* get specific relative
* get relatives
* get relatives of generation
### source ### source
A source MUST have one node. A **source** MUST have one node.
A source MUST be an entity. A **source** MUST be an entity.
A **source** MUST contain a file fabric.
#### entities #### entities
Sources MUST be on of the following entities: Sources MUST be on of the following entities:
entity|attributes entity|attributes
--- | --- --- | ---
user|username,password,identity user|username,password,identity
identity|names,addresses identity|names,addresses
address| address|
@ -90,11 +109,10 @@ text|text(varchar)
collection|nodes collection|nodes
live|birthday,death live|birthday,death
A source MUST have a file fabric. #### file
#### files A **file** MUST be on of the following types:
Sources MUST be on of the following files:
* HTML * HTML
* JSON * JSON
* XML * XML
@ -102,18 +120,18 @@ Sources MUST be on of the following files:
* CSV * CSV
* JPG * JPG
It SHOULD be possible to export a file to one or more other files. It SHOULD be possible to export a **file** to one or more other **file** s.
It MUST be possible to edit a file. It MUST be possible to edit a **file**.
IT MUST be possible to save a file. IT MUST be possible to save a **file**.
#### collection #### collection
A source MAY contain other nodes. A **source** MAY contain other **nodes**.
### history ### history
A history MUST log all of the actions which happen to a node. A **history** MUST log all of the actions which happen to a **node**.
A history MUST exclusive belong to a node. A **history** MUST exclusive belong to a **node**.
A history MUST allow to give the state of a node to a special date back. A **history** MUST allow to give the state of a **node** of a special date back.