mirror of
https://github.com/jambonz/jambonz-api-server.git
synced 2025-12-19 05:47:46 +00:00
109 lines
2.4 KiB
JavaScript
109 lines
2.4 KiB
JavaScript
const Model = require('./model');
|
|
const {getMysqlConnection} = require('../db');
|
|
|
|
class ApiKey extends Model {
|
|
constructor() {
|
|
super();
|
|
}
|
|
|
|
/**
|
|
* list all api keys for an account
|
|
*/
|
|
static retrieveAll(account_sid) {
|
|
const sql = account_sid ?
|
|
'SELECT * from api_keys WHERE account_sid = ?' :
|
|
'SELECT * from api_keys WHERE account_sid IS NULL';
|
|
const args = account_sid ? [account_sid] : [];
|
|
|
|
return new Promise((resolve, reject) => {
|
|
getMysqlConnection((err, conn) => {
|
|
if (err) return reject(err);
|
|
conn.query(sql, args, (err, results) => {
|
|
conn.release();
|
|
if (err) return reject(err);
|
|
resolve(results);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* list all api keys for a service provider
|
|
*/
|
|
static retrieveAllForSP(service_provider_sid) {
|
|
const sql = 'SELECT * from api_keys WHERE service_provider_sid = ?';
|
|
const args = [service_provider_sid];
|
|
|
|
return new Promise((resolve, reject) => {
|
|
getMysqlConnection((err, conn) => {
|
|
if (err) return reject(err);
|
|
conn.query(sql, args, (err, results) => {
|
|
conn.release();
|
|
if (err) return reject(err);
|
|
resolve(results);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
/**
|
|
* update last_used api key for an account
|
|
* (only if last_used is null or more than a minute ago)
|
|
*/
|
|
static updateLastUsed(account_sid) {
|
|
const sql = `UPDATE api_keys
|
|
SET last_used = NOW()
|
|
WHERE account_sid = ?
|
|
AND (last_used IS NULL OR last_used < NOW() - INTERVAL 1 MINUTE)`;
|
|
const args = [account_sid];
|
|
|
|
return new Promise((resolve, reject) => {
|
|
getMysqlConnection((err, conn) => {
|
|
if (err) return reject(err);
|
|
conn.query(sql, args, (err, results) => {
|
|
conn.release();
|
|
if (err) return reject(err);
|
|
resolve(results);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
}
|
|
|
|
|
|
ApiKey.table = 'api_keys';
|
|
ApiKey.fields = [
|
|
{
|
|
name: 'api_key_sid',
|
|
type: 'string',
|
|
primaryKey: true
|
|
},
|
|
{
|
|
name: 'token',
|
|
type: 'string',
|
|
required: true
|
|
},
|
|
{
|
|
name: 'account_sid',
|
|
type: 'string'
|
|
},
|
|
{
|
|
name: 'service_provider_sid',
|
|
type: 'string'
|
|
},
|
|
{
|
|
name: 'expires_at',
|
|
type: 'date'
|
|
},
|
|
{
|
|
name: 'created_at',
|
|
type: 'date'
|
|
},
|
|
{
|
|
name: 'last_used',
|
|
type: 'date'
|
|
}
|
|
];
|
|
|
|
module.exports = ApiKey;
|