@eluvio/elv-utils-js
Version:
Utilities for the Eluvio Content Fabric
62 lines (49 loc) • 1.68 kB
JavaScript
// Give a group permissions to an object
const {ModOpt, NewOpt} = require('./lib/options')
const Utility = require('./lib/Utility')
const Client = require('./lib/concerns/Client')
const ArgObjectId = require('./lib/concerns/ArgObjectId')
const Logger = require('./lib/concerns/Logger')
const permissionTypes = ['owner', 'editable', 'viewable', 'listable', 'public']
class ObjectSetPermission extends Utility {
static blueprint() {
return {
concerns: [Logger, ArgObjectId, Client],
options: [
ModOpt('objectId', {demand: true, X: ' to set permission on'}),
NewOpt('permission', {
choices: permissionTypes,
demand: true,
descTemplate: 'Permission level to set',
type: 'string'
})
]
}
}
async body() {
const logger = this.concerns.Logger
const client = await this.concerns.Client.get()
const {objectId, permission} = await this.concerns.ArgObjectId.argsProc()
const prevHash = await client.LatestVersionHash({objectId: objectId})
await client.SetPermission({
objectId,
permission
})
const newHash = await client.LatestVersionHash({objectId: objectId})
if(prevHash === newHash) {
logger.log('Version hash unchanged: ' + newHash )
} else {
logger.log('Previous version hash: ' + prevHash )
logger.log('New version hash: ' + newHash )
}
logger.data('version_hash', newHash)
}
header() {
return `Set permission on ${this.args.objectId} to ${this.args.permission}`
}
}
if(require.main === module) {
Utility.cmdLineInvoke(ObjectSetPermission)
} else {
module.exports = ObjectSetPermission
}