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.
308 lines
16 KiB
308 lines
16 KiB
using Common;
|
|
using Common.Helper;
|
|
using Common.Model;
|
|
using Common.Model.Config;
|
|
using Common.Model.Enum;
|
|
using log4net;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Runtime.Remoting.Messaging;
|
|
using System.Text;
|
|
using JsonRx.Helper;
|
|
namespace Repository.Authentication
|
|
{
|
|
public class AuthenticationRepo : IAuthenticationRepo
|
|
{
|
|
private readonly Dao _dao = new Dao();
|
|
private static readonly ILog Log = LogManager.GetLogger(typeof(AuthenticationRepo));
|
|
|
|
/// <summary>
|
|
/// Check for client validity.
|
|
/// </summary>
|
|
/// <param name="credentials"></param>
|
|
/// <returns></returns>
|
|
public DbResult IsMapAPIWithOtherApp(ClientRegistrationKeys credentials)
|
|
{
|
|
var sql = "EXEC mobile_proc_GmeApiClientRegistration @flag='chk-client'";
|
|
sql += ", @clientId = " + _dao.FilterString(credentials.clientId);
|
|
sql += ", @secret = " + _dao.FilterString(credentials.secret);
|
|
|
|
// Log.DebugFormat("Repository.AuthenticationRepo.IsMapAPIWithOtherApp | Requested parameters : {0}, SQL:{1}", credentials.ToString(), sql);
|
|
return _dao.ParseDbResult(sql);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Method allow to enter into the system. Check for user exists, Generates accesscode
|
|
/// </summary>
|
|
/// <param name="credentials"></param>
|
|
/// <returns></returns>
|
|
public LoginResponse LoginSystem(LoginCredential credentials)
|
|
{
|
|
var lang = Convert.ToString(CallContext.GetData(Constants.Language));
|
|
|
|
LoginResponse ls = null;
|
|
var sql = "EXEC mobile_proc_userLogin @flag='l'";
|
|
sql += ", @userName = " + _dao.FilterString(credentials.userId);
|
|
sql += ", @password = " + _dao.FilterString(credentials.password);
|
|
sql += ", @Imei = " + _dao.FilterString(credentials.uuid);
|
|
sql += ", @accessCode = " + _dao.FilterString(credentials.AccessGuid);
|
|
sql += ", @clientId = " + _dao.FilterString(credentials.clientId);
|
|
sql += ", @fcmid = " + _dao.FilterString(credentials.fcmId);
|
|
sql += ", @isBiometricLogin = " + _dao.FilterString(credentials.IsBiometricLogin.ToString());
|
|
sql += ", @biometricLoginType = " + _dao.FilterString(credentials.BiometricLoginType.ToString());
|
|
sql += ", @deviceType = " + _dao.FilterString(string.IsNullOrEmpty(credentials.DeviceType) ? "" : credentials.DeviceType.ToString());
|
|
sql += ", @accessToken = " + _dao.FilterString(string.IsNullOrEmpty(credentials.accessCode) ? "" : credentials.accessCode.ToString());
|
|
sql += ", @residenceType = " + _dao.FilterString(credentials.CustomerType.ToString());
|
|
Log.Debug("LoginSystem | SQL : " + sql);
|
|
var dataTable = _dao.ExecuteDataTable(sql);
|
|
|
|
if (dataTable.Rows[0]["errorCode"].Equals("0"))
|
|
{
|
|
var ios = ConfigurationManager.AppSettings["IosUpdate"].ToString().Split('-');
|
|
var iosInfo = ConfigurationManager.AppSettings["IosUpdateInfo"].ToString();
|
|
var android = ConfigurationManager.AppSettings["AndroidUpdate"].ToString().Split('-');
|
|
var androidInfo = ConfigurationManager.AppSettings["AndroidUpdateInfo"].ToString();
|
|
|
|
IList<AppUpdate> app = new List<AppUpdate>();
|
|
app.Add(new AppUpdate { OS = "IOS", Build = ios[0], Version = ios[1], Critical = ios[2], Info = iosInfo });
|
|
app.Add(new AppUpdate { OS = "ANDROID", Build = android[0], Version = android[1], Critical = android[2], Info = androidInfo });
|
|
|
|
//var dpStr = dataTable.Rows[0]["dpUrl"].ToString();
|
|
//var fileInBytes = Encoding.UTF8.GetBytes(dataTable.Rows[0]["dpUrl"].ToString());
|
|
var userIdInBytes = Encoding.UTF8.GetBytes(dataTable.Rows[0]["userId"].ToString());
|
|
var moduleInBytes = Encoding.UTF8.GetBytes("kyc");
|
|
ls = new LoginResponse
|
|
{
|
|
ErrorCode = dataTable.Rows[0]["errorCode"].ToString(),
|
|
userId = dataTable.Rows[0]["userId"].ToString(),
|
|
senderId = dataTable.Rows[0]["SenderId"].ToString(),
|
|
firstName = dataTable.Rows[0]["firstName"].ToString(),
|
|
// middleName = dataTable.Rows[0]["middleName"].ToString(), lastName =
|
|
// dataTable.Rows[0]["lastName"].ToString(), nickName = dataTable.Rows[0]["nickName"].ToString(),
|
|
email = dataTable.Rows[0]["email"].ToString(),
|
|
customerEmail = dataTable.Rows[0]["customerEmail"].ToString(),
|
|
mobileNumber = dataTable.Rows[0]["phone"].ToString(),
|
|
// rewardPoint = dataTable.Rows[0]["rewardPoint"].ToString(),
|
|
active = dataTable.Rows[0]["active"].ToString().ToBoolean(),
|
|
kyc = dataTable.Rows[0]["kyc"].ToString().ToBoolean(),
|
|
verified = dataTable.Rows[0]["verified"].ToString().ToBoolean(),
|
|
walletNumber = dataTable.Rows[0]["walletNumber"].ToString(),
|
|
availableBalance = dataTable.Rows[0]["availableBalance"].ToString(),
|
|
primaryBankName = dataTable.Rows[0]["primaryBankName"].ToString(),
|
|
accessCode = dataTable.Rows[0]["accessCode"].ToString(),
|
|
// cmRegistrationId = dataTable.Rows[0]["cmRegistrationId"].ToString(), dpUrl =
|
|
// !(string.IsNullOrEmpty(dpStr)) ? ApplicationConfig.GetRootURL() +
|
|
// "handler/docs.ashx?img=" + Convert.ToBase64String(fileInBytes) + "&userId=" +
|
|
// Convert.ToBase64String(userIdInBytes) + "&module=" +
|
|
// Convert.ToBase64String(moduleInBytes) : null,
|
|
country = dataTable.Rows[0]["country"].ToString(),
|
|
// province = dataTable.Rows[0]["province"].ToString(),
|
|
provinceId = dataTable.Rows[0]["provinceId"].ToString(),
|
|
// isReferred = Convert.ToBoolean(dataTable.Rows[0]["isReferred"]),
|
|
sourceId = dataTable.Rows[0]["sourceId"].ToString(),
|
|
// idType = dataTable.Rows[0]["idType"].ToString(),
|
|
//idNumber = dataTable.Rows[0]["idNumber"].ToString(),
|
|
countryCode = dataTable.Rows[0]["countryCode"].ToString(),
|
|
yearlyLimit = Convert.ToString(dataTable.Rows[0]["yearlyLimit"]),
|
|
// primaryBankAccount = Convert.ToString(dataTable.Rows[0]["primaryBankAccount"]),
|
|
pennyTestStatus = Convert.ToString(dataTable.Rows[0]["pennyTestStatus"]),
|
|
kftcClientId = dataTable.Rows[0]["gmeClientId"].ToString(),
|
|
redirectTo = dataTable.Rows[0]["redirectTo"].ToString(),
|
|
isExistingCustomer =dataTable.Rows[0]["isExistingCustomer"].ToString().ToBoolean(),
|
|
appUpdate = app,
|
|
IsBiometricLogin =dataTable.Rows[0]["IsBiometricLogin"].ToString().ToBoolean(),
|
|
BiometricLoginType = dataTable.Rows[0]["BiometricLoginType"].ToString(),
|
|
//IsForcedPwdchange= dataTable.Rows[0]["IsForcedPwdChange"].ToString(),
|
|
Extra = dataTable.Rows[0]["accessToken"].ToString(),
|
|
|
|
};
|
|
|
|
var map = Utilities.GetLanguageMapping(RESPONSE_MSG.LOGIN_TO_SYSTEM_SUCCESS.ToString(), lang);
|
|
ls.Msg = map.Message;
|
|
|
|
}
|
|
else
|
|
{
|
|
ls = new LoginResponse();
|
|
ls.ErrorCode = "1";
|
|
// ls.Msg = dataTable.Rows[0]["errorCode"] + Convert.ToString(dataTable.Rows[0]["msg"]);
|
|
|
|
//return ls;
|
|
string enumString = string.Empty;
|
|
|
|
if (dataTable.Rows[0]["errorCode"].Equals("1"))
|
|
{
|
|
enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_1.ToString();
|
|
}
|
|
else if (dataTable.Rows[0]["errorCode"].Equals("2"))
|
|
{
|
|
enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_2.ToString();
|
|
}
|
|
else if (dataTable.Rows[0]["errorCode"].Equals("3"))
|
|
{
|
|
enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_3.ToString();
|
|
}
|
|
else if (dataTable.Rows[0]["errorCode"].Equals("4"))
|
|
{
|
|
enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_4.ToString();
|
|
}
|
|
else if (dataTable.Rows[0]["errorCode"].Equals("5"))
|
|
{
|
|
enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_5.ToString();
|
|
}
|
|
else if (dataTable.Rows[0]["errorCode"].Equals("6"))
|
|
{
|
|
enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_6.ToString();
|
|
}
|
|
else if (dataTable.Rows[0]["errorCode"].Equals("7"))
|
|
{
|
|
enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_7.ToString();
|
|
}
|
|
else if (dataTable.Rows[0]["errorCode"].Equals("8"))
|
|
{
|
|
enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_8.ToString();
|
|
}
|
|
else if (dataTable.Rows[0]["errorCode"].Equals("20"))
|
|
{
|
|
enumString = RESPONSE_MSG.LOGIN_TO_SYSTEM_FAIL_20.ToString();
|
|
}
|
|
|
|
var map = Utilities.GetLanguageMapping(enumString, lang);
|
|
return new LoginResponse { ErrorCode = dataTable.Rows[0]["errorCode"].Equals("0") ? "0" : "1", Msg = map.Message};
|
|
//ls.Msg = map.Message;
|
|
}
|
|
|
|
return ls;
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// Check for validity of access code during every request after login success and KYC
|
|
/// verified. Implemented at token authentication.
|
|
/// </summary>
|
|
/// <param name="credentials"></param>
|
|
/// <returns></returns>
|
|
public string IsAccessCodeValid(string accessCode, string uuid)
|
|
{
|
|
var sql = "EXEC mobile_proc_userLogin @flag='chk-access-code'";
|
|
sql += ", @imei = " + _dao.FilterString(uuid);
|
|
sql += ", @accessCode = " + _dao.FilterString(accessCode);
|
|
|
|
Log.DebugFormat("Repository.AuthenticationRepo.IsAccessCodeValid | Requested parameters : {0}, SQL:{1}", "", sql);
|
|
var dbRes = _dao.ParseDbResult(sql);
|
|
if (!dbRes.ResponseCode.Equals("0"))
|
|
{
|
|
return null;
|
|
}
|
|
return dbRes.Id;
|
|
}
|
|
|
|
public DbResult ReSendVerificationCode(VerificationKeys keys)
|
|
{
|
|
var sql = "EXEC mobile_proc_userRegistration @flag='re-code'";
|
|
sql += ", @imei = " + _dao.FilterString(keys.uuid);
|
|
sql += ", @username = " + _dao.FilterString(keys.userId);
|
|
sql += ", @code = " + _dao.FilterString(keys.verificationCode);
|
|
sql += ", @codeType = " + _dao.FilterString(keys.codeType);
|
|
sql += ", @scope = " + _dao.FilterString(keys.scope);
|
|
|
|
return _dao.ParseDbResult(sql);
|
|
}
|
|
|
|
public JsonRxResponse GetUser(string userId)
|
|
{
|
|
JsonRxResponse jsonRx = new JsonRxResponse
|
|
{
|
|
ErrorCode = "1",
|
|
Msg = "Failed"
|
|
};
|
|
var sql = "EXEC mobile_proc_customerMaster @flag='getUser'";
|
|
sql += ", @username = " + _dao.FilterString(userId);
|
|
|
|
Log.DebugFormat("Repository.CustomerRepo.GetUser | Requested parameters : {0}, SQL:{1}", JsonConvert.SerializeObject(userId), sql);
|
|
var dataTable = _dao.ExecuteDataTable(sql);
|
|
|
|
if (dataTable != null)
|
|
{
|
|
if (Convert.ToString(dataTable.Rows[0]["errorCode"]) == "0")
|
|
{
|
|
var moduleInBytes = Encoding.UTF8.GetBytes("kyc");
|
|
var dpStr = dataTable.Rows[0]["dpUrl"].ToString();
|
|
var fileInBytes = Encoding.UTF8.GetBytes(dataTable.Rows[0]["dpUrl"].ToString());
|
|
var userIdInBytes = Encoding.UTF8.GetBytes(dataTable.Rows[0]["userId"].ToString());
|
|
var ursDetail = new UserDetail
|
|
{
|
|
userId = dataTable.Rows[0]["userId"].ToString(),
|
|
firstName = dataTable.Rows[0]["firstName"].ToString(),
|
|
middleName = dataTable.Rows[0]["middleName"].ToString(),
|
|
lastName = dataTable.Rows[0]["lastName"].ToString(),
|
|
nickName = dataTable.Rows[0]["nickName"].ToString(),
|
|
mobileNumber = dataTable.Rows[0]["mobileNumber"].ToString(),
|
|
email = dataTable.Rows[0]["email"].ToString(),
|
|
verificationCode = string.IsNullOrEmpty(dataTable.Rows[0]["verificationCode"].ToString()) ? "" : Utilities.DecryptString(dataTable.Rows[0]["verificationCode"].ToString()),
|
|
verificationCodeExpiryDate = Convert.ToString(dataTable.Rows[0]["verificationCodeExpiryDate"]),
|
|
createdDate = Convert.ToString(dataTable.Rows[0]["createdDate"]),
|
|
userRoles = dataTable.Rows[0]["userRoles"].ToString(),
|
|
rewardPoint = dataTable.Rows[0]["rewardPoint"].ToString(),
|
|
active = Convert.ToBoolean(dataTable.Rows[0]["isActive"]),
|
|
kyc = Convert.ToBoolean(dataTable.Rows[0]["hasKyc"]),
|
|
verified = Convert.ToBoolean(dataTable.Rows[0]["isVerified"]),
|
|
forgetCode = string.IsNullOrEmpty(dataTable.Rows[0]["forgetCode"].ToString()) ? "" : Utilities.DecryptString(dataTable.Rows[0]["forgetCode"].ToString()),
|
|
forgetCodeExpiryDate = Convert.ToString(dataTable.Rows[0]["forgetCodeExpiryDate"]),
|
|
primaryBankName = dataTable.Rows[0]["primaryBankName"].ToString(),
|
|
walletNumber = dataTable.Rows[0]["walletNumber"].ToString(),
|
|
availableBalance = dataTable.Rows[0]["availableBalance"].ToString(),
|
|
cmRegistrationId = dataTable.Rows[0]["cmRegistrationId"].ToString(),
|
|
dpUrl = !(string.IsNullOrEmpty(dpStr)) ? ApplicationConfig.GetRootURL() + "handler/docs.ashx?img=" + Convert.ToBase64String(fileInBytes) + "&userId=" + Convert.ToBase64String(userIdInBytes) + "&module=" + Convert.ToBase64String(moduleInBytes) : null,
|
|
yearlyLimit = Convert.ToString(dataTable.Rows[0]["yearlyLimit"])
|
|
};
|
|
|
|
jsonRx.ErrorCode = "0";
|
|
jsonRx.Msg = "success";
|
|
jsonRx.Data = ursDetail;
|
|
|
|
return jsonRx;
|
|
}
|
|
}
|
|
return jsonRx;
|
|
}
|
|
|
|
public bool ValidateAuthenticity(string user, string guid)
|
|
{
|
|
var dic = new Dictionary<string, string>
|
|
{
|
|
{ "@userName", _dao.FilterString(@user) },
|
|
{ "@accessCode", _dao.FilterString(guid) }
|
|
};
|
|
var sql = new Query("mobile_proc_userLogin", "ckeck-guid", dic).ToString();
|
|
|
|
Log.Debug(sql);
|
|
var res = _dao.ParseDbResult(sql);
|
|
if (res.ResponseCode.Equals(ErrorCode.Zero))
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public string GetDevice(string customerId)
|
|
{
|
|
var dic = new Dictionary<string, string>
|
|
{
|
|
{ "@customerId", _dao.FilterString(customerId) }
|
|
};
|
|
var sql = new Query("mobile_proc_userLogin", "get-device", dic).ToString();
|
|
|
|
Log.Debug(sql);
|
|
var res = _dao.ExecuteDataRow(sql);
|
|
return Convert.ToString(res["deviceId"]);
|
|
}
|
|
}
|
|
}
|