updated admin auth procedure - debug 1

This commit is contained in:
strawmanbobi
2016-12-07 19:25:22 +08:00
parent ad9abd7649
commit 4ec6f5e57a
5 changed files with 62 additions and 104 deletions

View File

@@ -40,8 +40,8 @@ exports.setupEnvironment = function () {
REDIS_HOST = "localhost"; REDIS_HOST = "localhost";
REDIS_PORT = "6379"; REDIS_PORT = "6379";
REDIS_PASSWORD = ""; REDIS_PASSWORD = "";
EXTERNAL_SERVER_ADDRESS = "irext.net"; EXTERNAL_SERVER_ADDRESS = "www.strawmanbobi.com";
EXTERNAL_SERVER_PORT = "80" EXTERNAL_SERVER_PORT = "8200"
} else if (enums.APP_USERDEBUG_MODE == env) { } else if (enums.APP_USERDEBUG_MODE == env) {
MYSQL_DB_SERVER_ADDRESS = "localhost"; MYSQL_DB_SERVER_ADDRESS = "localhost";
MYSQL_DB_NAME = "irext"; MYSQL_DB_NAME = "irext";
@@ -54,7 +54,7 @@ exports.setupEnvironment = function () {
REDIS_HOST = "localhost"; REDIS_HOST = "localhost";
REDIS_PORT = "6379"; REDIS_PORT = "6379";
REDIS_PASSWORD = ""; REDIS_PASSWORD = "";
EXTERNAL_SERVER_ADDRESS = "irext.net"; EXTERNAL_SERVER_ADDRESS = "www.strawmanbobi.com";
EXTERNAL_SERVER_PORT = "80" EXTERNAL_SERVER_PORT = "8200"
} }
}; };

View File

@@ -1,3 +1,4 @@
#!/usr/bin/env bash
SOURCE="." SOURCE="."
TARGET="$POEM_APPLICATION/irext_console" TARGET="$POEM_APPLICATION/irext_console"
MODULE_API="./web/api_doc/js/" MODULE_API="./web/api_doc/js/"

View File

@@ -44,9 +44,6 @@ npm install form-data
echo "npm install async" echo "npm install async"
npm install async npm install async
echo "npm install nodemailer"
npm install nodemailer@0.7
echo "npm install done" echo "npm install done"
echo "create logging directory" echo "create logging directory"

View File

