Skip to main content

Set Permissions

Set permissions for various assets.

note
  • Use rw to set the access level to Administrate.
  • Use ro to set the access level to Read Only.
  • Use none to set the access level to No access.
const jsc8 = require("jsc8");

// Email and password to authenticate client instance
const email = "nemo@nautilus.com";
const password = "xxxxxx";
const fabric = "_system";
const keyid = "id1";
const collectionName = "testCollection";
const streamName = "testStream";

const client = new jsc8({
url: "https://play.paas.macrometa.io",
fabricName: fabric
});
// Or use one of the following authentication methods.

// Create an authenticated instance with a JWT token.
// const clientUsingJwt = new jsc8({url: "https://play.paas.macrometa.io" , token: "XXXX" , fabricName: fabric});
// Create an authenticated instance with an API key.
// const clientUsingApiKey = new jsc8({url: "https://play.paas.macrometa.io" , apiKey: "XXXX" , fabricName: fabric });
function messageHandler (error) {
const message = {
"StatusCode ": error.statusCode,
"ErrorMessage ": error.message,
"ErrorNum ": error.errorNum
};
console.log(message);
}
async function main () {
await client
.login(email, password)
.then((e) => console.log("1. User authentication done!"))
.catch((error) => error);

console.log("\n2. Listing collections");
await client
.getCollections()
.then((collections) => {
console.log(collections);
})
.catch((error) => messageHandler(error));

console.log("\n3. Creating collection");
await client
.createCollection(collectionName)
.then((collection) => {
console.log("Collection created successfully");
})
.catch((error) => messageHandler(error));

console.log("\n4. Setting collection access level access level to read write");
await client
.setCollectionAccessLevel(keyid, fabric, collectionName, "rw")
.then((collectionAccessLevel) => {
console.log(collectionAccessLevel);
})
.catch((error) => messageHandler(error));

console.log("\n5. Creating stream " + streamName);
await client
.createStream(streamName)
.then((stream) => console.log(stream))
.catch((error) => messageHandler(error));

console.log(
"\n6. Setting stream " + streamName + " access level to read only"
);
await client
.setStreamAccessLevel(keyid, fabric, "c8globals." + streamName, "ro")
.then((streamAccessLevel) => console.log(streamAccessLevel))
.catch((error) => messageHandler(error));

console.log(
"\n7. Setting database " +
fabric +
" access level to read write for Key_ID " +
keyid
);
await client
.setDatabaseAccessLevel(keyid, fabric, "rw")
.then((databaseAccessLevel) => console.log(databaseAccessLevel))
.catch((error) => messageHandler(error));
}

main()
.then()
.catch((error) => console.log(error));