55 lines
1.9 KiB
JavaScript
55 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
exports = module.exports = {
|
|
getAuthorizedKeys: getAuthorizedKeys,
|
|
getAuthorizedKey: getAuthorizedKey,
|
|
addAuthorizedKey: addAuthorizedKey,
|
|
delAuthorizedKey: delAuthorizedKey
|
|
};
|
|
|
|
var assert = require('assert'),
|
|
HttpError = require('connect-lastmile').HttpError,
|
|
HttpSuccess = require('connect-lastmile').HttpSuccess,
|
|
ssh = require('../ssh.js'),
|
|
SshError = ssh.SshError;
|
|
|
|
function getAuthorizedKeys(req, res, next) {
|
|
ssh.getAuthorizedKeys(function (error, result) {
|
|
if (error) return next(new HttpError(500, error));
|
|
next(new HttpSuccess(200, { keys: result }));
|
|
});
|
|
}
|
|
|
|
function getAuthorizedKey(req, res, next) {
|
|
assert.strictEqual(typeof req.params.identifier, 'string');
|
|
|
|
ssh.getAuthorizedKey(req.params.identifier, function (error, result) {
|
|
if (error && error.reason === SshError.NOT_FOUND) return next(new HttpError(404, error.message));
|
|
if (error) return next(new HttpError(500, error));
|
|
next(new HttpSuccess(200, { identifier: result.identifier, key: result.key }));
|
|
});
|
|
}
|
|
|
|
function addAuthorizedKey(req, res, next) {
|
|
assert.strictEqual(typeof req.body, 'object');
|
|
|
|
if (typeof req.body.key !== 'string' || !req.body.key) return next(new HttpError(400, 'key must be a non empty'));
|
|
|
|
ssh.addAuthorizedKey(req.body.key, function (error) {
|
|
if (error && error.reason === SshError.INVALID_KEY) return next(new HttpError(400, error.message));
|
|
if (error) return next(new HttpError(500, error));
|
|
|
|
next(new HttpSuccess(201, {}));
|
|
});
|
|
}
|
|
|
|
function delAuthorizedKey(req, res, next) {
|
|
assert.strictEqual(typeof req.params.identifier, 'string');
|
|
|
|
ssh.delAuthorizedKey(req.params.identifier, function (error) {
|
|
if (error && error.reason === SshError.NOT_FOUND) return next(new HttpError(404, error.message));
|
|
if (error) return next(new HttpError(500, error));
|
|
next(new HttpSuccess(202, {}));
|
|
});
|
|
}
|