lamassu-server/bin/lamassu-register
2021-11-24 22:11:25 +00:00

51 lines
1.4 KiB
JavaScript
Executable file

#!/usr/bin/env node
const { asyncLocalStorage, defaultStore } = require('../lib/async-storage')
const userManagement = require('../lib/new-admin/graphql/modules/userManagement')
const options = require('../lib/options')
const name = process.argv[2]
const role = process.argv[3]
const domain = options.hostname
if (!domain) {
console.error('No hostname configured in lamassu.json')
process.exit(1)
}
if (!name || !role) {
console.log('Usage: lamassu-register <username> <role>')
process.exit(2)
}
const emailRegex = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
if (!emailRegex.test(name)) {
console.log('Usage: <name> should be in an email format')
process.exit(2)
}
if (role !== 'user' && role !== 'superuser') {
console.log('Usage: <role> has two possible values: user | superuser')
process.exit(2)
}
asyncLocalStorage.run(defaultStore(), () => {
userManagement.createRegisterToken(name, role).then(token => {
if (!token) {
console.log(`A user named ${name} already exists!`)
process.exit(2)
}
if (domain === 'localhost') {
console.log(`https://${domain}:3001/register?t=${token.token}`)
} else {
console.log(`https://${domain}/register?t=${token.token}`)
}
process.exit(0)
}).catch(err => {
console.log('Error: %s', err)
process.exit(3)
})
})