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
     }
 }