This commit is contained in:
Josh Harvey 2016-05-04 18:34:12 +01:00
parent 95fa296190
commit cd1e9bdb66
4 changed files with 57 additions and 10 deletions

19
lib/error.js Normal file
View file

@ -0,0 +1,19 @@
const E = function generateError (name) {
var CustomErr = function (msg) {
this.message = msg
this.name = name
Error.captureStackTrace(this, CustomErr)
}
CustomErr.prototype = Object.create(Error.prototype)
CustomErr.prototype.constructor = CustomErr
return CustomErr
}
module.exports = E
function register (errorName) {
E[errorName] = E(errorName)
}
register('BadNumberError')

View file

@ -4,6 +4,7 @@ var _ = require('lodash')
var async = require('async')
var BigNumber = require('bignumber.js')
BigNumber.config({CRYPTO: true})
var logger = require('./logger')
var notifier = require('./notifier')
@ -715,3 +716,16 @@ exports.startCheckingNotification = function startCheckingNotification () {
checkNotification()
setInterval(checkNotification, CHECK_NOTIFICATION_INTERVAL)
}
exports.getPhoneCode = function getPhoneCode (phone) {
const code = BigNumber.random().toFixed(6).slice(2)
const rec = {
sms: {
toNumber: phone,
body: 'Your cryptomat code: ' + code
}
}
return smsPlugin.sendMessage(rec)
.then(() => code)
}

View file

@ -213,15 +213,15 @@ function pair (req, res) {
)
}
function raqia (req, res) {
var raqiaCreds
try {
var raqiaRec = require('../raqia.json')
raqiaCreds = raqiaRec[getFingerprint(req)].apiKeys[0]
} catch (ex) {
raqiaCreds = null
}
res.json(raqiaCreds || {})
function phoneCode (req, res) {
var phone = req.body.phone
return plugins.getPhoneCode(phone)
.then(code => res.json({code: code}))
.catch(err => {
if (err.name === 'BadNumberError') return res.send(410)
return res.send(500)
})
}
function init (localConfig) {
@ -246,7 +246,8 @@ function init (localConfig) {
app.post('/verify_user', authMiddleware, verifyUser)
app.post('/verify_transaction', authMiddleware, verifyTx)
app.post('/pair', pair)
app.get('/raqia', raqia)
app.post('/phone_code', authMiddleware, phoneCode)
localApp.get('/pid', function (req, res) {
var machineFingerprint = req.query.fingerprint

View file

@ -0,0 +1,13 @@
var db = require('./db')
exports.up = function (next) {
var sql = [
'alter table transactions add phone text',
'create index on transactions (phone)'
]
db.multi(sql, next)
}
exports.down = function (next) {
next()
}