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.
 
 
 
 
 

196 lines
6.6 KiB

using System;
using System.Text.RegularExpressions;
namespace Common.Utility
{
public class CheckPasswordUtility
{
protected string dob = "";
protected string idNumber = "";
protected string email = "";
protected string mobile = "";
protected string idType = "";
public CheckPasswordUtility()
{
//dob = EncryptDecryptUtility.ReadSession("birthDate", "");
//idNumber = EncryptDecryptUtility.ReadSession("senderIdNo", "").Replace("-", "");
//email = EncryptDecryptUtility.ReadSession("username", "");
//mobile = EncryptDecryptUtility.ReadSession("mobile", "");
//idType = EncryptDecryptUtility.ReadSession("senderIdType", "");
}
private void SetParams(string dobR, string idNumberR, string emailR, string mobileR, string idTypeR)
{
dob = string.IsNullOrEmpty(dobR) ? dob : dobR;
idNumber = string.IsNullOrEmpty(idNumberR) ? idNumber : idNumberR;
email = string.IsNullOrEmpty(emailR) ? email : emailR;
mobile = string.IsNullOrEmpty(mobileR) ? mobile : mobileR;
idType = string.IsNullOrEmpty(idTypeR) ? idType : idTypeR;
}
public string CheckPassword(string password, string dobR = "", string idNumberR = "", string emailR = "", string mobileR = "", string idTypeR = "")
{
SetParams(dobR, idNumberR, emailR, mobileR, idTypeR);
string errMsg = "";
errMsg = CheckForRegExp(password);
if (!string.IsNullOrEmpty(errMsg))
{
return errMsg;
}
errMsg = CheckForEmail(password);
if (!string.IsNullOrEmpty(errMsg))
{
return errMsg;
}
//errMsg = CheckMobile(password);
//if (!string.IsNullOrEmpty(errMsg))
//{
// return errMsg;
//}
//errMsg = CheckIdNumber(password);
//if (!string.IsNullOrEmpty(errMsg))
//{
// return errMsg;
//}
//errMsg = CheckDob(password);
return errMsg;
}
private string CheckForRegExp(string password)
{
string patternPassword = @"^(?=.*\d)(?=.*[A-Z]).{9,30}$";
if (!string.IsNullOrEmpty(password))
{
if (!Regex.IsMatch(password, patternPassword))
{
return "Password must meet the following requirements: At least one symbol / At least one capital letter / At least one number / Be at least 9 characters";
}
}
Regex r = new Regex(@"[~`!@#$%^&*()-+=|\{}':;.,<>/?]");
if (!r.IsMatch(password))
{
return "Password must meet the following requirements: At least one symbol / At least one capital letter / At least one number / Be at least 9 characters";
}
return "";
}
private string CheckDob(string password)
{
string[] dobArr = null;
string dateOfBirth = "";
if (idType.ToLower() == "passport" || idType.Trim().Equals("10997"))
{
dobArr = dob.Split('/');
string mm = dobArr[0], dd = dobArr[1];
if (dobArr[0].Length == 1)
{
mm = "0" + mm;
}
if (dobArr[1].Length == 1)
{
dd = "0" + dd;
}
dateOfBirth = dobArr[2].Substring(0, 4) + mm + dd;
}
else
{
dateOfBirth = idNumber.Substring(0, 6);
string yy = "19" + dateOfBirth.Substring(0, 2);
int nowYear = DateTime.Now.Year;
if ((nowYear - Convert.ToInt16(yy)) > 80)
{
yy = "20" + dateOfBirth.Substring(0, 2);
}
dateOfBirth = yy + dateOfBirth.Substring(2, 4);
}
string dateOfBirth1 = dateOfBirth.Substring(0, 4);
string dateOfBirth2 = dateOfBirth.Substring(2, 6);
string dateOfBirth3 = dateOfBirth.Substring(4, 4);
if (password.Contains(dateOfBirth1))
{
return "Password can not be same as DOB!";
}
if (password.Contains(dateOfBirth2))
{
return "Password can not be same as DOB!";
}
if (password.Contains(dateOfBirth3))
{
return "Password can not be same as DOB!";
}
return "";
}
private string CheckIdNumber(string password)
{
if (idType.ToLower() == "passport")
{
if (password.Contains(idNumber))
{
return "Password can not be same as id Number!";
}
}
string idFirstPart = idNumber.Substring(0, 6);
string idSecondPart = idNumber.Substring(6, idNumber.Length - 6);
if (password.Contains(idFirstPart))
{
return "Password can not be same as id Number!";
}
if (password.Contains(idSecondPart))
{
return "Password can not be same as id Number!";
}
return "";
}
private string CheckMobile(string password)
{
string mobileNum = "";
if (mobile.Contains("+82"))
{
mobileNum = mobile.Replace("+82", "0");
}
else
{
string mobileFirst2 = mobile.Substring(0, 2);
if (mobileFirst2 == "82")
{
mobileNum = "0" + mobile.Substring(2, mobile.Length - 2);
}
else if (mobile.Substring(0, 1) != "0" && mobile.Length == 10)
{
mobileNum = "0" + mobileNum;
}
else
{
mobileNum = mobile;
}
}
string mobileNum1 = mobileNum.Substring(3, mobileNum.Length - 3);
if (password.Contains(mobileNum1))
{
return "Password can not be same as mobile number!";
}
return "";
}
private string CheckForEmail(string password)
{
var emailArr = email.Split('@');
if (password.ToLower().Contains(emailArr[0].ToLower()))
{
return "Password can not be same as email!";
}
return "";
}
}
}