will-lib
Version:
Library classes
80 lines (79 loc) • 3.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ActiveLibrary = void 0;
const uuid_1 = require("uuid");
const will_sql_1 = require("will-sql");
const EnvironmentVariable_1 = require("./EnvironmentVariable");
const ActiveAuthen_1 = require("./auth/ActiveAuthen");
const HTTP_1 = require("./HTTP");
const AuthenError_1 = require("./AuthenError");
const ActiveConfig_1 = require("./ActiveConfig");
class ActiveLibrary {
static getDefaultConfigure() {
return new ActiveConfig_1.ActiveConfig(EnvironmentVariable_1.AD_URL, EnvironmentVariable_1.AD_DN, EnvironmentVariable_1.AD_DOMAIN);
}
static createConfigure(row) {
return new ActiveConfig_1.ActiveConfig(row.tenanturl, row.basedn, row.domainname);
}
static async getActiveConfig(conn, domain) {
let config = undefined;
if (conn && (domain && domain.trim().length > 0)) {
let sql = new will_sql_1.KnSQL("select * from tdirectory where domainname = ?domainname and inactive = '0' and systemtype = 'W' ");
sql.set("domainname", domain);
let rs = await sql.executeQuery(conn);
if (rs.rows && rs.rows.length > 0) {
let row = rs.rows[0];
config = ActiveLibrary.createConfigure(row);
}
}
return Promise.resolve(config);
}
async authenticate(username, password, config, conn) {
let ad = new ActiveAuthen_1.ActiveAuthen();
if (!config)
config = await ActiveLibrary.getActiveConfig(conn, ActiveAuthen_1.ActiveAuthen.getAccountDomain(username).domainName);
if (!config)
return Promise.reject(new AuthenError_1.AuthenError("Configuration not found", HTTP_1.HTTP.NOT_FOUND));
if (!config.hasConfigure()) {
return Promise.reject(new AuthenError_1.AuthenError("Configuration not defined", HTTP_1.HTTP.NOT_FOUND));
}
return await ad.authenticate(username, password, config);
}
async updateUserInfo(conn, user) {
let result = 0;
let now = new Date();
let sql = new will_sql_1.KnSQL("update tuserinfo set editdate = ?editdate , edittime = ?edittime where userid = ?userid ");
sql.set("editdate", now);
sql.set("edittime", now);
sql.set("userid", user.accountName);
let rs = await sql.executeUpdate(conn);
result = rs.rows.affectedRows;
return Promise.resolve(result);
}
async createUserInfo(conn, user, site) {
let result = 0;
let sql = new will_sql_1.KnSQL("insert into tuserinfo (site, employeeid, userid, cardid, usertname, ");
sql.append("usertsurname, userename, useresurname, displayname, activeflag, email) ");
sql.append("values(?site,?employeeid,?userid,?cardid,?usertname,?usertsurname,?userename,?useresurname,?displayname,'1',?email) ");
sql.set("site", site);
sql.set("employeeid", user.accountName);
sql.set("userid", user.accountName);
sql.set("cardid", (0, uuid_1.v4)());
sql.set("usertname", user.firstName);
sql.set("usertsurname", user.lastName);
sql.set("userename", user.firstName);
sql.set("useresurname", user.lastName);
sql.set("displayname", user.displayName);
sql.set("email", user.principalName);
let rs = await sql.executeUpdate(conn);
result = rs.rows.affectedRows;
return Promise.resolve(result);
}
async saveUserInfo(conn, user, site = "FWS") {
let record = await this.updateUserInfo(conn, user);
if (record <= 0) {
await this.createUserInfo(conn, user, site);
}
}
}
exports.ActiveLibrary = ActiveLibrary;