Before, it was implemented by passing the changed attribut keys over to
the contract to whitelist them.
This lead to:
* The contract interface becoming bloated
* Having to rely on the knowledge of the developer not to falsely
whitelist an attribute. The developer would also have to make sure
to not perform a mass assignment after the attribute has been
whitelisted
The new approach it to integrate the behaviour into the model which is
first altered in the service before it is scrutinized in the contract.
The information about the changed attributes is now stored inside the
model which removes the necessity to flag the whitelisted attribute
separately. Additionally, the exact change is tracked. So if an
attribute is set to one value inside a whitelisted block there is no
risk in later on performing a mass assignment.
This comes at the cost of extending the models which is weird also it is
build into the default SetAttributesService so child classes do not have
to worry. One might include the module into every AR model but currently
we only need it for a very specific use case.
Updates the copyright to 2021 for all files that have a copyright. Files in our source code without the copyright header still do not receive one automatically. Additionally, backlisted files are also excluded.
Previously the copyright of chiliproject which references redmine stated a copyright of redmine up to and including 2017 which is not true for the code we have in here. Because of that I changed that to 2013
* basic members collection response
* complete member index end point
* document versions#index
* remove user association from members
There is already a more generic principals association. Having both causes confusion and leads to duplicate loading of models
* linting
* remove disabled test
* add members#show api end point
* add project and principal to member representer
* replace member.user reference with principal
* use principal reference in project members association
* modernize roles api
* complete member representer rendering
* replace remnants of user association
* add member schema api endpoint
* have dedicated available projects end point for versions
* linting
* limit roles to assignable ones in schema
* rename member to membership in api
* remove remnants of user in member
* spec fixes
* use available_projects endpoint in versions board
* add eager loading to memberships#index
* members create form api endpoint
* ensure role exists for default assignment
* extract switch for users/groups to work_packages representer
* document membership create form
* add l10n expected in specs
* strengthen the usage of a delete base service
* use base class for set attributes service
* fix alias in service
* add create endpoint to members api
* document members create endpoint
* linting
* adapt to altered service signature
* use default endpoint for wp#get
* use CF infused representer
[ci skip]