126 lines
4.7 KiB
JavaScript
126 lines
4.7 KiB
JavaScript
/**
|
|
* Created by Strawmanbobi
|
|
* 2016-11-27
|
|
*/
|
|
|
|
require('../mini_poem/configuration/constants');
|
|
|
|
var AdminAuth = require('../authentication/admin_auth.js');
|
|
var RequestSender = require('../mini_poem/http/request.js');
|
|
|
|
var ErrorCode = require('../constants/error_code.js');
|
|
var logger = require('../mini_poem/logging/logger4js').helper;
|
|
|
|
var errorCode = new ErrorCode();
|
|
|
|
var adminAuth = new AdminAuth(REDIS_HOST, REDIS_PORT, null, REDIS_PASSWORD);
|
|
|
|
var SIGN_IN_SERVICE = "/irext/certificate/admin_login";
|
|
var CHANGE_PASSWORD_SERVICE = "/irext/certificate/change_pw";
|
|
|
|
exports.adminLoginWorkUnit = function (userName, password, callback) {
|
|
var queryParams = new Map();
|
|
|
|
var requestSender =
|
|
new RequestSender(EXTERNAL_SERVER_ADDRESS,
|
|
EXTERNAL_SERVER_PORT,
|
|
SIGN_IN_SERVICE,
|
|
queryParams);
|
|
|
|
var signinInfo = {
|
|
user_name : userName,
|
|
password : password
|
|
};
|
|
requestSender.sendPostRequest(signinInfo,
|
|
function(signInRequestErr, signInResponse) {
|
|
if (signInRequestErr == errorCode.SUCCESS.code && null != signInResponse) {
|
|
var resp = JSON.parse(signInResponse);
|
|
if (undefined != resp.entity) {
|
|
var admin = resp.entity;
|
|
var token,
|
|
key,
|
|
ttl = 24 * 60 * 60 * 14,
|
|
timeStamp,
|
|
name;
|
|
timeStamp = new Date().getTime();
|
|
token = admin.token;
|
|
key = "admin_" + admin.id;
|
|
adminAuth.setAuthInfo(key, token, ttl, function(setAdminAuthErr) {
|
|
if (errorCode.SUCCESS.code == setAdminAuthErr.code) {
|
|
key = "admin_name_" + admin.id;
|
|
name = admin.user_name;
|
|
adminAuth.setAuthInfo(key, name, ttl, function(setAdminNameErr) {
|
|
if (errorCode.SUCCESS.code == setAdminNameErr.code) {
|
|
admin.token = token;
|
|
}
|
|
callback(setAdminNameErr, admin);
|
|
});
|
|
}
|
|
});
|
|
} else {
|
|
callback(errorCode.FAILED, null);
|
|
}
|
|
} else {
|
|
logger.error("admin sign in failed");
|
|
callback(errorCode.FAILED, null);
|
|
}
|
|
});
|
|
};
|
|
|
|
exports.verifyTokenWorkUnit = function (id, token, callback) {
|
|
var key = "admin_" + id;
|
|
adminAuth.validateAuthInfo(key, token, function(validateAdminAuthErr, result) {
|
|
if (validateAdminAuthErr.code != errorCode.SUCCESS.code) {
|
|
logger.info("token validation failed");
|
|
}
|
|
callback(validateAdminAuthErr);
|
|
});
|
|
};
|
|
|
|
exports.verifyTokenWithPermissionWorkUnit = function (id, token, permissions, callback) {
|
|
var key = "admin_" + id;
|
|
adminAuth.validateAuthInfo(key, token, function(validateAdminAuthErr, result) {
|
|
if (validateAdminAuthErr.code == errorCode.SUCCESS.code) {
|
|
logger.info("token validation successfully");
|
|
if (undefined != result && null != result && "" != result) {
|
|
if (result.indexOf(permissions) != -1) {
|
|
callback(errorCode.SUCCESS);
|
|
} else {
|
|
logger.info("permission do not match");
|
|
callback(errorCode.AUTHENTICATION_FAILURE);
|
|
}
|
|
}
|
|
} else {
|
|
logger.info("token validation failed");
|
|
callback(validateAdminAuthErr);
|
|
}
|
|
});
|
|
};
|
|
|
|
exports.sendChangePwMailWorkUnit = function (userName, callbackURL, callback) {
|
|
var queryParams = new Map();
|
|
|
|
var requestSender =
|
|
new RequestSender(EXTERNAL_SERVER_ADDRESS,
|
|
EXTERNAL_SERVER_PORT,
|
|
CHANGE_PASSWORD_SERVICE,
|
|
queryParams);
|
|
|
|
var userInfo = {
|
|
user_name : userName,
|
|
callback_url :callbackURL
|
|
};
|
|
requestSender.sendPostRequest(userInfo,
|
|
function(changePwRequestErr, changePwResponse) {
|
|
if (changePwRequestErr == errorCode.SUCCESS.code && null != changePwResponse) {
|
|
var resp = JSON.parse(changePwResponse);
|
|
if (undefined != resp.status && errorCode.SUCCESS == resp.status) {
|
|
callback(errorCode.SUCCESS);
|
|
} else {
|
|
callback(errorCode.FAILED);
|
|
}
|
|
} else {
|
|
callback(errorCode.FAILED);
|
|
}
|
|
});
|
|
}; |