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
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 "";
|
|
}
|
|
}
|
|
}
|