YNICTE/BO/Controllers/AccountController.cs

638 lines
34 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using NP.Model;
using System.Security.Claims;
using System.Collections;
namespace NP.BO.Controllers
{
//[AllowAnonymous]
public class AccountController : NP.Base.BaseController
{
public ActionResult GetEnc(String d)
{
ViewBag.enc = NP.Base.Lib.KISA_SHA256.SHA256Hash(d);
return View();
}
//[AllowAnonymous]
public ActionResult Index(VMUser vm, bool istimeout = false)
{
int userno = SUserInfo != null ? SUserInfo.UserNo : 0;
if(userno >0)
{
Response.Redirect("~/");
}
else
{
ViewBag.IsTimeOut = istimeout;
if (Request.IsAjaxRequest())
{
return JsonError<String>(Base.ENUM.JSONCode.Error, "403:" + Request.Url.AbsolutePath, "0112");
}
else
{
vm.SavedId = CookieGet("SavedId", "");
}
// 로그인 실패 카운트 초기화
vm.logincnt = 0;
}
return View(vm);
}
public JsonResult PassGet(String pw)
{
return Json(NP.Base.Lib.KISA_SHA256.SHA256Hash(pw), JsonRequestBehavior.AllowGet);
}
[HttpPost]
public ActionResult Index(VMUser vm, string returnUrl = null)
{
ViewData["ReturnUrl"] = returnUrl;
if (!string.IsNullOrEmpty(vm.SavedId))
{
CookieSet("savedid", vm.User.userid);
}
else
{
CookieClear("savedid");
}
SUserInfo.LoginIP = GetUserIP();
var ht = InitHash();
Int64? AdminNo = null;
ht.Add("userno", AdminNo);
ht.Add("loginsite", 0);
ht.Add("loginstatus", 3);
Int16 LoginStatus = 3;
if (vm.User != null && !string.IsNullOrEmpty(vm.User.userid) && !string.IsNullOrEmpty(vm.User.userpass) && !vm.User.userid.Trim().Equals("") && !vm.User.userpass.Trim().Equals(""))
{
var p = new Hashtable { { "userid", vm.User.userid }, { "password", NP.Base.Lib.KISA_SHA256.SHA256Hash(vm.User.userpass) }, { "uip", SUserInfo.LoginIP } };
var u = Dao.Get<Users>("users.adminlogin", p).FirstOrDefault();
if (u != null)
{
LoginStatus = 1;
ht["userno"] = u.userno;
// 최근로그인시점 + 90일 일 경우, 비활성처리
if (DateTime.Now >= u.logintime.AddMonths(3))
{
Random r = new Random();
var loginkey = r.Next(10000000, 99999999);
Dao.Save("users.loginkey", new Hashtable() { { "userno", u.userno }, { "loginkey", loginkey } });
Dao.Save("users.disable", new Hashtable() { { "userno", u.userno } });
u.status = 9;
}
//vm.IntranetIPs = Dao.Get<IntranetIP>("users.intranetip", new Hashtable() { {"IsActive", 1 } });
//0: 정상(로그인성공), 1: 정상(외부아이피), 2: 비밀번호오류, 3: 아이디오류, 4: 외부아이피차단, 5: 퇴사자, 6: 사용안함, 7: 크래킹공격, 8:비활성상태
if (u.status != 1) {
if (u.status == 9) {
LoginStatus = 8;
} else
{
LoginStatus = 6;
}
}
//else if (u.RetireDate != null) { LoginStatus = 5; }
else if (!"192.168.1.3,127.0.0.1,192.168.0.87,192.168.0.56,59.150.105.198".Contains(SUserInfo.LoginIP) && !u.userpass.Equals(NP.Base.Lib.KISA_SHA256.SHA256Hash(vm.User.userpass.Trim()))) {
LoginStatus = 2;
// 로그인 실패 카운트 증가
vm.logincnt++;
// 로그인 비밀번호 5번 실패시, 비활성화 처리
if (vm.logincnt > 4) {
Dao.Save("users.disable", new Hashtable() { { "userno", u.userno } });
}
}
else
{
//var isIntranet = false;
var myips = SUserInfo.LoginIP.Split('.').Select(s => Convert.ToInt32(s));
//foreach(var ip in vm.IntranetIPs)
//{
// if (Convert.ToInt32(ip.SIP.Split('.')[0]) <= myips.First() && Convert.ToInt32(ip.EIP.Split('.')[0]) >= myips.First() &&
// Convert.ToInt32(ip.SIP.Split('.')[1]) <= myips.Skip(1).Take(1).First() && Convert.ToInt32(ip.EIP.Split('.')[1]) >= myips.Skip(1).Take(1).First() &&
// Convert.ToInt32(ip.SIP.Split('.')[2]) <= myips.Skip(2).Take(1).First() && Convert.ToInt32(ip.EIP.Split('.')[2]) >= myips.Skip(2).Take(1).First() &&
// Convert.ToInt32(ip.SIP.Split('.')[3]) <= myips.Skip(3).Take(1).First() && Convert.ToInt32(ip.EIP.Split('.')[3]) >= myips.Skip(3).Take(1).First())
// {
// isIntranet = true;
// break;
// }
//}
//if (isIntranet) { LoginStatus = 0; }
//else if (u.Security == 1 && !"127.0.0.1,59.150.105.198".Contains(SUserInfo.LoginIP)) { LoginStatus = 4; }
LoginStatus = 0;
}
ht["loginstatus"] = LoginStatus;
Dao.Insert("users.loginlog", ht);
if(LoginStatus < 2)
{
Random r = new Random();
var loginkey = r.Next(10000000, 99999999);
Dao.Save("users.loginkey", new Hashtable() { { "userno", u.userno }, { "loginkey", loginkey } });
SUserInfo.LoginKey = loginkey;
SUserInfo.UserNo = u.userno;
SUserInfo.UserName = u.username;
SUserInfo.UserType = u.usertype;
SUserInfo.ASNo = u.asno??0;
SUserInfo.UserInfo = u.usertype + "." + u.userno;
base.AuthCookie(false);
//if ("/".Equals(returnUrl ?? "/"))
//{
if (SUserInfo.UserType == 11)
{
return RedirectToLocal("/croom/grades");
}
else if (vm.IsSiteAdmin)
{
return RedirectToLocal("/user/users");
}
return RedirectToLocal("/");
//}
//else
//{
// return RedirectToLocal(returnUrl);
//}
}
}
else
{
Dao.Insert("users.loginlog", ht);
}
}
else
{
ht["LoginLog"] = vm.User.userid;
ht["LoginStatus"] = 7;
Dao.Insert("users.loginlog", ht);
}
vm.LoginFailedId = LoginStatus;
vm.IsLoginFailed = true;
return View(vm);
}
//[Authorize]
public ActionResult Logout()
{
//HttpContext.Session.Clear();
//System.Web.Security.FormsAuthentication.SignOut();
//return RedirectToAction(nameof(AccountController.Index), "Account");
//HttpContext.Session.Clear();
//System.Web.Security.FormsAuthentication.SignOut();
//Response.Cookies[SUI].Expires = DateTime.Now.AddDays(-1);
CookieClear(null, true);
return Redirect("/Account/Index");
}
private ActionResult RedirectToLocal(string returnUrl)
{
if (Url.IsLocalUrl(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction(nameof(HomeController.Index), "Home");
}
}
[AllowAnonymous]
public JsonResult NoPermit(int _code = 9999, String _msg = "권한이 없습니다.")
{
return Json(new JsonRtn() { code = _code, msg = _msg }, JsonRequestBehavior.AllowGet);
}
[AllowAnonymous]
public JsonResult NoAuth(int _code = 9999, String _msg = "인증이 없습니다.")
{
return Json(new JsonRtn() { code = _code, msg = _msg }, JsonRequestBehavior.AllowGet);
}
[AllowAnonymous]
public ActionResult Error(NP.Model.JsonRtn vm = null, int _code = 0)
{
vm = vm ?? new JsonRtn() { };
vm.msg = vm.msg ?? "503";
Exception exception = Server.GetLastError();
Response.Clear();
ViewBag.ErrorMsg = "";
HttpException httpException = (HttpException)exception;
if (httpException != null)
{
NP.Base.Logger.Error("ApplicationError" + vm.msg, exception);
}
Server.ClearError();
if (Request.IsAjaxRequest())
{
if (_code == 9991)
{
return JsonError<String>(Base.ENUM.JSONCode.TimeOut, vm.msg + ":" + Request.Url.AbsolutePath + (exception ?? new Exception()).Message, "/Account/Index");
}
return JsonError<Exception>(Base.ENUM.JSONCode.Error, vm.msg + ":" + Request.Url.AbsolutePath + (exception ?? new Exception()).Message, exception);
}
return View("Error");
}
[AllowAnonymous]
public ActionResult Error403(NP.Model.JsonRtn vm)
{
vm.msg = "403";
return Error(vm);
}
[AllowAnonymous]
public ActionResult Error404(NP.Model.JsonRtn vm)
{
vm.msg = "404" + (Request.IsLocal ? Request.Url.Query : "");
return Error(vm);
}
[AllowAnonymous]
public ActionResult Error500(NP.Model.JsonRtn vm)
{
vm.msg = "500";
return Error(vm);
}
public ActionResult Status335(String sss)
{
//if ("ynpartners123".Equals(sss))
//{
// var users = Dao.Get<Users>("users.get335", new Hashtable() { });
// var em = Dao.Get<MailTP>("mm.mailtp.get", 2).FirstOrDefault();
// if (em != null)
// {
// foreach (var u in users)
// {
// SendEmail(999, u.email, "", "영남건설기술교육원", "[영남건설기술교육원] 휴면계정알림", em.MHtml.Replace("^회원명^", u.username).Replace("../img/", GetConfig("fronturl") + "/img/").Replace("^아이디^", u.email).Replace("^fronturl^", GetConfig("fronturl")), "", "");
// }
// }
//}
return null;
}
public ActionResult AdminEE(int un, int eek, int at, int an)
{
if (SUserInfo.IsAdmin || SUserInfo.IsSiteAdmin)
{
Random r = new Random();
var loginkey = r.Next(10000000, 99999999);
var u = Dao.Get<Users>("users.eecall", new Hashtable() { { "userno", un }, { "eek", eek },{ "loginkey", loginkey} }).FirstOrDefault();
if (u != null && u.usertype == 11)
{
var cusertype = SUserInfo.UserType;
var cuserno = SUserInfo.UserNo;
CookieClear(null, true);
SUserInfo.UserNo = u.userno;
SUserInfo.UserName = u.username;
SUserInfo.UserType = u.usertype;
SUserInfo.ASNo = u.asno ?? 0;
SUserInfo.UserInfo = cusertype + "." + cuserno;
SUserInfo.LoginIP = GetUserIP();
SUserInfo.LoginKey = loginkey;
base.AuthCookie(false);
return RedirectToAction("Index", "Home");
}
}
return RedirectToAction("Index");
}
public ActionResult MenuReset(string ddd)
{
if ("rhksflwkfhrmdls999".Equals(ddd))
{
ResetMenuBase();
}
return RedirectToAction("Index");
}
/// <summary>
/// 윈도우스케쥴러가 1시간에 한 번씩 호출
/// </summary>
/// <param name="sss"></param>
/// <returns></returns>
public ActionResult Encourage(String sss, int test = 0)
{
if (test == 1)
{
SetError("encouragetest: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
else
{
var m = new Memo() { Users = new List<MemoUser>() { } };
if ("nptech1234".Equals(sss))
{
//시간불규칙 대비해야 함
var lects = Dao.Get<SCDLect>("lect.encourages", new Hashtable() { { "dtime", DateTime.Now.Minute > 30 ? (DateTime.Now.Hour + 1) : DateTime.Now.Hour }, { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } });
//1~7. 온라인/혼합 출석 80% 미만, 진행평가, 최종평가, 과제, 토론, 강의평가 미참여
{
foreach (var u in lects.Where(w => w.scdno < 8 && w.istalk == 1))
{
m.Users.Add(new MemoUser()
{
userno = u.userno,
uno = SUserInfo.UserNo,
uip = GetUserIP(),
smstype = "A",
isok = string.IsNullOrEmpty(u.mobile) ? -1 : 1,
title = "[영남건설기술교육원] 교육종료일 안내",
mobile = (u.mobile ?? "").Replace("-", ""),
mcontents = string.Format("영남건설기술교육원입니다.\n\n[{0}]님이 수강중인 [{1}] 강좌의 교육 종료일이 {2}일 남았습니다. 종료되기전에 서둘러 " +
(u.scdno < 3 ? "학습을 진행" : u.scdno == 3 ? "진행평가에" : u.scdno == 4 ? "최종평가에" : u.scdno == 5 ? "과제를 제출" : u.scdno == 6 ? "토론에 참여" : u.scdno == 7 ? "강의평가에 참여" : "-") + "해주세요.\n\n☞사이트 : https://www.cte.or.kr/",
u.username, u.cname, u.dday)
});
}
if (m.Users.Where(w => w.isok == 1).Count() > 0)
{
SaveTalk(m.Users.Where(w => w.isok == 1).ToList(), "encourage001");
m.Users.Clear();
}
foreach (var u in lects.Where(w => w.scdno < 8 && w.issms == 1))
{
m.Users.Add(new MemoUser()
{
userno = u.userno,
smstype = "S",
isok = string.IsNullOrEmpty(u.mobile) ? -1 : 1,
title = "[영남건설기술교육원] 교육종료일 안내",
mobile = (u.mobile ?? "").Replace("-", ""),
mcontents = string.Format("영남건설기술교육원입니다.\n\n[{0}]님이 수강중인 [{1}] 강좌의 교육 종료일이 {2}일 남았습니다. 종료되기전에 서둘러 " +
(u.scdno < 3 ? "학습을 진행" : u.scdno == 3 ? "진행평가에" : u.scdno == 4 ? "최종평가에" : u.scdno == 5 ? "과제를 제출" : u.scdno == 6 ? "토론에 참여" : u.scdno == 7 ? "강의평가에 참여" : "-") + "해주세요.\n\n☞사이트 : https://www.cte.or.kr/",
u.username, u.cname, u.dday)
});
}
if (m.Users.Where(w => w.isok == 1).Count() > 0)
{
SaveSmsMulti(m.Users.Where(w => w.isok == 1).ToList());
m.Users.Clear();
}
var masteremail = GetConfig("masteremail");
var senderemail = masteremail.Split(';')[0];
foreach (var u in lects.Where(w => w.scdno < 8 && w.isemail == 1))
{
if (IsEmail(u.email))
{
SendEmail(masteremail.Split(';')[1], GetInt(masteremail.Split(';')[2]), masteremail.Split(';')[3], masteremail.Split(';')[4], 999, u.email, senderemail, "[영남건설기술교육원]", "[영남건설기술교육원] 교육종료일 안내",
string.Format("영남건설기술교육원입니다.<br><br>[{0}]님이 수강중인 [{1}] 강좌의 교육 종료일이 {2}일 남았습니다. 종료되기전에 서둘러 " +
(u.scdno < 3 ? "학습을 진행" : u.scdno == 3 ? "진행평가에" : u.scdno == 4 ? "최종평가에" : u.scdno == 5 ? "과제를 제출" : u.scdno == 6 ? "토론에 참여" : u.scdno == 7 ? "강의평가에 참여" : "-") + " 진행해주세요.<br><br>☞사이트 : https://www.cte.or.kr/",
u.username, u.cname, u.dday));
}
}
}
//8. 오프라인 출석
{
foreach (var u in lects.Where(w => w.scdno == 8 && w.istalk == 1))
{
m.Users.Add(new MemoUser()
{
userno = u.userno,
smstype = "A",
title = "[영남건설기술교육원] 교육종료일 안내",
isok = string.IsNullOrEmpty(u.mobile) ? -1 : 1,
mobile = (u.mobile ?? "").Replace("-", ""),
mcontents = string.Format("영남건설기술교육원입니다.\n\n{0}님이 신청중인 [{1}] 강좌의 교육이 [{2}]에 {3}에서 시작됩니다.\n\n☞사이트 : https://www.cte.or.kr/",
u.username, u.cname, u.stime.ToString("yyyy-MM-dd"),u.studyplace)
});
}
if (m.Users.Where(w => w.isok == 1).Count() > 0)
{
SaveTalk(m.Users.Where(w => w.isok == 1).ToList(), "encourage007");
m.Users.Clear();
}
foreach (var u in lects.Where(w => w.scdno == 8 && w.issms == 1))
{
m.Users.Add(new MemoUser()
{
userno = u.userno,
smstype = "S",
title = "[영남건설기술교육원] 교육종료일 안내",
isok = string.IsNullOrEmpty(u.mobile) ? -1 : 1,
mobile = (u.mobile ?? "").Replace("-", ""),
mcontents = string.Format("영남건설기술교육원입니다.\n\n{0}님이 신청중인 [{1}] 강좌의 교육이 [{2}]에 {3}에서 시작됩니다.\n\n☞사이트 : https://www.cte.or.kr/",
u.username, u.cname, u.stime.ToString("yyyy-MM-dd"), u.studyplace)
});
}
if (m.Users.Where(w => w.isok == 1).Count() > 0)
{
SaveSmsMulti(m.Users.Where(w => w.isok == 1).ToList());
m.Users.Clear();
}
var masteremail = GetConfig("masteremail");
var senderemail = masteremail.Split(';')[0];
foreach (var u in lects.Where(w => w.scdno == 8 && w.isemail == 1))
{
if (IsEmail(u.email))
{
SendEmail(masteremail.Split(';')[1], GetInt(masteremail.Split(';')[2]), masteremail.Split(';')[3], masteremail.Split(';')[4], 999, u.email, senderemail, "[영남건설기술교육원]", "[영남건설기술교육원] 교육종료일 안내",
string.Format("영남건설기술교육원입니다.<br><br>{0}님이 신청중인 [{1}] 강좌의 교육이 [{2}]에 {3}에서 시작됩니다.<br><br>☞사이트 : https://www.cte.or.kr/",
u.username, u.cname, u.stime.ToString("yyyy-MM-dd"),u.studyplace));
}
}
}
//9. 자격검정 시험
{
foreach (var u in lects.Where(w => w.scdno == 9 && w.istalk == 1))
{
m.Users.Add(new MemoUser()
{
userno = u.userno,
smstype = "A",
title = "[영남건설기술교육원] 진행평가 참여 알림",
isok = string.IsNullOrEmpty(u.mobile) ? -1 : 1,
mobile = (u.mobile ?? "").Replace("-", ""),
mcontents = string.Format("영남건설기술교육원입니다.\n\n{0}님이 신청중인 [{1}] 자격검정이 [{2}]에 {3}에서 이뤄질 예정입니다.\n\n☞사이트: https://www.cte.or.kr/",
u.username, u.cname, u.stime.ToString("yyyy-MM-dd HH:mm"),u.place)
});
}
if (m.Users.Where(w => w.isok == 1).Count() > 0)
{
SaveTalk(m.Users.Where(w => w.isok == 1).ToList(), "encourage008");
m.Users.Clear();
}
foreach (var u in lects.Where(w => w.scdno == 9 && w.issms == 1))
{
m.Users.Add(new MemoUser()
{
userno = u.userno,
smstype = "S",
title = "[영남건설기술교육원] 진행평가 참여 알림",
isok = string.IsNullOrEmpty(u.mobile) ? -1 : 1,
mobile = (u.mobile ?? "").Replace("-", ""),
mcontents = string.Format("영남건설기술교육원입니다.\n\n{0}님이 신청중인 [{1}] 자격검정이 [{2}]에 {3}에서 이뤄질 예정입니다.\n\n☞사이트: https://www.cte.or.kr/",
u.username, u.cname, u.stime.ToString("yyyy-MM-dd HH:mm"), u.place)
});
}
if (m.Users.Where(w => w.isok == 1).Count() > 0)
{
SaveSmsMulti(m.Users.Where(w => w.isok == 1).ToList());
m.Users.Clear();
}
var masteremail = GetConfig("masteremail");
var senderemail = masteremail.Split(';')[0];
foreach (var u in lects.Where(w => w.scdno == 9 && w.isemail == 1))
{
if (IsEmail(u.email))
{
SendEmail(masteremail.Split(';')[1], GetInt(masteremail.Split(';')[2]), masteremail.Split(';')[3], masteremail.Split(';')[4], 999, u.email, senderemail, "[영남건설기술교육원]", "[영남건설기술교육원] 진행평가 참여 알림",
string.Format("영남건설기술교육원입니다.<br><br>{0}님이 수강중인 [{1}] 자격검정이 [{2}]에 {3}에서 이뤄질 예정입니다.<br><br>☞사이트: https://www.cte.or.kr/",
u.username, u.cname, u.stime.ToString("yyyy-MM-dd HH:mm"),u.place));
}
}
}
}
}
return null;
}
/// <summary>
/// 윈도우스케쥴러 매일 새벽 4 시
/// 휴면, 탈퇴처리전 메시지
/// </summary>
/// <param name="sss"></param>
/// <param name="time"></param>
/// <param name="test"></param>
/// <returns></returns>
public ActionResult Dormant(String sss, String time, int test = 0)
{
if (test == 1)
{
SetError("encouragetest: " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
}
else {
if ("nptech1234".Equals(sss))
{
// 조회시점 => (휴면테이블.cdt + 1년) 인 컬럼
if (time == "0400")
{
Dao.Save("users.dormant.del", new Hashtable() { { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } });
}
// 조회시점 => (최근로그인일시 + 1년) 인 컬럼 (휴먼 테이블에 저장)
else if (time == "0430")
{
Dao.Save("users.dormant.insert", new Hashtable() { { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } });
}
// 조회시점 = (휴면테이블.cdt + 335일)<년월일> 인 컬럼
else if (time == "1000")
{
var m = new Memo() { Users = new List<MemoUser>() { } };
var select_del = Dao.Get<Data>("users.dormants.del", new Hashtable() { { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } });
foreach (var u in select_del.Where(w => w.intval == 1))
{
if (!string.IsNullOrEmpty(u.strval2))
{
/*
* SaveSmsMulti 함수 사용 -> 메시지 정보 sms 테이블에 저장, 모니터링 테이블 mts_sms_msg 에 저장
*/
m.Users.Add(new MemoUser()
{
userno = u.longval,
smstype = "S",
isok = string.IsNullOrEmpty(u.strval2) ? -1 : 1,
mcontents = string.Format("[영남건설기술교육원] 장기미접속 회원ID 삭제안내\n\n " +
"안녕하세요 회원님, 영남건설기술교육원은 소중한 회원님의 개인정보 보호를 위해 회원이 2년간 로그인하지 않는 경우," +
"회원탈퇴 처리 및 개인정보가 파기됨을 안내해드립니다.\n\n" +
"회원계정 : {0}\n" +
"적용일 : {1}\n\n" +
"서비스를 계속 이용하시려면, 위 적용일 이전에 로그인을 진행해주세요!",
u.strval, u.time.ToString("yyyy년 MM월 dd일"))
});
if (m.Users.Where(w => w.isok == 1).Count() > 0)
{
SaveSmsMulti(m.Users.Where(w => w.isok == 1).ToList());
m.Users.Clear();
}
/*
SendSms(u.strval2, null, null, string.Format("[영남건설기술교육원] 장기미접속 회원ID 삭제안내\n\n " +
"안녕하세요 회원님, 영남건설기술교육원은 소중한 회원님의 개인정보 보호를 위해 회원이 2년간 로그인하지 않는 경우," +
"회원탈퇴 처리 및 개인정보가 파기됨을 안내해드립니다.\n\n" +
"회원계정 : {0}\n" +
"적용일 : {1}\n\n" +
"서비스를 계속 이용하시려면, 위 적용일 이전에 로그인을 진행해주세요!",
u.strval, u.time.ToString("yyyy년 MM월 dd일")), null
);
*/
}
}
}
// 조회시점 = (최근로그인일시 + 335일)<년월일> 인 컬럼
else if (time == "1030")
{
var m = new Memo() { Users = new List<MemoUser>() { } };
var select_save = Dao.Get<Data>("users.dormants.save", new Hashtable() { { "uno", SUserInfo.UserNo }, { "uip", GetUserIP() } });
foreach (var u in select_save.Where(w => w.intval == 1))
{
if (!string.IsNullOrEmpty(u.strval2))
{
/*
* SaveSmsMulti 함수 사용 -> 메시지 정보 sms 테이블에 저장, 모니터링 테이블 mts_sms_msg 에 저장
*/
m.Users.Add(new MemoUser()
{
userno = u.longval,
smstype = "S",
isok = string.IsNullOrEmpty(u.strval2) ? -1 : 1,
mcontents = string.Format("[영남건설기술교육원] 휴면계정 전환 예정 안내\n\n " +
"안녕하세요 회원님, 영남건설기술교육원은 소중한 회원님의 개인정보 보호를 위해 " +
"개인정보보호법 제 39조의6(개인정보의 파기에 대한 특례)에 의거하여 " +
"고객님의 계정을 휴면상태로 변경하고 소중한 개인정보를 안전한 공간에 분리하여 보관할 예정입니다.\n\n" +
"회원계정 : {0}\n" +
"휴면계정 전환예정일 : {1}\n\n" +
"서비스를 계속 이용하시려면, 위 전환예정일 이전에 로그인을 진행해주세요!",
u.strval, u.time.ToString("yyyy년 MM월 dd일"))
});
if (m.Users.Where(w => w.isok == 1).Count() > 0)
{
SaveSmsMulti(m.Users.Where(w => w.isok == 1).ToList());
m.Users.Clear();
}
/*
SendSms(u.strval2, null, null, string.Format("[영남건설기술교육원] 휴면계정 전환 예정 안내\n\n " +
"안녕하세요 회원님, 영남건설기술교육원은 소중한 회원님의 개인정보 보호를 위해 " +
"개인정보보호법 제 39조의6(개인정보의 파기에 대한 특례)에 의거하여 " +
"고객님의 계정을 휴면상태로 변경하고 소중한 개인정보를 안전한 공간에 분리하여 보관할 예정입니다.\n\n" +
"회원계정 : {0}\n" +
"휴면계정 전환예정일 : {1}\n\n" +
"서비스를 계속 이용하시려면, 위 전환예정일 이전에 로그인을 진행해주세요!",
u.strval, u.time.ToString("yyyy년 MM월 dd일")), null
);
*/
}
}
}
}
}
return null;
}
public String KFCFLOGINAUTH(String userid)
{
if (string.IsNullOrEmpty(userid))
{
return "0";
}
Random r = new Random();
int key = r.Next(10000000, 99999999);
if (Dao.Save("users.remotelogin.set", new Hashtable() { { "userid", userid.Trim() }, {"siteip", GetUserIP() }, { "remotekey", key} }) > 0)
{
return key.ToString();
}
return "0";
}
}
}