UNPKG

will-lib

Version:
80 lines (79 loc) 3.81 kB
"use strict"; 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;