using System; using xCommons.Extensions; using xExceptions.Constants; using xIdentityModels.Navigations; using xMessageService.Models; namespace xIds.Providers { public partial class XIdentityManager { // #region Message Provider ... /// /// Generate and Prepare an XMessage Instance for /// User Invite Action /// /// specify destination language /// reciever email address /// invitation token /// return url for invitation user to redirect /// an instance of XMessage 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; } /// /// Generate and Prepare an XMessage Instance for /// New Device LoggedIn Action /// /// specify destination language /// reciever email address /// an instance of XDevice which represent user new Device /// an instance of XMessage 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; } /// /// Generate and Prepare an XMessage Instance for /// Verification Code Action /// /// specify destination language /// an string which points to a user email address or mobile number /// user verification code /// an instance of XMessage 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; } /// /// Generate and Prepare an XMessage Instance for /// Registration Approve Action /// /// specify destination language /// reciever email address /// a token which approved user action /// return url for redirect /// an instance of XMessage 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; } /// /// Generate and Prepare an XMessage Instance for /// Registration Finished Action /// /// specify destination language /// reciever email address /// return url for redirect /// an instance of XMessage 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; } /// /// Generate and Prepare an XMessage Instance for /// Password Changed Action /// /// specify destination language /// reciever email address /// return url for redirect /// specify throw exceptions on failure or not, default is true /// an instance of XMessage 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; } /// /// Generate and Prepare an XMessage Instance for /// Reset Password Action /// /// specify destination language /// reciever email address /// a token which approved user action /// return url for redirect /// an instance of XMessage 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 } }