Before, because it was not possible to specify multiple accesses for a single user, all accesses were secured the same way.
For instance, object modification and ownership transfer were governed by the same security rules, which means that if a user was authorized to modify an object belonging to the project the user was working on, the user could also transfer the ownership of that object.
One might consider it safer or more sensible to only authorize ownership transfer if the user is also the owner of the object, in which case a particular check must be made for that operation.
Multiple access is an ENOVIA V6 core software security mechanism that provides the capability to specify separate access filters for each secured operation.
The keyword $ACCESS has been added to the grammar supported by filter expressions used in policies and rules: it is automatically substituted to the security access being checked (read, show, etc.) by the kernel when determining if the current user is authorized to operate on some object.
It thus makes it possible to define access-specific expressions in filter expressions, i.e. define distinct criteria for separate accesses.
As a consequence, the accesses can now be defined like this:
user VPLMDesigner
read, show, create, delete, modify, promote, demote,
grant, revoke, changename, changeowner, changetype,
checkIn, checkOut, lock, unlock, fromconnect,
fromdisconnect, toconnect, todisconnect
filter "(((altowner1 == '' && 'MyCompany' match
context.role.ancestor) || altowner1.ancestor[MyCompany])
&& ((altowner2 == '' && 'Standard' match context.role.parent)
|| altowner2 == 'Standard')) && (('$ACCESS' != 'changeowner')
|| (owner == context.user))"
in order to illustrate the particular case of ownership modification presented above.
Here, an extra criterion is added in case the security access being checked is changeowner, which is the kernel security access used to secure ownership transfer: the current user must be the owner of the object being checked; if the access is anything other than changeowner, the criterion is ignored.
Note: in order to be interpreted correctly by the security infrastructure, keyword $ACCESS must be enclosed in single or double quotes.