diff --git a/package.json b/package.json index 8c6ecd7..6c78ad0 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,8 @@ "docker-upfull": "npm run docker-update && npm run docker-resetup", "docker-resetup": "docker-compose exec ass npm run setup && docker-compose restart", "cli-setpassword": "node dist/tools/script.setpassword.js", - "cli-testpassword": "node dist/tools/script.testpassword.js" + "cli-testpassword": "node dist/tools/script.testpassword.js", + "cli-adduser": "node dist/tools/script.adduser.js" }, "repository": "github:tycrek/ass", "keywords": [ diff --git a/src/tools/script.adduser.ts b/src/tools/script.adduser.ts new file mode 100644 index 0000000..95c61df --- /dev/null +++ b/src/tools/script.adduser.ts @@ -0,0 +1,29 @@ +import path from 'path'; +import fs from 'fs-extra'; +import axios from 'axios'; +import logger from '../logger'; +import { User } from '../types/auth'; + +// Port from config.json +const { port } = fs.readJsonSync(path.join(process.cwd(), 'config.json')); + +// CLI key from auth.json +const { cliKey } = fs.readJsonSync(path.join(process.cwd(), 'auth.json')); + +if (process.argv.length < 4) { + logger.error('Missing username or password'); + logger.error('Usage: node script.adduser.js [admin] [meta]'); + process.exit(1); +} else { + const username = process.argv[2]; + const password = process.argv[3]; + const admin = process.argv[4] ? process.argv[4].toLowerCase() === 'true' : false; + const meta = process.argv[5] ? JSON.parse(process.argv[5]) : {}; + + axios.post(`http://localhost:${port}/api/user/new`, { username, password, admin, meta }, { headers: { 'Authorization': cliKey } }) + .then((response) => { + const user = response.data as User; + logger.info('User created', username, user.unid).callback(() => process.exit(0)) + }) + .catch((err) => logger.error(err).callback(() => process.exit(1))); +}