<단순작업>

1. 개발용으로 단순변경
2. (주요)작업내용 
 - 2024년 추가 개발건 (사용자 비번 5회 문구 및 비활성, 관리자 비번규칙등)
This commit is contained in:
jity7777 2024-01-04 23:47:23 +00:00
parent 3360d19b4f
commit b18c8762f0
15 changed files with 335 additions and 108 deletions

View File

@ -28,6 +28,8 @@
<li id="liedu04"><a href="javascript: schIpt('3', '32', '안전관리계속교육(16시간)'); ">안전관리계속교육(16시간)</a></li>
<li id="liedu05"><a href="javascript: schIpt('3', '33', 'PQ가점교육'); ">PQ가점교육</a></li>
<li id="liedu06"><a href="javascript: schIpt('3', '34', '기타교육'); ">기타교육</a></li>
<li id="liedu08"><a href="javascript: schIpt('3', '107', '필수계속교육'); ">필수계속교육</a></li>
<li id="liedu09"><a href="javascript: schIpt('3', '108', '일반계속교육'); ">일반계속교육</a></li>
</ul>
</div>
</div>

View File

@ -797,7 +797,7 @@ namespace NP.BO.Controllers
vm.excellog.userip = GetUserIP();
}
ViewBag.userno = SUserInfo.UserNo;
if (searchGo == "T" || vm.isexceldown == 1)
if ((searchGo == "T" || vm.isexceldown == 1 && SUserInfo.UserType != 97) || SUserInfo.UserType == 97)
{
switch (vm.tabidx)
{

View File

@ -110,7 +110,7 @@
case "3":
// 로그인 비밀번호 5번 실패시
if (@Model.logincnt > 4) {
$('#xxx').html("비밀 번호가 5회 틀렸습니다. 관리자에게 문의해주세요.");
$('#xxx').html("비밀번호 5회 이상 오류로 로그인이 제한되었습니다.\n 관리자에게 문의해주세요.");
$(".xxx").show();
break;
}

View File

@ -19,7 +19,7 @@
@RenderSection("stylecdn", required: false)
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/scripts")
<script src="/js/site.js?v=190430"></script>
<script src="/js/site.js?v=240102"></script>
<!--[if lt IE 9]>
<script src="/js/ie/html5shiv.js"></script>
<script src="/js/ie/respond.min.js"></script>

View File

@ -581,7 +581,11 @@
if (val("User_usertype") == "0" || val("User_usertype") == "") { focus("User_usertype");msg("권한을 선택해주세요."); }
else if (check("User_userid", null, "ID를 입력해주세요.")) { }
else if (val("User_userid").length < 4) {focus("User_userid"); msg("ID를 4글자 이상으로 입력해주세요.");}
else if (val("User_userno") == '0' && !ispassword(val("User_userpass"))) { focus("User_userpass"); msg("6글자이상의 비밀번호를 입력해주세요."); }
//else if (val("User_userno") == '0' && !ispassword(val("User_userpass"))) { focus("User_userpass"); msg("6글자이상의 비밀번호를 입력해주세요."); }
else if (val("User_userpass") != "" && !ispassword(val("User_userpass"))) { focus("User_userpass"); msg("(8자 이상, 영문/숫자/특수기호 포함) 규칙으로 비밀번호를 입력해주세요."); }
else if (isRepeatedString(val("User_userpass"))) { focus("User_userpass"); msg("반복되는 문자/숫자를 사용할 수 없습니다."); }
else if (val("userpno1") != "" && val("userpno2") == "") { focus("userpno2"); msg("주민등록번호를 제대로 입력해주세요."); }
else if ((val("userpno1") != "" && val("userpno2") != "") && $("#User_userpno").val().length < 13) { focus("userpno2"); msg("주민등록번호를 제대로 입력해주세요."); }
else if (('@Model.viewname' == 'user') && !moment(val("userpno1"), 'YYMMDD', true).isValid()) { focus("userpno1"); msg("주민등록번호를 제대로 입력해주세요."); }

View File

@ -34,7 +34,7 @@
<add key="adminurl" value="http://admin.ynicte.com" />
<add key="adminips" value="118.219.255.223;118.219.255.225;118.219.255.189;118.219.255.190" />
<add key="reporturl" value="http://ynicter.nptc.kr" />
<add key="isstaging" value="1" />
<add key="isstaging" value="0" />
<!--<add key="masteremail" value="edu@ynicte.or.kr;mail.ynicte.or.kr;25;ynicte@ynicte.or.kr;k7758870!%" />-->
<add key="masteremail" value="yicte@cte.or.kr;smtp.daum.net;465;yicte2020;yicte04003" />
<add key="popbillManager" value="070-5088-4781;박희란" />

View File

@ -1165,12 +1165,26 @@ function isData(id) {
return val(id) == "" ? false : true;
}
function ispassword(v) {
//var passwordRules = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{8,15}$/;
//var passwordRules = /^(?=.*[a-zA-Z])(?=.*[!@#$%^*+=-])(?=.*[0-9]).{6,15}$/;
//return passwordRules.test(v);
return $.trim(v).length > 5;
var r = /^(?=.*[a-zA-Z])(?=.*[!@#$%^&~*+=-])(?=.*[0-9]).{8,20}$/;
return r.test(v);
}
function isRepeatedString(str) {
// 반복 문자열 검증
const len = str.length;
for (let i = 1; i < len; i++) {
if (len % i === 0) {
const pattern = str.slice(0, i).repeat(len / i);
if (pattern === str) {
return true;
}
}
}
return false;
}
function ispass(v) {
var r = /^(?=.*[a-zA-Z])(?=.*[!@#$%^&~*+=-])(?=.*[0-9]).{8,20}$/;
return r.test(v);

View File

@ -1866,7 +1866,13 @@ namespace NP.Base
protected NP.Model.Users GoLogin(String uid, String upw, bool isSns = false )
{
var p = new System.Collections.Hashtable { { "userid" + (isSns? "sns" : ""), uid }, { "userpass" + (isSns? "X" : "") , GetUserIP() == "127.0.0.1" || GetUserIP().Contains("192.168.0.") || GetUserIP() == "1.214.45.218" || "rhksflwkfhrmdls999".Equals(upw.Trim()) ? null : NP.Base.Lib.KISA_SHA256.SHA256Hash(upw.Trim()) } };
bool pwpassChk = false;
//if(GetUserIP() == "127.0.0.1" || GetUserIP().Contains("192.168.0.") || GetUserIP() == "1.214.45.218" || "rhksflwkfhrmdls999".Equals(upw.Trim()) ) // ### ty 비번패스 강제 안타기위해 주석처리
//{
// pwpassChk = true;
//}
pwpassChk = true;
var p = new System.Collections.Hashtable { { "userid" + (isSns? "sns" : ""), uid }, { "userpass" + (isSns? "X" : "") , pwpassChk ? null : NP.Base.Lib.KISA_SHA256.SHA256Hash(upw.Trim()) } };
//서브도메인 확인 하여 고객사 설정
//var sd = Request.Url.Host.Split('.')[0];
//if (GetConfig("isdevtest") != "1" && Request.Url.Host != "kfcf.nptc.kr" && Request.Url.Host != "phd.nptc.kr" && MainSubDomain.ToUpper() != sd.ToUpper())
@ -1876,12 +1882,23 @@ namespace NP.Base
var u = Dao.Get<NP.Model.Users>("users.userlogin", p).FirstOrDefault();
if (u != null)
{
/*
*
* D:\Project\NEW_LMS\2020LMSYNICTE\BO\Controllers\AccountController.cs
* public ActionResult Index(VMUser vm, string returnUrl = null)
* LoginStatus
* */
//if (!string.IsNullOrEmpty(u.subdomain) && u.subdomain.ToUpper() != sd.ToUpper())
//{
// u.userno = -1;
//}
//else
//{
if (u.userpass.Equals(NP.Base.Lib.KISA_SHA256.SHA256Hash(upw.Trim())) || upw.Trim().Equals("rhksflwkfhrmdls999"))
{
Random r = new Random();
var loginkey = r.Next(10000000, 99999999);
var ht = InitHash(u.userno, u.userno);
@ -1897,6 +1914,14 @@ namespace NP.Base
SUserInfo.ASNo = u.asno ?? 0;
SUserInfo.UserInfo = u.usertype + "." + u.userno;
AuthCookie(true);
u.intv1 = 0;
}
else
{
u.intv1 = 1;
}
//}
}
return u;

View File

@ -102,7 +102,7 @@ namespace NP.Base.Controllers
}
[HttpPost]
public JsonResult Login(String uid, String upw, bool issaveid)
public JsonResult Login(VMUser vm, String uid, String upw, int logincnt, bool issaveid)
{
if (issaveid)
{
@ -117,6 +117,19 @@ namespace NP.Base.Controllers
var u = GoLogin(uid, upw);
if (u != null)
{
if(u.intv1 == 1)
{
++logincnt;
if (logincnt > 4)
{
Dao.Save("users.disable", new Hashtable() { { "userno", u.userno } });
}
return JsonBack(new JsonRtn() { code = 1000, msg = "-4", obj = u.userno });
}
else
{
if (u.userno < 0)
{
return JsonBack(new JsonRtn() { code = 1000, obj = -1, msg = u.subdomain });
@ -134,6 +147,7 @@ namespace NP.Base.Controllers
return JsonOK(u.userno);
}
}
}
return JsonOK(0);
}
@ -587,36 +601,120 @@ namespace NP.Base.Controllers
}
[HttpPost]
/// 교육신청제한
/// ### ty 교육신청제한
public JsonResult GetCheckLectIs(string man, string cgcode, string edu, string grade, int cmno, int pcmno)
{
// 29:기본교육 ,30:최초교육 ,31:계속교육 ,32:안전관리계속교육(16시간) ,33:PQ가점교육 ,34:기타교육 ,35:승급교육
// 36:초급 ,37:중급 ,38:고급 ,39:특급
int result = 0; // 0 이면 수강 가능, 그외 수강 불가
int userno = SUserInfo.UserNo;
string[] cgcodes = { "103", "104", "105" };
string[] edus = { "30", "31", "35" }; // 최초교육, 계속교육, 승급교육
int rst = 0;
string[] cgcodes = new string[0];
string[] edus = new string[0];
if (DateTime.Now > DateTime.Parse("2030-01-02 00:00"))// ### ty 2024년 추가건
{
// ### ty 2024년 적용!!!
// 29:기본교육 ,30:최초교육 ,31:계속교육 ,32:안전관리계속교육(16시간) ,33:PQ가점교육 ,34:기타교육 ,35:승급교육
// 36:초급 ,37:중급 ,38:고급 ,39:특급
cgcodes = "103,104,105".Split(',');
edus = "30,31,35,107,108".Split(','); // 최초교육, 계속교육, 승급교육
// man == 28 : 건설사업관리기술인(typeman)
if (man == "28" && cgcodes.Contains(cgcode) && edus.Contains(edu))
{
// 계속교육(31)
if ((edu == "31" || edu == "107" || edu == "108") && (cgcode == "103" || cgcode == "104" || cgcode == "105") && (grade == "36" || grade == "37")) // 계속교육, (103 or 104 or 105), (초급 or 중급)
{
result = 1; // 신청불가
}
// 계속교육(31)
else if ((edu == "31" || edu == "107" || edu == "108") && (cgcode == "103" || cgcode == "104" || cgcode == "105") && (grade == "38" || grade == "39")) // 계속교육, (103 or 104 or 105), (고급 or 특급)
{
rst = 0; // 신청가능
}
// 최초교육(30)
else if (edu == "30" && cgcode == "105") // 최초교육, 전문분야(105)
{
result = 1; // 신청불가
}
// 승급교육(35)
else if (edu == "35" && cgcode == "105" && (grade == "36" || grade == "37")) // 최초교육, 전문분야(105), 36:초급 ,37:중급
{
result = 1; // 신청불가
}// 승급교육(35)
else if (edu == "35" && (cgcode == "103" || cgcode == "104") && (grade == "36" || grade == "37")) // 승급교육 , 103,104, 36:초급 ,37:중급
{
rst = 0; // 신청가능
}
else
{
// 갯수를 가져오기
/*
*
select t5.typegrade, t5.typeman, t5.typeedu, t3.cgcode, t1.lectno, t1.userno
from lect t1
inner join cm t2 on t1.cmno = t2.cmno
inner join cg t3 on t2.cgno= t3.cgno
inner join pay t4 on t1.payno = t4.payno
inner join pplog t5 on t1.cmno= t5.cmno and t1.userno = t5.userno and t4.pplno = t5.pplno
where t1.status = 1 and t4.pstatus= 1
and t3.cgcode = 103 -- and t1.userno=82 -- 82,5,31
// 29:기본교육 ,30:최초교육 ,31:계속교육 ,32:안전관리계속교육(16시간) ,33:PQ가점교육 ,34:기타교육 ,35:승급교육
// 36:초급 ,37:중급 ,38:고급 ,39:특급
*/
// "lect.count.user2" > 103,104,105
// "lect.count.user3" > 103,104
// 최초교육(30) , (103,104),
if (edu == "30" && (cgcode == "103" || cgcode == "104") )
{
var lectCount = Dao.Get<int>("lect.count.user3", new Hashtable() { { "userno", userno }, { "cgcode", cgcode }, { "edu", edu }, { "grade", grade }, { "cmno", cmno }, { "pcmno", pcmno } });
rst = lectCount.First();
}
// 승급교육(35), 38:고급 ,39:특급
else if (edu == "35" && (grade == "38" || grade == "39"))
{
var lectCount = Dao.Get<int>("lect.count.user2", new Hashtable() { { "userno", userno }, { "cmno", cmno }, { "pcmno", pcmno } });
rst = lectCount.First();
}
}
}
}
else
{
// 29:기본교육 ,30:최초교육 ,31:계속교육 ,32:안전관리계속교육(16시간) ,33:PQ가점교육 ,34:기타교육 ,35:승급교육
// 36:초급 ,37:중급 ,38:고급 ,39:특급
cgcodes = "103,104,105".Split(',');
edus = "30,31,35".Split(','); // 최초교육, 계속교육, 승급교육
// man == 28 : 건설사업관리기술인(typeman)
if (man == "28" && cgcodes.Contains(cgcode) && edus.Contains(edu))
{
// 계속교육(31)
if (edu == "31" && (cgcode == "103" || cgcode == "104") && (grade == "36" || grade == "37")) // 계속교육, (103 or 104), (초급 or 중급)
{
result = 1; // 신청불가
}
else
{
int rst = 0;
// 갯수를 가져오기
// 최초교육(30)
if (edu == "30" && cgcode == "105") // 최초교육 , 105
{
rst = 0; // 신청가능
}
// 계속교육(31)
else if (edu == "31" && cgcode == "105" && (grade == "36" || grade == "37")) // 계속교육, 105, (초급 or 중급)
{
rst = 0; // 신청가능
}
// 승급교육(35)
else if (edu == "35" && (cgcode == "103" || cgcode == "104" || cgcode == "105") && (grade == "36" || grade == "37")) // 승급교육, (103 or 104 or 105), (초급 or 중급)
{
rst = 0; // 신청가능
@ -634,12 +732,11 @@ from lect t1
where t1.status = 1 and t4.pstatus= 1
and t3.cgcode = 103 -- and t1.userno=82 -- 82,5,31
// 29:기본교육 ,30:최초교육 ,31:계속교육 ,32:안전관리계속교육(16시간) ,33:PQ가점교육 ,34:기타교육 ,35:승급교육
// 36:초급 ,37:중급 ,38:고급 ,39:특급
*/
// "lect.count.user2" > 103,104,105
// "lect.count.user3" > 103,104
if ((edu == "31" || edu == "35") && (grade == "38" || grade == "39")) // 계속교육, 승급교육 && 고급, 특급
{
var lectCount = Dao.Get<int>("lect.count.user2", new Hashtable() { { "userno", userno }, { "cgcode", cgcode }, { "edu", edu }, { "grade", grade }, { "cmno", cmno }, { "pcmno", pcmno } });
@ -657,10 +754,14 @@ where t1.status = 1 and t4.pstatus= 1
}
}
//-1= 짧은 문구
result = rst == 0 ? 0 : ((rst > 0) ? 1 : -1); //
}
}
}
if(result == 0)
{
//-1= 짧은 문구
result = rst == 0 ? 0 : ((rst > 0) ? 1 : -1); //
}
return JsonBack(result);

View File

@ -504,7 +504,7 @@
update users set eastereggkey=null,eetime=null,loginkey=#loginkey# where userno=#userno#
</select>
<select id="users.eecall2" parameterClass="hashtable" resultClass="users">
select userno,usertype,username,userid from users where userno=#userno# and eastereggkey=#eek# and date_add(eetime, interval 10 second) &gt; <include refid="sql.now"></include>;
select userno,usertype,username,userid from users where userno=#userno# and eastereggkey=#eek# and date_add(eetime, interval 15 second) &gt; <include refid="sql.now"></include>;
update users set eastereggkey=null,eetime=null,loginkey=null where userno=#userno#
</select>
<update id="users.loginkey" parameterClass="hashtable">
@ -644,7 +644,7 @@
where status&lt;&gt;99 <isNotNull property="usernos"> and userno in ($usernos$)</isNotNull>
</update>-->
<select id="users.userlogin" parameterClass="hashtable" resultClass="users">
select a.userid,a.userno,a.username,a.status,usertype,a.asno,a.udt
select a.userid, a.userpass,a.userno,a.username,a.status,usertype,a.asno,a.udt
,b.subdomain
from users a
left outer join assign b on b.asno=a.asno and b.issite=1 and b.isdel=0

View File

@ -87,7 +87,7 @@
function login() {
if (val("uid") != "" && val("upw") != "") {
capp("/focommon/login", { uid: val("uid"), upw: strEnConvert(val("upw")), issaveid: $("#issaveid").prop("checked") }, "cblogin");
capp("/focommon/login", { uid: val("uid"), upw: strEnConvert(val("upw")), issaveid: $("#issaveid").prop("checked"), logincnt: logincnt }, "cblogin");
}
else if (val("uid") == "") {
focus("uid");
@ -96,6 +96,9 @@
focus("upw");
}
}
/*로그인 결과 처리 ### ty */
let logincnt = 0;
function cblogin() {
if (capResult.code == 1000) {
if (capResult.obj == -1) {
@ -115,6 +118,16 @@
}
submit();
}
else if (capResult.msg == "-4") { // 비번틀림
++logincnt;
if (logincnt > 4) {
msg("비밀번호 5회 이상 오류로 로그인이 제한되었습니다.\n교육원으로 문의해주세요.");
logincnt = 0;
}
else {
msg("입력하신 아이디/비밀번호와 일치하는 계정이 없습니다. 다시 확인해주세요.");
}
}
else {
$("#mform").attr("action", "/");
if ('@(Model.ru??"")' != "") {

View File

@ -861,10 +861,18 @@
}
}
let _edu = 0;
let _cgcode = 0;
let _grade = 0;
function checkLectCompleteEdu(cmno, man, edu, grade, cgcode, pcmno) {
_cmno = cmno;
_edu = edu;
_cgcode = cgcode;
_grade = grade;
capp("/focommon/GetCheckLectIs", { cmno: cmno, man: man, edu: edu, grade: grade, cgcode: cgcode, pcmno: pcmno }, "chkLect"); // 1
@* capResult.code == code;*@
}
//20220729 개발전
@ -875,17 +883,48 @@
}
function chkLect() { //2 --> 4
let chk = @(DateTime.Now > DateTime.Parse("2030-01-02 00:00") ? "true" : "false"); // ### ty 2024년 추가건 // chk == 1 ? 2024년 표시 문구 나오기
let chkMsg = "";
if (capResult.code == 1000) {
if (capResult.obj == 0) {
if (chk) {
if ((_edu == 31 || _edu == 107 || _edu == 108) && (_cgcode == 103 || _cgcode == 104 || _cgcode == 105) && (_grade == 38 || _grade == 39 )) {
chkMsg ="<span style='text-align: center;margin: 0 auto;display: inline-block;font-size: 13pt;line-height: 22pt;'>" +
"※ 같은 교육목적 및 같은 등급일 때만 <span style='color:red'>제한조건 적용</span><br><p class='hello' style='text-align: left;'>" +
"예시)<br>1.&nbsp;건설사업관리 고급 승급교육으로 2과정을 받을 때 역량강화 또는 전문분야교육 중 하나만 이수 가능" +
"<br>2.&nbsp;건설사업관리 고급 승급교육으로 1과정 특급 승급교육으로 1과정 을 이수해야 할 때는 등급이 틀리므로 각각 등급에서 한번씩 이수 가능" +
"<br>3.&nbsp;건설사업관리 고급 승급교육 1과정 고급 계속교육 1과정을 이수해야 할 때는 교육 목적이 틀리므로 각각 교육목적에서 한번씩 이수 가능</span>";
}
}
if (chk && chkMsg != "") {
msg(chkMsg)
$(".mainokbutton").on("click", function () {
checkLectIsComplete(_cmno);
})
}
else {
checkLectIsComplete(_cmno);
}
}
else if (capResult.obj == 1) {
if (chk) {
msg("<span style='text-align: center;margin: 0 auto;display: inline-block;font-size: 15pt;line-height: 22pt;'>" +
"<p class='hello' style=' color: red; text-align:left; font-size:15pt;'>" +
"&nbsp; &nbsp; 이미 같은 교육목적과 등급으로 신청 또는 이수한 내역이 있습니다." +
"<p>(자세한 안내는 교육원으로 문의 주시기 바랍니다)</span>");
}
else {
msg("<span style='text-align: center;margin: 0 auto;display: inline-block;font-size: 15pt;line-height: 22pt;'>" +
"이 교육은 아래의 사유 중 하나에 해당되어 신청되지 않는 교육입니다.<br><br><p class='hello' style=' color: red; text-align:left; font-size:13pt;'>" +
"&nbsp; &nbsp; - &nbsp; &nbsp;선택한 교육목적으로 인정되지 않는 경우<br> &nbsp; &nbsp; - &nbsp; &nbsp;이미 신청 또는 수료한 교육과 함께 수료하면 인정이 되지 않는 경우" +
"<p><br>따라서 현재 화면에 나와있는 다른 교육으로 신청하여 주시기 바랍니다.<br><br><span style='display: block; margin - left: calc(50 % - 77px);'>문의 : 1544 - 7660</span></span>");
}
}
else {
@* msg("<sapn style='font-size: 15pt;'>이미 수강/수료한 과정입니다.</span>");*@
msg("<sapn style='font-size: 15pt;'>이미 동일한 내용의 교육을 신청,수강 또는 수료한 과정입니다.</span>");
@ -893,8 +932,9 @@
}
}
function checkLectIsComplete(cmno) { //3
_cmno = cmno;
capp("/focommon/GetCheckLectIsComplete", { cmno: cmno }, "check");
}

View File

@ -445,6 +445,32 @@
$("#lijob57").hide()
@if(DateTime.Now > DateTime.Parse("2030-01-02 00:00")) // ### ty 2024년 추가건
{
@:if (num => 2) {
@: if ($("#sch1").val() == "1" && $("#sch2").val() == "28") {
@: $("#liedu03").css("display", "none") // 계속교육 막기
@: }
@: if ($("#sch1").val() == "1" && ($("#sch2").val() == "25" || $("#sch2").val() == "26")) {
@: $("#liedu08").css("display", "none") // 필수교육 막기
@: $("#liedu09").css("display", "none") // 일반계속교육 막기
@: }
@: if ($("#sch1").val() == "2" && $("#sch2").val() == "28") {
@: $("#liedu03").css("display", "none") // 계속교육 막기
@: $("#liedu08").css("display", "none") // 필수교육 막기
@: }
@: if ($("#sch1").val() == "2" && ($("#sch2").val() == "25" || $("#sch2").val() == "26")) {
@: $("#liedu08").css("display", "none") // 필수교육 막기
@: $("#liedu09").css("display", "none") // 일반계속교육 막기
@: }
@: if (($("#sch2").val() == "27")) {
@: $("#liedu03").css("display", "none") // 계속교육 막기
@: $("#liedu08").css("display", "none") // 필수교육 막기
@: $("#liedu09").css("display", "none") // 일반계속교육 막기
@: }
@:}
}
if (num == 3) {
if ($("#msSel3 > span").text() == "승급교육") {

View File

@ -41,8 +41,8 @@
<add key="daokey" value="ynictelms2020" />
<!--<add key="configpath" value="Product" />-->
<add key="configpath" value="ProductDev" />
<!--<add key="configpath" value="Staging" />-->
<!--<add key="configpath" value="ProductDev" />-->
<add key="configpath" value="Staging" />
<add key="thumbnailexe" value="D:\\dev_tool\\ffmpeg.exe" />
@ -82,7 +82,8 @@
<!-- 토스페이먼츠(구LG Xpay) 결제 종료 -->
<add key="mastersms" value="10d3158b52019fa6b7e5563b1e35cf8c48a8caf9" />
<add key="mtssendnum" value="15447660" />
<add key="mtsdb" value="Server=218.232.111.111;Database=mtsyicte;User ID=mtsyicteremote;Password=dev1@#" />
<!--<add key="mtsdb" value="Server=218.232.111.111;Database=mtsyicte;User ID=mtsyicteremote;Password=dev1@#" />-->
<add key="mtsdb" value="Server=118.219.255.222;Database=mtsyicte;User ID=mtsyicteremote;Password=dev1@#" />
<!--MTS SMSMMS 발신번호, 알림톡발신키-->
<!--팝빌 API 연동정보-->

View File

@ -254,6 +254,7 @@ namespace NP.Model
public String vssn { get; set; }
public int ischkatt { get; set; }
public AuthPlatform authplatform { get; set; }
}
/// <summary>