add account creation wizard
Change-Id: I27f1fd0c53eb83df0c7bd1de06ba791c3b25962b
diff --git a/routes/jami.js b/routes/jami.js
index 156e640..d76462e 100644
--- a/routes/jami.js
+++ b/routes/jami.js
@@ -10,7 +10,7 @@
//router.use(express.json());
// Accounts
- router.get(['/accounts'], async (req, res, next) => {
+ router.get('/accounts', async (req, res) => {
console.log("Get account list")
let accounts = this.jami.getAccountList()
if (req.user.accountFilter)
@@ -18,6 +18,24 @@
res.json(await Promise.all(accounts.map(async account => await account.getSummary())))
})
+ const checkCanCreateAccounts = (req, res, next) => {
+ console.log(`checkCanCreateAccounts ${req.params.accountId} for ${req.user.id}`)
+ if (req.user && !req.user.accountFilter) {
+ return next();
+ }
+ res.status(403).end()
+ }
+
+ router.post('/accounts', checkCanCreateAccounts, async (req, res) => {
+ console.log("Create new account")
+ console.log(req.body)
+ try {
+ res.json({ accountId: await this.jami.addAccount(req.body) })
+ } catch (e) {
+ res.status(400).json({ error: e })
+ }
+ })
+
const checkAccount = (req, res, next) => {
console.log(`checkAccount ${req.params.accountId} for ${req.user.id}`)
if (req.user && (!req.user.accountFilter || req.user.accountFilter(req.params.accountId))) {
@@ -134,37 +152,39 @@
// Nameserver
const nsRouter = Router({mergeParams: true})
- accountRouter.use('/ns', nsRouter)
+ accountRouter.use('/ns', nsRouter) // use account nameserver
+ router.use('/ns', nsRouter) // use default nameserver
nsRouter.get(['/name/:nameQuery'], (req, res, next) => {
console.log(`Name lookup ${req.params.nameQuery}`)
- this.jami.lookupName(req.params.accountId, req.params.nameQuery)
+ this.jami.lookupName(req.params.accountId || '', req.params.nameQuery)
.then(result => {
if (result.state == 0)
res.json(result)
else if (result.state == 1)
- res.sendStatus(400)
+ res.status(400).json({})
else
- res.sendStatus(404)
+ res.status(404).json({})
}).catch(e => {
- res.sendStatus(404)
+ res.status(404).json({})
})
})
nsRouter.get(['/addr/:addrQuery'], (req, res, next) => {
console.log(`Address lookup ${req.params.addrQuery}`)
- this.jami.lookupAddress(req.params.accountId, req.params.addrQuery)
+ this.jami.lookupAddress(req.params.accountId || '', req.params.addrQuery)
.then(result => {
if (result.state == 0)
res.json(result)
else if (result.state == 1)
- res.sendStatus(400)
+ res.status(400).json({})
else
- res.sendStatus(404)
+ res.status(404).json({})
}).catch(e => {
- res.sendStatus(404)
+ res.status(404).json({})
})
})
+
return router
}
}