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.
 
 
 

207 lines
7.4 KiB

using Common;
using Common.Helper;
using Common.Model;
using log4net;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using Repository.Authentication;
using System;
namespace Business.Authentication
{
public class AuthenticationBusiness : IAuthenticationBusiness
{
private readonly IAuthenticationRepo _requestAuth;
private static readonly ILog Log = LogManager.GetLogger(typeof(AuthenticationBusiness));
public AuthenticationBusiness(IAuthenticationRepo requestAuth)
{
this._requestAuth = requestAuth;
}
public JsonRxResponse IsMapAPIWithOtherApp(ClientRegistrationKeys credentials)
{
Log.DebugFormat("BusinessLogic.AuthenticationBL.IsMapAPIWithOtherApp | Requested parameters : {0}", JsonConvert.SerializeObject(credentials));
var encryptSecret = Utilities.EncryptString(credentials.secret);
var jsonRxResp = new JsonRxResponse();
credentials.secret = encryptSecret;
try
{
var dbResult = _requestAuth.IsMapAPIWithOtherApp(credentials);
if (dbResult.ResponseCode.Equals("0"))
{
jsonRxResp.SetResponse("0", dbResult.Msg, dbResult.Id, dbResult.Extra);
}
else
{
jsonRxResp.SetResponse("1", dbResult.Msg, null);
}
}
catch (Exception ex)
{
Log.Error("IsMapAPIWithOtherApp", ex);
jsonRxResp.SetResponse("1", "AuthenticationBL Failed", null);
}
return jsonRxResp;
}
/// <summary>
/// DbResult must return the id=@accessCode
/// </summary>
/// <param name="credentials"></param>
/// <returns></returns>
public LoginResponse LoginSystem(LoginCredential credentials)
{
try
{
var ls = _requestAuth.LoginSystem(credentials);
Log.Debug("LoginSystem | DB RESPONSE : " + JsonConvert.SerializeObject(ls));
return ls;
}
catch (Exception ex)
{
Log.Error("Login Fail due to execption", ex);
return null;
}
}
/// <summary>
/// check if the provided access code is valid or not
/// </summary>
/// <param name="credentials"></param>
/// <param name="user"></param>
/// <returns>returns the jsonResponse</returns>
/// <remarks>the out parameter must be set before exiting from the method</remarks>
public string IsAccessCodeValid(string accessCode, string uuid)
{
string scope = null;
try
{
scope = _requestAuth.IsAccessCodeValid(accessCode, uuid);
return scope;
}
catch (Exception ex)
{
return null;
}
}
public JsonRxResponse ReSendVerificationCode(VerificationKeys verification)
{
JsonRxResponse response = new JsonRxResponse { ErrorCode = "1", Msg = "Error", Data = "" };
try
{
var plainOTP = Utilities.GenerateRandomPin();
verification.verificationCode = Utilities.EncryptString(plainOTP);
DbResult dbResult = _requestAuth.ReSendVerificationCode(verification);
if (dbResult.ResponseCode.Equals("0"))
{
string msg = "";
switch (verification.codeType)
{
case "prc":
msg = "Password Recovery Code";
break;
case "dvc":
msg = "Device Verification Code";
break;
}
if (verification.userId.IsValidEmail())
{
if (!string.IsNullOrEmpty(msg))
{
SendEmailParameters _emailParams = new SendEmailParameters()
{
ToEmails = verification.userId,
MsgSubject = msg,
MsgBody = "Verification Code : " + plainOTP
};
//Task.Run(() => _requestComponent.SendEmail(_emailParams));
}
LogicalThreadContext.Properties["email"] = verification.userId;
}
else if (verification.userId.IsValidMsisdn())
{
//SmsParameters _smsParams = new SmsParameters()
//{
// userId = "",
// scheduleType = "0",
// subject = msg,
// message = "Verification Code : " + plainOTP,
// callBackUrl = "",
// todayDate = "",
// sendDate = "",
// mobileNumber = "",
// receiverId = verification.userId + "^" + verification.userId
//};
//ApiCall.SendSmsAsync(_smsParams);
LogicalThreadContext.Properties["MSISDN"] = verification.userId;
}
Log.DebugFormat("BusinessLogic.RegisterBL.ResendVerificationCode | Requested parameters : {0}", JsonConvert.SerializeObject(verification));
JObject res = new JObject();
if (verification.codeType == "dvc")
{
res["verificationCode"] = plainOTP;
}
else if (verification.codeType == "prc")
{
res["forgetCode"] = plainOTP;
}
response = new JsonRxResponse { ErrorCode = "0", Msg = "Successfully sent verification code", Data = res };
}
}
catch (Exception ex)
{
}
return response;
}
public JsonRxResponse GetUser(string userId)
{
try
{
JsonRxResponse res = _requestAuth.GetUser(userId);
return res;
}
catch (Exception ex)
{
Log.Error("Error occured while retriving user information.", ex);
return null;
}
}
public bool ValidateAuthenticity(string user, string guid)
{
try
{
bool res = _requestAuth.ValidateAuthenticity(user, guid);
return res;
}
catch (Exception ex)
{
Log.Error("Error occured while retriving user information.", ex);
return false;
}
}
public string GetDevice(string customerId)
{
try
{
string res = _requestAuth.GetDevice(customerId);
return res;
}
catch (Exception ex)
{
Log.Error("Error occured while retriving user information.", ex);
return "";
}
}
}
}