| | 1 | = AuthModule 2.0 wishlist = |
| | 2 | [[TOC()]] |
| | 3 | Driven by WormQTL and other community project we would like the following: |
| | 4 | |
| | 5 | == Users, groups and roles == |
| | 6 | |
| | 7 | A user is an natural person that can log in to the system. He/she can have a username and password. |
| | 8 | A group is a named role that cannot log in. Both users and other groups can be 'member' of a group. |
| | 9 | Both user and group are 'role'. |
| | 10 | |
| | 11 | Special roles: |
| | 12 | - anonymous (user): users that are not logged in |
| | 13 | - admin (user): users that bypass the security system |
| | 14 | - all users (group): users that are registered in this system |
| | 15 | |
| | 16 | |
| | 17 | |
| | 18 | |
| | 19 | == Record permission roles == |
| | 20 | |
| | 21 | A record is an instance of an entity. Record permissions define what actions a role can perform on a record. |
| | 22 | We distinguish the following types of permissions per record: |
| | 23 | |
| | 24 | || action || view || edit || own || |
| | 25 | || view record || X || X || X || |
| | 26 | || edit record || - || X || X || |
| | 27 | || give other roles view or edit permissions || - || - || X || |
| | 28 | || delete record || - || - || X || |
| | 29 | || transfer ownership to other user || - || - || X || |
| | 30 | |
| | 31 | Only when having table level write permission you can create new records. |
| | 32 | The creator is automatically the owner. There can be only one owner per record. |
| | 33 | |
| | 34 | == User interactions == |
| | 35 | |
| | 36 | Default only the owner is set and the table level permissions are enforced (e.g. the admin may have specified that 'anonymous' can read and 'biologists' can edit'). |
| | 37 | |
| | 38 | Individual users may choose to override this by giving row level permissions. These come in the form 'PermissionRule' {role,permission}, for example "admin,read". |
| | 39 | Multiple PermissionRule can be bundled into on PermissionSet, for example "admin,write; anonymous, view". |
| | 40 | These can then be link |
| | 41 | |
| | 42 | A 'PermissionSet' is a bundle of permission rules. |
| | 43 | |
| | 44 | |
| | 45 | |
| | 46 | |
| | 47 | |
| | 48 | In the 'list' view you can select record and then push the 'share' button to set sharing permissions (existing permissions are overwritten). |
| | 49 | You can also reuse a previous 'permission set'. |
| | 50 | |
| | 51 | || user story || how it works || |
| | 52 | || Give everybody permission to my data || Give permission to 'anonymous' || |
| | 53 | || Give all registered users permission to my data || Give permission to 'all users' || |
| | 54 | || Give a particular user permission to my data || Give permission to '<username>' || |
| | 55 | |
| | 56 | |
| | 57 | * In user interface it should be very clear what is share so I can change that easily |
| | 58 | * |
| | 59 | * Give view/edit permissions to all users -> give view to 'anonymous'. |
| | 60 | * I can specify for each group that I am member of how I want to share |