341 lines
11 KiB
C#
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
|
|
}
|
|
} |