|
@ -32,20 +32,24 @@ class SiteTerminalApp extends SiteRuntime { |
|
|
|
|
|
|
|
|
this.processors = { |
|
|
this.processors = { |
|
|
'help': { |
|
|
'help': { |
|
|
handler: this.help.bind(this), |
|
|
handler: this.cmdHelp.bind(this), |
|
|
help: 'help [command name]', |
|
|
help: 'help [command name]', |
|
|
}, |
|
|
}, |
|
|
|
|
|
|
|
|
'create-account': { |
|
|
'create-account': { |
|
|
handler: this.createAccount.bind(this), |
|
|
handler: this.cmdCreateAccount.bind(this), |
|
|
help: 'create-account email username [password]', |
|
|
help: 'create-account email username [password]', |
|
|
}, |
|
|
}, |
|
|
'grant': { |
|
|
'grant': { |
|
|
handler: this.grant.bind(this), |
|
|
handler: this.cmdGrant.bind(this), |
|
|
help: 'grant [admin|moderator] username', |
|
|
help: 'grant [admin|moderator] username', |
|
|
}, |
|
|
}, |
|
|
|
|
|
'reset-indexes': { |
|
|
|
|
|
handler: this.cmdResetIndexes.bind(this), |
|
|
|
|
|
help: 'reset-indexes [modelname, modelname, ...]', |
|
|
|
|
|
}, |
|
|
'revoke': { |
|
|
'revoke': { |
|
|
handler: this.revoke.bind(this), |
|
|
handler: this.cmdRevoke.bind(this), |
|
|
help: 'revoke [admin|moderator] username', |
|
|
help: 'revoke [admin|moderator] username', |
|
|
}, |
|
|
}, |
|
|
}; |
|
|
}; |
|
@ -67,7 +71,7 @@ class SiteTerminalApp extends SiteRuntime { |
|
|
return processor.handler(args); |
|
|
return processor.handler(args); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
async help (args) { |
|
|
async cmdHelp (args) { |
|
|
const commandName = args.shift(); |
|
|
const commandName = args.shift(); |
|
|
if (commandName) { |
|
|
if (commandName) { |
|
|
const command = this.processors[commandName]; |
|
|
const command = this.processors[commandName]; |
|
@ -87,7 +91,7 @@ class SiteTerminalApp extends SiteRuntime { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
async createAccount (args) { |
|
|
async cmdCreateAccount (args) { |
|
|
const { user: userService } = this.services; |
|
|
const { user: userService } = this.services; |
|
|
const email = args.shift(); |
|
|
const email = args.shift(); |
|
|
const username = args.shift(); |
|
|
const username = args.shift(); |
|
@ -96,7 +100,7 @@ class SiteTerminalApp extends SiteRuntime { |
|
|
await userService.create({ email, username, password }); |
|
|
await userService.create({ email, username, password }); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
async grant (args) { |
|
|
async cmdGrant (args) { |
|
|
const User = mongoose.model('User'); |
|
|
const User = mongoose.model('User'); |
|
|
|
|
|
|
|
|
const privilege = args.shift(); |
|
|
const privilege = args.shift(); |
|
@ -119,7 +123,16 @@ class SiteTerminalApp extends SiteRuntime { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
async revoke (args) { |
|
|
async cmdResetIndexes (args) { |
|
|
|
|
|
try { |
|
|
|
|
|
this.log.info('resetting MongoDB indexes...', { args }); |
|
|
|
|
|
await this.resetIndexes(args); |
|
|
|
|
|
} catch (error) { |
|
|
|
|
|
this.log.error('failed to reset database indexes', { error }); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async cmdRevoke (args) { |
|
|
const User = mongoose.model('User'); |
|
|
const User = mongoose.model('User'); |
|
|
|
|
|
|
|
|
const username_lc = args.shift(); |
|
|
const username_lc = args.shift(); |
|
|