@@ -9,7 +9,7 @@ var Admin = require('../model/admin_dao.js');
var AdminAuth = require('../authority/admin_auth.js'); var AdminAuth = require('../authority/admin_auth.js');
var MD5 = require('../mini_poem/crypto/md5.js'); var MD5 = require('../mini_poem/crypto/md5.js');
var StringUtils = require('../mini_poem/utils/string_utils.js'); var StringUtils = require('../mini_poem/utils/string_utils.js');
var nodemailer = require('nodemailer'); var RequestSender = require('../mini_poem/http/request.js');
var Enums = require('../constants/enums.js'); var Enums = require('../constants/enums.js');
var ErrorCode = require('../constants/error_code.js'); var ErrorCode = require('../constants/error_code.js');
@@ -20,35 +20,45 @@ var errorCode = new ErrorCode();
var adminAuth = new AdminAuth(REDIS_HOST, REDIS_PORT, REDIS_PASSWORD, null); var adminAuth = new AdminAuth(REDIS_HOST, REDIS_PORT, REDIS_PASSWORD, null);
exports.adminLoginWorkUnit = function (userName, password, callback) { var signInService = "/irext/certificate/admin_login";
var conditions = { var changePwService = "/irext/certificate/change_pw";
user_name: userName,
password: password
};
Admin.findAdminsByConditions(conditions, 0, 1, "id", function(findAdminErr, admins) {
if (findAdminErr.code == errorCode.SUCCESS.code &&
null != admins && admins.length > 0) {
// add information of this user into cache
var userID,
token,
key,
ttl = 24 * 60 * 60 * 14,
timeStamp,
admin;
admin = admins[0]; exports.adminLoginWorkUnit = function (userName, password, callback) {
timeStamp = new Date().getTime(); var queryParams = new Map();
token = MD5.MD5(password + timeStamp);
token += "," + admin.permissions; var requestSender =
key = "admin_" + admin.id; new RequestSender(EXTERNAL_SERVER_ADDRESS,
adminAuth.setAuthInfo(key, token, ttl, function(setAdminAuthErr) { EXTERNAL_SERVER_PORT,
admin.token = token; signInService,
callback(setAdminAuthErr, admin); queryParams);
});
} else { var signinInfo = {
callback(errorCode.AUTHENTICATION_FAILURE, null); user_name : userName,
} password : password
}); };
requestSender.sendPostRequest(signinInfo,
function(signInRequestErr, signInResponse) {
if (signInRequestErr == errorCode.SUCCESS.code && null != signInResponse) {
var admin = signInResponse;
var userID,
token,
key,
ttl = 24 * 60 * 60 * 14,
timeStamp,
admin;
timeStamp = new Date().getTime();
token = MD5.MD5(password + timeStamp);
token += "," + admin.permissions;
key = "admin_" + admin.id;
adminAuth.setAuthInfo(key, token, ttl, function(setAdminAuthErr) {
admin.token = token;
callback(setAdminAuthErr, admin);
});
} else {
logger.error("admin sign in failed");
callback(errorCode.FAILED, null);
}
});
}; };
exports.verifyTokenWorkUnit = function (id, token, callback) { exports.verifyTokenWorkUnit = function (id, token, callback) {
@@ -84,70 +94,25 @@ exports.verifyTokenWithPermissionWorkUnit = function (id, token, permissions, ca
}; };
exports.sendChangePwMailWorkUnit = function (userName, callback) { exports.sendChangePwMailWorkUnit = function (userName, callback) {
var conditions = { var queryParams = new Map();
user_name: userName
};
Admin.findAdminsByConditions(conditions, 0, 1, "id", function(getAdminErr, admins) {
if (errorCode.SUCCESS.code == getAdminErr.code && undefined != admins && null != admins && admins.length > 0) {
var admin = admins[0];
var userEmail = admin.user_name;
var sendEmailErr;
var newPw = StringUtils.randomNumber(6);
var timeStamp = new Date().getTime();
var passwdKey = MD5.MD5(userName.toString() + timeStamp);
var passwdMD5 = MD5.MD5(newPw, true).toUpperCase();
var ttl = 2 * 60 * 60;
// save password fetch key and password MD5 value to cache first var requestSender =
var smtpTransport = nodemailer.createTransport("SMTP", { new RequestSender(EXTERNAL_SERVER_ADDRESS,
host: "smtp.163.com", EXTERNAL_SERVER_PORT,
name: "", changePwService,
secureConnection: true, queryParams);
use_authentication: true,
port: 465, var userInfo = {
auth: { user_name : userName
user: "strawmanbobi@163.com", };
pass: "Fs11233209." requestSender.sendPostRequest(userInfo,
} function(changePwRequestErr, changePwResponse) {
}); if (changePwRequestErr == errorCode.SUCCESS.code && null != changePwResponse) {
adminAuth.setAuthInfo(passwdKey, passwdMD5, ttl, function(setPasswordAuthErr) { callback(errorCode.SUCCESS);
if (setPasswordAuthErr.code == errorCode.SUCCESS.code) { } else {
logger.info("save temp password successfully, continue process email post"); callback(errorCode.FAILED);
// send email to notify user }
smtpTransport.sendMail({ });
from : "strawmanbobi@163.com",
to : userEmail ,
subject: "分配新密码",
generateTextFromHTML : true,
html: "<html><body style='font-family: 微软雅黑; font-size: 14px;'>"+
"<p>Yo-- 这是 irext 数据中心为您随机分配的新密码,请牢记之后,点击它表示确认 &lt;( ̄︶ ̄)&gt;</p>" +
"<a target='_blank' href='http://"+MAIN_SERVER_ADDRESS+":"+MAIN_SERVER_PORT+
"/irext/certificate/confirm_pw?id="+ admin.id +
"&key="+passwdKey+"&password="+newPw+"'><b>" + newPw + "</b></a></body></html>"
}, function(error, response) {
if(error) {
sendEmailErr = errorCode.FAILED;
logger.info("send change password email failed :" + error);
logger.info(sendEmailErr+" userLogic.....");
callback(sendEmailErr);
} else {
sendEmailErr = errorCode.SUCCESS;
logger.info("change password email send successfully : " + response.message);
logger.info(sendEmailErr+" userLogic.....");
callback(sendEmailErr);
}
smtpTransport.close();
});
} else {
logger.info("failed to save temp password");
callback(setPasswordAuthErr);
}
});
} else {
logger.info("no admin info found");
callback(errorCode.FAILED);
}
});
}; };
exports.confirmPasswordWorkUnit = function(id, fetchKey, callback) { exports.confirmPasswordWorkUnit = function(id, fetchKey, callback) {

View File

@@ -35,11 +35,6 @@ var async = require('async');
// relative XML file path // relative XML file path
var PROTOCOL_PATH = "protocol"; var PROTOCOL_PATH = "protocol";
// out going HTTP request parameters
// var PRIMARY_SERVER_ADDRESS = "irext.net";
var PRIMARY_SERVER_ADDRESS = "127.0.0.1";
var PRIMARY_SERVER_PORT = "8200";
var REQUEST_APP_KEY = "d6119900556c4c1e629fd92d"; var REQUEST_APP_KEY = "d6119900556c4c1e629fd92d";
var REQUEST_APP_TOKEN = "fcac5496cba7a12b3bae34abf061f526"; var REQUEST_APP_TOKEN = "fcac5496cba7a12b3bae34abf061f526";