You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
521 lines
20 KiB
521 lines
20 KiB
using System;
|
|
using System.Data;
|
|
using System.Web;
|
|
using System.Web.Security;
|
|
using FineUI;
|
|
using System.Text;
|
|
using System.Linq;
|
|
using CK.SCP.Models.AppBoxEntity;
|
|
using System.Collections.Generic;
|
|
using CK.SCP.Models.ScpEntity;
|
|
using CK.SCP.Controller;
|
|
using System.Text.RegularExpressions;
|
|
using CK.SCP.Models;
|
|
using CK.SCP.Utils;
|
|
using CK.SCP.Common;
|
|
using System.Configuration;
|
|
using SCP.Code;
|
|
using CK.SCP.Models.Enums;
|
|
using System.Drawing;
|
|
using static CK.SCP.Common.MyWebSmtpMail;
|
|
using MailKit.Security;
|
|
using System.Collections;
|
|
|
|
namespace SCP
|
|
{
|
|
public partial class default_hb : PageBase
|
|
{
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
if (!IsPostBack)
|
|
{
|
|
var _username = Request.QueryString["t"];
|
|
var _email = Request.QueryString["u"];
|
|
if (string.IsNullOrEmpty(_username) && string.IsNullOrEmpty(_email))
|
|
{
|
|
LoadData();
|
|
}
|
|
else
|
|
{
|
|
|
|
if (!string.IsNullOrEmpty(_username) && !string.IsNullOrEmpty(_email))
|
|
{
|
|
var _name = Encryption64.Decrypt(_username, DateTime.Now.ToString("yyyyMMdd"));
|
|
var _mail = Encryption64.Decrypt(_email, DateTime.Now.ToString("yyyyMMdd"));
|
|
if (string.IsNullOrEmpty(_name) || string.IsNullOrEmpty(_mail))
|
|
{
|
|
LoadData();
|
|
}
|
|
else
|
|
{
|
|
User user = DB.Users.Where(u => u.Name == _name && u.Email == _mail).FirstOrDefault();
|
|
var _list = SCPDB.TB_FACTORY.ToList();
|
|
var erpdomain = _list.FirstOrDefault(q => q.ErpSite == factoryValue.Value).ErpDomain;
|
|
user.UsedDomain = erpdomain;
|
|
user.UserdSite = factoryValue.Value;
|
|
if (user != null)
|
|
{
|
|
if (!user.Enabled)
|
|
{
|
|
Alert.Show(GetResourceKey("用户未启用,请联系管理员!"));
|
|
}
|
|
else
|
|
{
|
|
LoginSuccess(user);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void LoadData( int? a =0)
|
|
{
|
|
// 如果用户已经登录,则重定向到管理首页
|
|
if (User.Identity.IsAuthenticated && a == 0)
|
|
{
|
|
Response.Redirect(FormsAuthentication.DefaultUrl);
|
|
}
|
|
img.ImageUrl = DrawToBase64(4);
|
|
}
|
|
protected string GetFactoryName()
|
|
{
|
|
|
|
|
|
var _list = SCPDB.TB_FACTORY.ToList();
|
|
//dp_List.DataTextField = "FactoryName";
|
|
//dp_List.DataValueField= "ErpDomain";
|
|
//dp_List.DataSource =_list;
|
|
//dp_List.DataBind();
|
|
|
|
|
|
factory.DataTextField = "FactoryName";
|
|
factory.DataValueField = "ErpSite";
|
|
factory.DataSource = _list;
|
|
factory.DataBind();
|
|
|
|
string _content = "闻荫科技有限公司";
|
|
TA_CONFIG _cf = SCPDB.TA_CONFIG.FirstOrDefault(p => p.ParamName == ("工厂名称"));
|
|
|
|
if (_cf != null)
|
|
{
|
|
_content = _cf.ParamValue;
|
|
}
|
|
return _content;
|
|
}
|
|
|
|
|
|
|
|
#region Events
|
|
|
|
protected void btnSubmit_Click(object sender, EventArgs e)
|
|
{
|
|
if (string.IsNullOrEmpty(Text1.Value.ToString()))
|
|
{
|
|
string userName = textUserName.Value.Trim();
|
|
string password = textPassword.Value.Trim();
|
|
LoadResouce();
|
|
Login(userName, password);
|
|
}
|
|
|
|
|
|
}
|
|
private void Login(string p_userName, string p_password)
|
|
{
|
|
var _list = SCPDB.TB_FACTORY.ToList();
|
|
if (string.IsNullOrEmpty(textUserName.Value) || string.IsNullOrEmpty(textPassword.Value))
|
|
{
|
|
Alert.Show(GetResourceKey("用户名或密码不能为空!"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
return;
|
|
}
|
|
|
|
if (string.IsNullOrEmpty(inputValue.Value))
|
|
{
|
|
Alert.Show(GetResourceKey("验证码不能为空!"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
return;
|
|
}
|
|
if (inputValue.Value.Trim().ToLower() != (Session["CheckCode"].ToString().ToLower()))
|
|
{
|
|
Alert.Show(GetResourceKey("验证码错误!"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
return;
|
|
}
|
|
|
|
User user = DB.Users.Where(u => u.Name == p_userName).FirstOrDefault();
|
|
|
|
if (user != null)
|
|
{
|
|
if (!user.Enabled)
|
|
{
|
|
Alert.Show(GetResourceKey("用户未启用,请联系管理员!"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
return;
|
|
}
|
|
if (PasswordUtil.ComparePasswords(user.Password, p_password))
|
|
{
|
|
|
|
String pattern = "(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*[~!@#$%^&*_.]).{8,}";
|
|
|
|
if (!Regex.IsMatch(p_password, pattern))
|
|
{
|
|
|
|
//PageContext.RegisterStartupScript(Window1.GetShowReference(string.Format("Change_password.aspx")));
|
|
this.div_4.Style.Add("visibility", "visible");
|
|
this.div_5.Style.Add("visibility", "visible");
|
|
if (!string.IsNullOrEmpty(this.textPassword1.Value))
|
|
{
|
|
if (this.textPassword1.Value.Trim() != textConfim.Value.Trim())
|
|
{
|
|
Alert.Show(GetResourceKey("新密码与确认密码不一致!"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
if (!Regex.IsMatch(this.textPassword1.Value.Trim(), pattern))
|
|
{
|
|
Alert.Show(GetResourceKey("新密码必须包含大小写字母,英文特殊符号~!@#$%^&*_中的一个和数字且不能少于8位!"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
return;
|
|
|
|
}
|
|
}
|
|
user.Password = PasswordUtil.CreateDbPassword(this.textPassword1.Value);
|
|
DB.SaveChanges();
|
|
}
|
|
else
|
|
{
|
|
Alert.Show(GetResourceKey("您的密码过于简单,请修改密码,新密码必须包含大小写字母,英文特殊符号~!@#$%^&*_中的一个和数字且不能少于8位!"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
return;
|
|
}
|
|
}
|
|
var _factoryList = DB.Users.Where(itm => itm.Name == user.Name).FirstOrDefault().TA_FACTORY.Select(p => p.FactoryId).ToList();
|
|
var fac = DB.TA_FACTORY.Select(p => p.FactoryId).ToList();
|
|
if (string.IsNullOrEmpty( factoryValue.Value))
|
|
{
|
|
factoryValue.Value = SCPDB.TB_FACTORY.ToList().FirstOrDefault().ErpSite;
|
|
}
|
|
var erpdomain = _list.FirstOrDefault(q => q.ErpSite == factoryValue.Value).ErpDomain;
|
|
user.UsedDomain = erpdomain;
|
|
user.UserdSite = factoryValue.Value;
|
|
if (_factoryList.Contains(erpdomain))
|
|
{
|
|
// 判断是否是供应商权限 是的话 判断是否只绑定了供应商权限 只绑定了供应商权限 判断是否绑定了对应关系
|
|
var RoName = user.Roles.Select(q => q.Name).ToList();
|
|
if (RoName != null)
|
|
{
|
|
if (RoName.Count() == 1 && RoName.Contains("供应商"))
|
|
{
|
|
var list = DB.VenderUsers.Where(q => q.UserId == user.ID).ToList();
|
|
if (list.Count() == 0)
|
|
{
|
|
Alert.Show(GetResourceKey("该账号未绑定供应商无法登录,请联系管理人员进行绑定后重新登录"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
string date = DateTime.Now.ToShortDateString();
|
|
var ret = SCP_LOGINNUMBER_CONTROLLER.Save_TA_LOGINNUMBER(p_userName, LoginNumer.Sussess, date);
|
|
// 登录成功
|
|
LoginSuccess(user);
|
|
}
|
|
else
|
|
{
|
|
Alert.Show(GetResourceKey("不是选定工厂下供应商"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
return;
|
|
}
|
|
return;
|
|
|
|
}
|
|
else
|
|
{
|
|
string date = DateTime.Now.ToShortDateString();
|
|
var ret = SCP_LOGINNUMBER_CONTROLLER.Save_TA_LOGINNUMBER(p_userName, LoginNumer.Faile, date);
|
|
if (ret.MessageList.Count() > 0)
|
|
{
|
|
Alert.Show(GetResourceKey(ret.MessageList.First()));
|
|
}
|
|
else
|
|
{
|
|
|
|
Alert.Show(GetResourceKey("用户名或密码错误!"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
var number = SCP_LOGINNUMBER_CONTROLLER.GetlistUserNumber(p_userName);
|
|
if (number != null)
|
|
{
|
|
if (number.Number < 5)
|
|
{
|
|
Text2.Value = GetResourceKey( "用户名或密码错误") + number.Number + GetResourceKey("次24小时内错误5次账号将变为未启用状态!");
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
return;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
string date = DateTime.Now.ToShortDateString();
|
|
var ret = SCP_LOGINNUMBER_CONTROLLER.Save_TA_LOGINNUMBER(p_userName, LoginNumer.Faile, date);
|
|
if (ret.MessageList.Count() > 0)
|
|
{
|
|
Alert.Show(GetResourceKey(ret.MessageList.First()));
|
|
}
|
|
else
|
|
{
|
|
Alert.Show(GetResourceKey("用户名或密码错误!"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
var number = SCP_LOGINNUMBER_CONTROLLER.GetlistUserNumber(p_userName);
|
|
if (number != null)
|
|
{
|
|
if (number.Number < 5)
|
|
{
|
|
Text2.Value = GetResourceKey( "用户名或密码错误" + number.Number + "次24小时内错误五次账号将变为未启用状态!");
|
|
}
|
|
}
|
|
}
|
|
|
|
return;
|
|
}
|
|
}
|
|
//获取登录的用户信息
|
|
public static UserLoginInfo UserInfo
|
|
{
|
|
get
|
|
{
|
|
if (HttpContext.Current.Session["user"] != null)
|
|
{
|
|
return (UserLoginInfo)HttpContext.Current.Session["user"];
|
|
}
|
|
return null;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
private void LoginSuccess(User user)
|
|
{
|
|
|
|
RegisterOnlineUser(user);
|
|
// 用户所属的角色字符串,以逗号分隔
|
|
string roleIDs = String.Empty;
|
|
if (user.Roles != null)
|
|
{
|
|
roleIDs = String.Join(",", user.Roles.Select(r => r.ID).ToArray());
|
|
}
|
|
Session["CheckCode"] = null;
|
|
bool isPersistent = true;
|
|
DateTime expiration = DateTime.Now.AddMinutes(double.Parse(ConfigurationManager.AppSettings["SCP_TIME_OUT"]));
|
|
CreateFormsAuthenticationTicket(user.Name, roleIDs, isPersistent, expiration, user.UsedDomain);
|
|
var first = DB.Users.Where(p => p.Name == user.Name).FirstOrDefault();
|
|
if (first != null)
|
|
{
|
|
first.Remark = user.UsedDomain;
|
|
first.UserdSite = user.UserdSite;
|
|
DB.SaveChanges();
|
|
}
|
|
img.ImageUrl = DrawToBase64(4);
|
|
// 重定向到登陆后首页
|
|
Response.Redirect(FormsAuthentication.DefaultUrl);
|
|
}
|
|
private void LoadResouce()
|
|
{
|
|
List<V_TA_LANGUAGE> _list = new List<V_TA_LANGUAGE>();
|
|
Application["LanguageList"] = ScpCache.LangauageList;
|
|
}
|
|
#endregion
|
|
|
|
public class UserLoginInfo
|
|
{
|
|
public int UserID;
|
|
public string UserType;
|
|
public string UserName;
|
|
public string SupplierCode;
|
|
public string SupplierName;
|
|
public string FactoryCode;
|
|
public string FactoryName;
|
|
public string Authority;
|
|
public DataTable AuthorityData = null;
|
|
public bool LookPrice;
|
|
}
|
|
public int GenerateRandomNo()
|
|
{
|
|
int _min = 1000;
|
|
int _max = 9999;
|
|
Random _rdm = new Random();
|
|
|
|
return _rdm.Next(_min, _max);
|
|
}
|
|
public static string random()
|
|
{
|
|
Random random = new Random();
|
|
StringBuilder builder = new StringBuilder();
|
|
for (int i = 0; i < 4; i++)
|
|
{
|
|
if (random.Next(2) == 1)
|
|
{
|
|
builder.Append((char)('a' + random.Next(27)));
|
|
}
|
|
else
|
|
{
|
|
builder.Append((char)('A' + random.Next(27)));
|
|
}
|
|
}
|
|
builder.Append((char)('a' + random.Next(27)));
|
|
builder.Append((char)('A' + random.Next(27)));
|
|
return builder.ToString();
|
|
}
|
|
|
|
|
|
protected void btnResetPassWord_Click(object sender, EventArgs e)
|
|
{
|
|
string userName = textUserName.Value.Trim();
|
|
string email = textEmail.Value.Trim();
|
|
if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(email))
|
|
{
|
|
Alert.Show(GetResourceKey("用户名或邮件不能为空!"));
|
|
return;
|
|
}
|
|
User user = DB.Users.Where(u => u.Name == userName).FirstOrDefault();
|
|
if (user != null)
|
|
{
|
|
if (user.Email == email)
|
|
{
|
|
if (!user.Enabled)
|
|
{
|
|
Alert.Show(GetResourceKey("用户未启用,请联系管理员!"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
}
|
|
else
|
|
{
|
|
string mails = "";
|
|
mails += user.Email + ",";
|
|
if (mails != "")
|
|
{
|
|
mails = mails.Substring(0, mails.Length - 1);
|
|
}
|
|
//var _email= Encryption64.Encrypt(user.Email, DateTime.Now.ToString("yyyyMMdd"));
|
|
//var _name = Encryption64.Encrypt(user.Name, DateTime.Now.ToString("yyyyMMdd"));
|
|
|
|
int a = GenerateRandomNo();
|
|
string b = random();
|
|
|
|
|
|
string mailbody = "";
|
|
mailbody += "尊敬的供应商<br>";
|
|
mailbody += "你好!密码已经重置为" + b + "@"+ a + "请点击链接进行登录并修改密码 <br><br>";
|
|
string str = ConfigurationManager.AppSettings["ResetPassWord"].ToString();
|
|
//mailbody += string.Format("<a href='http://{0}/default.aspx?</a><br/><br/>", ConfigurationManager.AppSettings["ResetPassWord"].ToString());
|
|
mailbody += str + "<br>";
|
|
mailbody += "<br><br><br><br>日期:" + DateTime.Now;
|
|
//MyWebSmtpMail webmail = new MyWebSmtpMail();
|
|
try
|
|
{
|
|
MailManager.SendMail(mails, mailbody, "供应商密码找回");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Alert.Show(ex.Message + ex.InnerException?.Message);
|
|
img.ImageUrl = DrawToBase64(4);
|
|
return;
|
|
}
|
|
|
|
//webmail.Send(mails, mailbody, "供应商密码找回");
|
|
user.Password = PasswordUtil.CreateDbPassword(b + "@" + a);
|
|
DB.SaveChanges();
|
|
Alert.Show(GetResourceKey("新密码登录链接已发送到邮箱,请查收!"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Alert.Show(GetResourceKey("邮箱错误,请输入注册邮箱!"));
|
|
img.ImageUrl = DrawToBase64(4);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
public string GetChar(Random rnd)
|
|
{
|
|
// 0-9
|
|
// A-Z ASCII值 65-90
|
|
// a-z ASCII值 97-122
|
|
int i = rnd.Next(0, 123);
|
|
if (i < 10)
|
|
{
|
|
// 返回数字
|
|
return i.ToString();
|
|
}
|
|
|
|
char c = (char)i;
|
|
|
|
|
|
// 返回大小写字母加数字
|
|
return char.IsLower(c) ? c.ToString() : GetChar(rnd);
|
|
}
|
|
|
|
|
|
protected void btn_ch_Click(object sender, EventArgs e)
|
|
{
|
|
Session["language"] = "CH";
|
|
btn_Login.Text = "登录";
|
|
btn_MailLogin.Text = "邮件登录";
|
|
btn_back.Attributes["value"] = "退回";
|
|
btn_pass.Attributes["value"] = "找回密码";
|
|
img.ImageUrl = DrawToBase64(4);
|
|
}
|
|
|
|
protected void btn_en_Click(object sender, EventArgs e)
|
|
{
|
|
Session["language"] = "EN";
|
|
btn_Login.Text = "Login";
|
|
btn_MailLogin.Text = "Mail Login";
|
|
btn_back.Attributes["value"] = "Back";
|
|
btn_pass.Attributes["value"] = "Forgot Password";
|
|
TranslatorAgent(btnRefresh);
|
|
img.ImageUrl = DrawToBase64(4);
|
|
}
|
|
|
|
#region
|
|
|
|
/// <summary>
|
|
/// 返回参数
|
|
/// </summary>
|
|
/// <param name="lengths"></param>
|
|
/// <returns></returns>
|
|
public string DrawToBase64(int lengths)
|
|
{
|
|
string code = RandomVerificationCode(lengths);
|
|
Session["CheckCode"] = code;
|
|
Bitmap png = DrawImage(code);
|
|
string r = "data:image/jpg;base64," + BitmapToBase64Str(png);
|
|
return r;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 刷新验证码
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void btnRefresh_Click(object sender, EventArgs e)
|
|
{
|
|
LoadData(1);
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|