shovel/lib/api/openstack/keystone.js

63 lines
1.7 KiB
JavaScript

// Copyright 2015, EMC, Inc.
/*eslint-env node*/
/* keystone authentication */
var config = require('./../../../config.json');
var client = require('./../client');
var Promise = require('bluebird');
var encryption = require('./../../services/encryption');
var logger = require('./../../services/logger').Logger;
Promise.promisifyAll(client);
var request = {
host: config.keystone.httpHost,
path: '/' + config.keystone.version + '/tokens',
port: config.keystone.httpPort,
token: '',
data: {},
api: {},
useragent: ''
};
var KeystoneAuthentication = {
authenticatePassword: function (tenantName, username, password) {
'use strict';
var decrypted;
try {
decrypted = encryption.decrypt(password);
} catch (err) {
logger.error(err);
//return empty promise
return Promise.resolve();
}
request.data = JSON.stringify(
{
'auth': {
'tenantName': tenantName,
'passwordCredentials': {
'username': username,
'password': decrypted
}
}
});
return client.PostAsync(request);
},
authenticateToken: function (tenantName, username, token) {
'use strict';
request.data = JSON.stringify(
{
'auth': {
'tenantName': tenantName,
'token': {
'id': token
}
}
});
return client.PostAsync(request);
}
};
module.exports = Object.create(KeystoneAuthentication);