Files
xSaherElmIds/Providers/XIdentityManager/XIdentityManager+MessageProvider.cs
T
2026-03-22 14:08:25 +03:30

341 lines
11 KiB
C#

using System;
using xCommons.Extensions;
using xExceptions.Constants;
using xIdentityModels.Navigations;
using xMessageService.Models;
namespace xIds.Providers
{
public partial class XIdentityManager
{
//
#region Message Provider ...
/// <summary>
/// Generate and Prepare an XMessage Instance for
/// User Invite Action
/// </summary>
/// <param name="lang">specify destination language</param>
/// <param name="emailAddress">reciever email address</param>
/// <param name="inviteToken">invitation token</param>
/// <param name="returnUrl">return url for invitation user to redirect</param>
/// <returns>an instance of <see>XMessage</see></returns>
private XMessage GetUserInviteMessage(
string lang,
string emailAddress,
string inviteToken,
string returnUrl
)
{
//
ValidationProvider
.NotEmpty(lang, emailAddress, inviteToken, returnUrl);
ValidationProvider
.EmailAddress(emailAddress);
ValidationProvider
.Url(returnUrl);
//
HandleMessageProviderPreperation(lang);
//
var msgStr = IdentityMessageProvider.InviteMsg +
Environment.NewLine +
returnUrl +
"?t=" +
inviteToken;
//
var message = new XMessage
{
Message = msgStr,
};
message.Recievers.Add(emailAddress);
//
return message;
}
/// <summary>
/// Generate and Prepare an XMessage Instance for
/// New Device LoggedIn Action
/// </summary>
/// <param name="lang">specify destination language</param>
/// <param name="emailAddress">reciever email address</param>
/// <param name="device">an instance of <see>XDevice</see> which represent user new Device</param>
/// <returns>an instance of <see>XMessage</see></returns>
private XMessage GetUserNewDeviceLoggedInMessage(
string lang,
string emailAddress,
XDevice device
)
{
//
ValidationProvider
.NotEmpty(lang, emailAddress);
ValidationProvider
.EmailAddress(emailAddress);
ValidationProvider
.NotNull(device);
//
HandleMessageProviderPreperation(lang);
//
// Generate Specific Message ...
var msgStr = IdentityMessageProvider.NewDeviceLoggedInMsg +
Environment.NewLine +
nameof(XDevice.Os) + ": " + device.Os +
Environment.NewLine +
nameof(XDevice.OsVersion) + ": " + device.OsVersion +
Environment.NewLine +
nameof(XDevice.Browser) + ": " + device.Browser +
Environment.NewLine +
nameof(XDevice.UserAgent) + ": " + device.UserAgent;
//
// Create XMessage Instance ...
var message = new XMessage
{
Message = msgStr,
};
message.Recievers.Add(emailAddress);
//
return message;
}
/// <summary>
/// Generate and Prepare an XMessage Instance for
/// Verification Code Action
/// </summary>
/// <param name="lang">specify destination language</param>
/// <param name="mobileNumberOrEmail">an string which points to a user email address or mobile number</param>
/// <param name="verificationCode">user verification code</param>
/// <returns>an instance of <see>XMessage</see></returns>
private XMessage GetVerificationCodeMessage(
string lang,
string mobileNumberOrEmail,
string verificationCode
)
{
//
ValidationProvider
.NotEmpty(lang, mobileNumberOrEmail, verificationCode);
//
HandleMessageProviderPreperation(lang);
//
mobileNumberOrEmail = mobileNumberOrEmail.ToNormalString();
//
// Validate Mobile or Email ...
var isValidEmail = mobileNumberOrEmail.IsValidEmail();
var isValidMobileNumber = mobileNumberOrEmail.IsValidMobileNumber();
if (!isValidEmail &&
!isValidMobileNumber)
{
XException.InvalidData.Throw();
}
//
// Prepare Message String ...
var msgStr = IdentityMessageProvider.VerificationCodeMsg +
Environment.NewLine +
verificationCode;
//
// Create XMessage Instance ...
var message = new XMessage
{
Message = msgStr,
};
message.Recievers.Add(mobileNumberOrEmail);
//
return message;
}
/// <summary>
/// Generate and Prepare an XMessage Instance for
/// Registration Approve Action
/// </summary>
/// <param name="lang">specify destination language</param>
/// <param name="emailAddress">reciever email address</param>
/// <param name="actionToken">a token which approved user action</param>
/// <param name="returnUrl">return url for redirect</param>
/// <returns>an instance of <see>XMessage</see></returns>
private XMessage GetRegistrationConfirmMessage(
string lang,
string emailAddress,
string actionToken,
string returnUrl
)
{
//
ValidationProvider
.NotEmpty(lang, emailAddress, actionToken, returnUrl);
ValidationProvider
.EmailAddress(emailAddress);
ValidationProvider
.Url(returnUrl);
//
HandleMessageProviderPreperation(lang);
//
// Prepare Message Str ...
var msgStr = IdentityMessageProvider.RegistrationApproveMsg +
Environment.NewLine +
returnUrl +
"?t=" +
actionToken;
//
var message = new XMessage
{
Message = msgStr,
};
message.Recievers.Add(emailAddress);
//
return message;
}
/// <summary>
/// Generate and Prepare an XMessage Instance for
/// Registration Finished Action
/// </summary>
/// <param name="lang">specify destination language</param>
/// <param name="emailAddress">reciever email address</param>
/// <param name="returnUrl">return url for redirect</param>
/// <returns>an instance of <see>XMessage</see></returns>
private XMessage GetRegistrationFinishedMessage(
string lang,
string emailAddress,
string returnUrl
)
{
//
ValidationProvider
.NotEmpty(lang, emailAddress, returnUrl);
ValidationProvider
.EmailAddress(emailAddress);
ValidationProvider
.Url(returnUrl);
//
HandleMessageProviderPreperation(lang);
//
var msgStr = IdentityMessageProvider.RegisteredMsg +
Environment.NewLine +
returnUrl;
//
var message = new XMessage
{
Message = msgStr,
};
message.Recievers.Add(emailAddress);
//
return message;
}
/// <summary>
/// Generate and Prepare an XMessage Instance for
/// Password Changed Action
/// </summary>
/// <param name="lang">specify destination language</param>
/// <param name="emailAddress">reciever email address</param>
/// <param name="returnUrl">return url for redirect</param>
/// <param name="throwException">specify throw exceptions on failure or not, default is true</param>
/// <returns>an instance of <see>XMessage</see></returns>
private XMessage GetPasswordChangedMessage(
string lang,
string emailAddress,
string returnUrl,
bool throwException = true
)
{
//
if (throwException)
{
ValidationProvider
.NotEmpty(lang, emailAddress, returnUrl);
ValidationProvider
.EmailAddress(emailAddress);
ValidationProvider
.Url(returnUrl);
}
//
HandleMessageProviderPreperation(lang);
//
var msgStr = IdentityMessageProvider.PasswordChangedMsg +
(returnUrl.IsNullOrEmpty() ?
"" :
Environment.NewLine +
returnUrl);
//
var message = new XMessage
{
Message = msgStr,
};
message.Recievers.Add(emailAddress);
//
return message;
}
/// <summary>
/// Generate and Prepare an XMessage Instance for
/// Reset Password Action
/// </summary>
/// <param name="lang">specify destination language</param>
/// <param name="emailAddress">reciever email address</param>
/// <param name="actionToken">a token which approved user action</param>
/// <param name="returnUrl">return url for redirect</param>
/// <returns>an instance of <see>XMessage</see></returns>
private XMessage GetResetPasswordMessage(
string lang,
string emailAddress,
string actionToken,
string returnUrl
)
{
//
ValidationProvider
.NotEmpty(lang, emailAddress, actionToken, returnUrl);
ValidationProvider
.EmailAddress(emailAddress);
ValidationProvider
.Url(returnUrl);
//
HandleMessageProviderPreperation(lang);
//
// Prepare Message Str ...
var msgStr = IdentityMessageProvider.ChangePasswordMsg +
Environment.NewLine +
returnUrl +
"?t=" +
actionToken;
//
var message = new XMessage
{
Message = msgStr,
};
message.Recievers.Add(emailAddress);
//
return message;
}
#endregion
}
}