edmiRemoteProtectInstance

EdmiError edmiRemoteProtectInstance(SdaiServerContext serverContextId,
                                      SdaiAppInstance   currInst,
                                      SdaiUnsignedInt   protection,
                                      SdaiInvocationId  *edmiInvocationId);


Sets a protection code on a protected instance in a remote EDMdatabase When a protected instance is created, the default protection code is set according to default values that are set as configuration parameters in the remote EDMdatabase . These default settings may be changed by the owner/administrators of the protected instance or by the superuser.

Arguments


TypeNameComment
SdaiServerContext

serverContextId

Context identification, from edmiDefineServerContext

SdaiAppInstance

currInst

A numeric instanceID that uniquely identifies a protected instance for which the protection code Shall be set. This instanceId may represent any protected object in the remote EDMdatabase  such as models, repositories, schemas and containers.

SdaiUnsignedInt

protection

Specifies the protection to be set for the specified protected instance. The value should be a bitwise OR of any combination of the symbols listed below.
OWNER_READ, OWNER_WRITE, OWNER_CREATE, OWNER_EXECUTE, OWNER_DELETE
GROUP_READ, GROUP_WRITE, GROUP_CREATE, GROUP_EXECUTE, GROUP_DELETE
PUBLIC_READ, PUBLIC_WRITE, PUBLIC_CREATE, PUBLIC_EXECUTE, PUBLIC_DELETE
 
If no access shall be set at all for either owner, group owner or public, use the symbols below
OWNER_NONE, GROUP_NONE, PUBLIC_NONE

SdaiInvocationId

edmiInvocationId

Currently not used.

Return Value


Error rendering macro 'excerpt-include' : User 'null' does not have permission to view the page 'US:_r_EDMInterface'.

 

Options


  

 

Example


 

 EdmiError rstat;
 SdaiInstance instId;
 SdaiServerContext myContext;
 SdaiRepository repId;
 SdaiModel modId;
 SdaiInstance userId, directorId;
 SdaiBoolean gotAccess;
 SdaiInteger accessRole, protCode, accRights;
  
 /* Define Remote Server Context */
 rstat = edmiDefineServerContext("MyRemoteServerContext",
 "Superuser", NULL, "cf37ftr", 
 "TCP", "9090", "MyServerHost", 
 NULL, NULL, NULL, NULL, NULL, &myContext); 
  
 /* Check if Johnny got access */
 rstat = edmiRemoteGetRepository(myContext, "StaffRepository",
 &repId, NULL); 
 rstat = edmiRemoteGetUser(myContext, "Johnny", &userId, NULL);
 rstat = edmiRemoteCheckInstanceAccess(myContext, repId, 0,
 (WRITE_ACCESS|CREATE_ACCESS), userId, 0, 0,  
 &gotAccess, &instId, &accessRole,  
 &protCode, &accRights, NULL); 
  
 /* Check if access may be granted */
 if (gotAccess != sdaiTRUE) {
 /* Check if Johnny was individually excluded */ 
 if (accessRole == ACCESS_FOR_USER) { 
 printf("\nSorry Johnny has already been excluded."); 
 goto err; 
 } else if (accessRole != PUBLIC_ACCESS) { 
 printf("\nJohnny is owner or administrator."); 
 printf("\nIndividual access rights will have no effect."); 
 goto err; 
 } else { 
 /* Grant access to Johnny on the StaffRepository */ 
 rstat = edmiRemoteDefineAccessRights(myContext, repId,  
 userId, (WRITE_ACCESS|CREATE_ACCESS), NULL); 
 } 
 }
  
 /* Create Johnnys Hour List Model */
 rstat = edmiRemoteCreateModel(myContext, "StaffRepository",
 "JohnnysHourList", "HOUR_LIST_SCHEMA", 0, NULL); 
  
 rstat = edmiRemoteGetModel(myContext, repId,
 "JohnnysHourList", &modId, NULL); 
  
 /* Change ownership */
 rstat = edmiRemoteChangeInstanceOwner(myContext, modId,
 userId, (SET_OWNER|REPLACE_CURRENT), NULL); 
  
 /* Set protection */
 rstat = edmiRemoteProtectInstance(myContext, modId,
 (GROUP_NONE|PUBLIC_NONE|OWNER_CREATE| 
 OWNER_DELETE|OWNER_WRITE), NULL); 
  
 /* Grant read access to director */
 rstat = edmiRemoteGetUser(myContext, "Director", &directorId, NULL);
 rstat = edmiRemoteDefineAccessRights(myContext, modId,
 directorId, READ_ACCESS, NULL); 
 . . .

 

See also

Filter by label

There are no items with the selected labels at this time.

Â