using DIXWeb.Business.GlobalM;
using DIXWeb.Business.Common;
using DIXWeb.Util;
using System.Web.Mvc;
using System.Linq;
using DIXWeb.Web.Model;
using DIXWeb.Web.Model.EasyUIModel;
using System;
using DIXWeb.Web.Controllers;
using System.Diagnostics;
using System.Management;
using System.Web;
using DIXWeb.Entity.Power;
using System.Web.UI;
using System.Security.Principal;
using System.Net;
using System.Web.Security;
using System.DirectoryServices;
using DIXWeb.DataRepository;
using DIXWeb.Entity.EasyUI;
using DIXWeb.Business.Workflow;
using DMC;
namespace DIXWeb.Web
{
public class HomeController : BaseMvcController
{
HomeBusiness _homeBus { get; } = new HomeBusiness();
UserBusiness _userBusiness = new UserBusiness();
#region 视图功能
public ActionResult Index()
{
return View();
}
[IgnoreLogin]
public ActionResult Login()
{
ViewData["UserNo"] = "";
ViewData["Password"] = "";
if (Request.Cookies["UserNo"] != null)
{
ViewData["UserNo"] = Request.Cookies["UserNo"].Value;
}
if (Request.Cookies["Password"] != null)
{
ViewData["Password"] = Request.Cookies["Password"].Value;
}
Operator.Logged();
//if (Operator.Logged())
//{
// string loginUrl = Url.Content("~/");
// string script = $@"
//
//
//
// ";
// return Content(script);
//}
return View();
}
public ActionResult Desktop()
{
return View();
}
public ActionResult Test()
{
return View();
}
#endregion
#region 获取数据
#endregion
#region 提交数据
//5105986020
//spdh1234!@#$
[IgnoreLogin]
public ActionResult SubmitLogin(string UserNo, string password, bool IsCheck)
{
ResultMessage res = new ResultMessage();
try
{
//验证登录
ResultMessage record = new LoginController().CheckUserLogin(UserNo, password);
UserInfo ui = record.Data as UserInfo;
if (record.Code == 200)
{
this.RememberUser(UserNo, password, IsCheck, ui);
res.Count = 0;
res.Code = 0;
res.Success = true;
res.Msg = "请求成功!";
}
else
{
RSP checkSonyUser = this.VerifyDomainUser(UserNo, password);
if (checkSonyUser.Code == 200)
{
checkSonyUser = _homeBus.SonyUserUpload(UserNo, password);
ui = new LoginController().LoginUnCode(UserNo, password).Data as UserInfo;
this.RememberUser(UserNo, password, IsCheck, ui);
res.Count = 0;
res.Code = 0;
res.Success = true;
res.Msg = "请求成功!";
}
else
{
res.Count = 0;
res.Code = 0;
res.Success = false;
res.Msg = "账号或密码不正确!";
}
}
}
catch (Exception er)
{
res.Count = 0;
res.Code = 0;
res.Success = false;
res.Msg = er.Message;
}
return Content(res.ToJson());
}
/*
5105244510
qwer1234!@#$(输入三遍)
*/
public RSP VerifyDomainUser(string user, string pwd, string domain = "AP.")
{
RSP record = new RSP();
string path = "LDAP://AP.Sony.com/CN=Users,DC=AP,DC=Sony,DC=com";
int n = domain.IndexOf('.');
try
{
using (DirectoryEntry de = new DirectoryEntry())
{
de.Path = path;
de.Username = domain.Substring(0, n) + @"\" + user;
de.Password = pwd;
de.AuthenticationType = AuthenticationTypes.ReadonlyServer;
object obj = de.NativeObject;
}
record.Code = 200;
record.Message = "SUCCESS";
}
catch (System.DirectoryServices.DirectoryServicesCOMException ex)
{
record.Code = 500;
record.Message = ex.Message;
}
return record;
}
public RSP VerifyDomainUser(string user, string pwd)
{
RSP record = new RSP();
try
{
DMC.DomainServiceProxy proxy = new DMC.DomainServiceProxy();
Tuple r = proxy.VerifyDomainUser(user, pwd);
if (r.Item1)
{
record.Code = 200;
record.Message = "SUCCESS";
}
else
{
record.Code = 500;
record.Message = r.Item2;
}
}
catch (System.DirectoryServices.DirectoryServicesCOMException ex)
{
record.Code = 500;
record.Message = ex.Message;
}
return record;
}
private void RememberUser(string UserNo, string password, bool IsCheck, UserInfo ui)
{
if (IsCheck)
{
Response.Cookies["UserNo"].Value = UserNo;
Response.Cookies["UserNo"].Expires = DateTime.Now.AddDays(30);
Response.Cookies["Password"].Value = password;
Response.Cookies["Password"].Expires = DateTime.Now.AddDays(30);
}
else
{
Response.Cookies["UserNo"].Expires = DateTime.Now.AddSeconds(-1);
Response.Cookies["Password"].Expires = DateTime.Now.AddSeconds(-1);
}
Util.SessionHelper.Session["UserId"] = ui.Id;
Util.SessionHelper.Session["UserInfo"] = ui;
Util.SessionHelper.Session["OrgList"] = "";// new OrgInfoController().GetOrganizationByUserNo(ui.UserNo);//保存组织
Util.SessionHelper.Session["RoleNameString"] = _userBusiness.GetUserRoleNameStr(UserNo);
Util.SessionHelper.Session["UserNo"] = ui.UserNo;
}
///
/// 注销
///
public ActionResult Logout()
{
Operator.Logout();
return Success("注销成功!");
}
#endregion
}
}