Analysis
Overview
Implement permissions as a property of an object. The permissions combine a user, group or everyone. Permissions are a list, which allows for multiple permissions on an object.
Permissions should be more access control list oriented vs unix permissions styled. Each permission can be additive or subtractive. For example, a resource can have a modify permission for Group "Art Department" but User "Fred" who is in the group might have modify permission removed. Therefore individual user permissions must usurp any group permissions given on a particular object.
Permissions on an object include:
- Read - Author can use the resource in a book
- Write - Can modify permissions
- Modify - Author can scale, rotate or apply other transformations to the resource
- Export - Resource can be exported (copied to the clipboard, etc)
Task requirements
- Implement permissions as a property on resources
- Add a permissions panel to the resources flap that allows the setting of permissions
- Document how code checks for permissions on an object
Task result
The result of this task is code
Implementation idea
- Remember that a user cannot change permissions if they don't have write permission
- see the Own PRO_LIB property
Related
- BASE_SECURITY_MODEL_COMMONS_R0
- BASE_SECURITY_MODEL_PERMISSIONS_R0
- BASE_SECURITY_MODEL_USERS_R0
- BASE_SECURITY_MODEL_GROUPS_R0
How to demo
If this task ends up having UI (I am not sure as of this writing) then you can demo the UI for permissions, otherwise share the documentation.
Design
(Describe your design here.)
Implementation
(Describe and link the implementation results here (from the wiki or the repository).)
Testing
(Place the testing results here.)
Comments
Own PRO_LIB property