Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagecpp
themeConfluence
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

...

Insert excerpt
US:_r_EDMInterface
US:_r_EDMInterface
nopaneltrue

 

Options

...

  

 

Example

...

 

Code Block
languagecpp
 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 (Content by label)
showLabelsfalse
showSpacefalse
cqllabel = "model" and parent = "6062220"