password reset workflow changed
This commit is contained in:
parent
2f1e740d5a
commit
410b15c2c4
36 changed files with 1229 additions and 255 deletions
|
@ -10045,6 +10045,114 @@ ELSE
|
||||||
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordResetSMSBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetLetter' AND [PropertyName]= N'PasswordResetLinkSmsBody'
|
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordResetSMSBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetLetter' AND [PropertyName]= N'PasswordResetLinkSmsBody'
|
||||||
GO
|
GO
|
||||||
|
|
||||||
|
-- USER PASSWORD RESET EMAIL PINCODE TEMPLATE
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'From' )
|
||||||
|
BEGIN
|
||||||
|
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetPincodeLetter', N'From', N'support@HostingCompany.com')
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
DECLARE @UserPasswordResetPincodeLetterHtmlBody nvarchar(2500)
|
||||||
|
|
||||||
|
Set @UserPasswordResetPincodeLetterHtmlBody = N'<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>Password reset notification</title>
|
||||||
|
<style type="text/css">
|
||||||
|
.Summary { background-color: ##ffffff; padding: 5px; }
|
||||||
|
.Summary .Header { padding: 10px 0px 10px 10px; font-size: 16pt; background-color: ##E5F2FF; color: ##1F4978; border-bottom: solid 2px ##86B9F7; }
|
||||||
|
.Summary A { color: ##0153A4; }
|
||||||
|
.Summary { font-family: Tahoma; font-size: 9pt; }
|
||||||
|
.Summary H1 { font-size: 1.7em; color: ##1F4978; border-bottom: dotted 3px ##efefef; }
|
||||||
|
.Summary H2 { font-size: 1.3em; color: ##1F4978; }
|
||||||
|
.Summary TABLE { border: solid 1px ##e5e5e5; }
|
||||||
|
.Summary TH,
|
||||||
|
.Summary TD.Label { padding: 5px; font-size: 8pt; font-weight: bold; background-color: ##f5f5f5; }
|
||||||
|
.Summary TD { padding: 8px; font-size: 9pt; }
|
||||||
|
.Summary UL LI { font-size: 1.1em; font-weight: bold; }
|
||||||
|
.Summary UL UL LI { font-size: 0.9em; font-weight: normal; }
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="Summary">
|
||||||
|
<div class="Header">
|
||||||
|
<img src="#logoUrl#">
|
||||||
|
</div>
|
||||||
|
<h1>Password reset notification</h1>
|
||||||
|
|
||||||
|
<ad:if test="#user#">
|
||||||
|
<p>
|
||||||
|
Hello #user.FirstName#,
|
||||||
|
</p>
|
||||||
|
</ad:if>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
We received a request to reset the password for your account. Your password reset pincode:
|
||||||
|
</p>
|
||||||
|
|
||||||
|
#passwordResetPincode#
|
||||||
|
|
||||||
|
<p>
|
||||||
|
If you have any questions regarding your hosting account, feel free to contact our support department at any time.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
Best regards
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>';
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'HtmlBody' )
|
||||||
|
BEGIN
|
||||||
|
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetPincodeLetter', N'HtmlBody', @UserPasswordResetPincodeLetterHtmlBody)
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordResetPincodeLetterHtmlBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'HtmlBody'
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'Priority' )
|
||||||
|
BEGIN
|
||||||
|
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetPincodeLetter', N'Priority', N'Normal')
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'Subject' )
|
||||||
|
BEGIN
|
||||||
|
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetPincodeLetter', N'Subject', N'Password reset notification')
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'LogoUrl' )
|
||||||
|
BEGIN
|
||||||
|
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetPincodeLetter', N'LogoUrl', N'https://controlpanel.virtuworks.net/App_Themes/Default/Images/logo.png')
|
||||||
|
END
|
||||||
|
GO
|
||||||
|
|
||||||
|
|
||||||
|
DECLARE @UserPasswordResetPincodeLetterTextBody nvarchar(2500)
|
||||||
|
|
||||||
|
Set @UserPasswordResetPincodeLetterTextBody = N'=========================================
|
||||||
|
Password reset notification
|
||||||
|
=========================================
|
||||||
|
|
||||||
|
<ad:if test="#user#">
|
||||||
|
Hello #user.FirstName#,
|
||||||
|
</ad:if>
|
||||||
|
|
||||||
|
We received a request to reset the password for your account. Your password reset pincode:
|
||||||
|
|
||||||
|
#passwordResetPincode#
|
||||||
|
|
||||||
|
If you have any questions regarding your hosting account, feel free to contact our support department at any time.
|
||||||
|
|
||||||
|
Best regards'
|
||||||
|
|
||||||
|
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'TextBody' )
|
||||||
|
BEGIN
|
||||||
|
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetPincodeLetter', N'TextBody', @UserPasswordResetPincodeLetterTextBody)
|
||||||
|
END
|
||||||
|
ELSE
|
||||||
|
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordResetPincodeLetterTextBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'TextBody'
|
||||||
|
GO
|
||||||
|
|
||||||
DECLARE @UserPasswordPincodeSMSBody nvarchar(2500)
|
DECLARE @UserPasswordPincodeSMSBody nvarchar(2500)
|
||||||
|
|
||||||
|
@ -10052,12 +10160,12 @@ Set @UserPasswordPincodeSMSBody = N'
|
||||||
Your password reset pincode:
|
Your password reset pincode:
|
||||||
#passwordResetPincode#'
|
#passwordResetPincode#'
|
||||||
|
|
||||||
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetLetter' AND [PropertyName]= N'PasswordResetPincodeSmsBody' )
|
IF NOT EXISTS (SELECT * FROM [dbo].[UserSettings] WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'PasswordResetPincodeSmsBody' )
|
||||||
BEGIN
|
BEGIN
|
||||||
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetLetter', N'PasswordResetPincodeSmsBody', @UserPasswordPincodeSMSBody)
|
INSERT [dbo].[UserSettings] ([UserID], [SettingsName], [PropertyName], [PropertyValue]) VALUES (1, N'UserPasswordResetPincodeLetter', N'PasswordResetPincodeSmsBody', @UserPasswordPincodeSMSBody)
|
||||||
END
|
END
|
||||||
ELSE
|
ELSE
|
||||||
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordPincodeSMSBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetLetter' AND [PropertyName]= N'PasswordResetPincodeSmsBody'
|
UPDATE [dbo].[UserSettings] SET [PropertyValue] = @UserPasswordPincodeSMSBody WHERE [UserID] = 1 AND [SettingsName]= N'UserPasswordResetPincodeLetter' AND [PropertyName]= N'PasswordResetPincodeSmsBody'
|
||||||
GO
|
GO
|
||||||
|
|
||||||
-- Exchange setup EMAIL TEMPLATE
|
-- Exchange setup EMAIL TEMPLATE
|
||||||
|
|
|
@ -67,6 +67,7 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
public const string RDS_POLICY = "RdsPolicy";
|
public const string RDS_POLICY = "RdsPolicy";
|
||||||
public const string USER_PASSWORD_EXPIRATION_LETTER = "UserPasswordExpirationLetter";
|
public const string USER_PASSWORD_EXPIRATION_LETTER = "UserPasswordExpirationLetter";
|
||||||
public const string USER_PASSWORD_RESET_LETTER = "UserPasswordResetLetter";
|
public const string USER_PASSWORD_RESET_LETTER = "UserPasswordResetLetter";
|
||||||
|
public const string USER_PASSWORD_RESET_PINCODE_LETTER = "UserPasswordResetPincodeLetter";
|
||||||
public const string HOSTED_ORGANIZATION_PASSWORD_POLICY = "MailboxPasswordPolicy";
|
public const string HOSTED_ORGANIZATION_PASSWORD_POLICY = "MailboxPasswordPolicy";
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
// This source code was auto-generated by wsdl, Version=2.0.50727.3038.
|
// This source code was auto-generated by wsdl, Version=2.0.50727.3038.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
|
using WebsitePanel.EnterpriseServer.Base.HostedSolution;
|
||||||
using WebsitePanel.Providers;
|
using WebsitePanel.Providers;
|
||||||
using WebsitePanel.Providers.Common;
|
using WebsitePanel.Providers.Common;
|
||||||
|
@ -36,6 +37,10 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
[System.Xml.Serialization.XmlIncludeAttribute(typeof(ServiceProviderItem))]
|
[System.Xml.Serialization.XmlIncludeAttribute(typeof(ServiceProviderItem))]
|
||||||
public partial class esOrganizations : Microsoft.Web.Services3.WebServicesClientProtocol {
|
public partial class esOrganizations : Microsoft.Web.Services3.WebServicesClientProtocol {
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback AddSupportServiceLevelOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback GetSupportServiceLevelOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback CheckPhoneNumberIsInUseOperationCompleted;
|
private System.Threading.SendOrPostCallback CheckPhoneNumberIsInUseOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback DeletePasswordresetAccessTokenOperationCompleted;
|
private System.Threading.SendOrPostCallback DeletePasswordresetAccessTokenOperationCompleted;
|
||||||
|
@ -86,6 +91,8 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback SendResetUserPasswordPincodeSmsOperationCompleted;
|
private System.Threading.SendOrPostCallback SendResetUserPasswordPincodeSmsOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback SendResetUserPasswordPincodeEmailOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback AddOrganizationDomainOperationCompleted;
|
private System.Threading.SendOrPostCallback AddOrganizationDomainOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback ChangeOrganizationDomainTypeOperationCompleted;
|
private System.Threading.SendOrPostCallback ChangeOrganizationDomainTypeOperationCompleted;
|
||||||
|
@ -128,6 +135,8 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback SendResetUserPasswordEmailOperationCompleted;
|
private System.Threading.SendOrPostCallback SendResetUserPasswordEmailOperationCompleted;
|
||||||
|
|
||||||
|
private System.Threading.SendOrPostCallback CreatePasswordResetAccessTokenOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback CreateSecurityGroupOperationCompleted;
|
private System.Threading.SendOrPostCallback CreateSecurityGroupOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback GetSecurityGroupGeneralSettingsOperationCompleted;
|
private System.Threading.SendOrPostCallback GetSecurityGroupGeneralSettingsOperationCompleted;
|
||||||
|
@ -160,15 +169,17 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback DeleteSupportServiceLevelOperationCompleted;
|
private System.Threading.SendOrPostCallback DeleteSupportServiceLevelOperationCompleted;
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback AddSupportServiceLevelOperationCompleted;
|
|
||||||
|
|
||||||
private System.Threading.SendOrPostCallback GetSupportServiceLevelOperationCompleted;
|
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public esOrganizations() {
|
public esOrganizations() {
|
||||||
this.Url = "http://localhost:9002/esOrganizations.asmx";
|
this.Url = "http://localhost:9002/esOrganizations.asmx";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event AddSupportServiceLevelCompletedEventHandler AddSupportServiceLevelCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event GetSupportServiceLevelCompletedEventHandler GetSupportServiceLevelCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event CheckPhoneNumberIsInUseCompletedEventHandler CheckPhoneNumberIsInUseCompleted;
|
public event CheckPhoneNumberIsInUseCompletedEventHandler CheckPhoneNumberIsInUseCompleted;
|
||||||
|
|
||||||
|
@ -244,6 +255,9 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event SendResetUserPasswordPincodeSmsCompletedEventHandler SendResetUserPasswordPincodeSmsCompleted;
|
public event SendResetUserPasswordPincodeSmsCompletedEventHandler SendResetUserPasswordPincodeSmsCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event SendResetUserPasswordPincodeEmailCompletedEventHandler SendResetUserPasswordPincodeEmailCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event AddOrganizationDomainCompletedEventHandler AddOrganizationDomainCompleted;
|
public event AddOrganizationDomainCompletedEventHandler AddOrganizationDomainCompleted;
|
||||||
|
|
||||||
|
@ -307,6 +321,9 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event SendResetUserPasswordEmailCompletedEventHandler SendResetUserPasswordEmailCompleted;
|
public event SendResetUserPasswordEmailCompletedEventHandler SendResetUserPasswordEmailCompleted;
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public event CreatePasswordResetAccessTokenCompletedEventHandler CreatePasswordResetAccessTokenCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event CreateSecurityGroupCompletedEventHandler CreateSecurityGroupCompleted;
|
public event CreateSecurityGroupCompletedEventHandler CreateSecurityGroupCompleted;
|
||||||
|
|
||||||
|
@ -356,10 +373,89 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
public event DeleteSupportServiceLevelCompletedEventHandler DeleteSupportServiceLevelCompleted;
|
public event DeleteSupportServiceLevelCompletedEventHandler DeleteSupportServiceLevelCompleted;
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event AddSupportServiceLevelCompletedEventHandler AddSupportServiceLevelCompleted;
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/AddSupportServiceLevel", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public int AddSupportServiceLevel(string levelName, string levelDescription) {
|
||||||
|
object[] results = this.Invoke("AddSupportServiceLevel", new object[] {
|
||||||
|
levelName,
|
||||||
|
levelDescription});
|
||||||
|
return ((int)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public event GetSupportServiceLevelCompletedEventHandler GetSupportServiceLevelCompleted;
|
public System.IAsyncResult BeginAddSupportServiceLevel(string levelName, string levelDescription, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("AddSupportServiceLevel", new object[] {
|
||||||
|
levelName,
|
||||||
|
levelDescription}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public int EndAddSupportServiceLevel(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((int)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void AddSupportServiceLevelAsync(string levelName, string levelDescription) {
|
||||||
|
this.AddSupportServiceLevelAsync(levelName, levelDescription, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void AddSupportServiceLevelAsync(string levelName, string levelDescription, object userState) {
|
||||||
|
if ((this.AddSupportServiceLevelOperationCompleted == null)) {
|
||||||
|
this.AddSupportServiceLevelOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddSupportServiceLevelOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("AddSupportServiceLevel", new object[] {
|
||||||
|
levelName,
|
||||||
|
levelDescription}, this.AddSupportServiceLevelOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnAddSupportServiceLevelOperationCompleted(object arg) {
|
||||||
|
if ((this.AddSupportServiceLevelCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.AddSupportServiceLevelCompleted(this, new AddSupportServiceLevelCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetSupportServiceLevel", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public ServiceLevel GetSupportServiceLevel(int levelID) {
|
||||||
|
object[] results = this.Invoke("GetSupportServiceLevel", new object[] {
|
||||||
|
levelID});
|
||||||
|
return ((ServiceLevel)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginGetSupportServiceLevel(int levelID, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("GetSupportServiceLevel", new object[] {
|
||||||
|
levelID}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ServiceLevel EndGetSupportServiceLevel(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((ServiceLevel)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetSupportServiceLevelAsync(int levelID) {
|
||||||
|
this.GetSupportServiceLevelAsync(levelID, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void GetSupportServiceLevelAsync(int levelID, object userState) {
|
||||||
|
if ((this.GetSupportServiceLevelOperationCompleted == null)) {
|
||||||
|
this.GetSupportServiceLevelOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetSupportServiceLevelOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("GetSupportServiceLevel", new object[] {
|
||||||
|
levelID}, this.GetSupportServiceLevelOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnGetSupportServiceLevelOperationCompleted(object arg) {
|
||||||
|
if ((this.GetSupportServiceLevelCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.GetSupportServiceLevelCompleted(this, new GetSupportServiceLevelCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CheckPhoneNumberIsInUse", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CheckPhoneNumberIsInUse", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
@ -1463,6 +1559,50 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/SendResetUserPasswordPincodeEmail", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public ResultObject SendResetUserPasswordPincodeEmail(System.Guid token, string mailTo) {
|
||||||
|
object[] results = this.Invoke("SendResetUserPasswordPincodeEmail", new object[] {
|
||||||
|
token,
|
||||||
|
mailTo});
|
||||||
|
return ((ResultObject)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginSendResetUserPasswordPincodeEmail(System.Guid token, string mailTo, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("SendResetUserPasswordPincodeEmail", new object[] {
|
||||||
|
token,
|
||||||
|
mailTo}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ResultObject EndSendResetUserPasswordPincodeEmail(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((ResultObject)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SendResetUserPasswordPincodeEmailAsync(System.Guid token, string mailTo) {
|
||||||
|
this.SendResetUserPasswordPincodeEmailAsync(token, mailTo, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void SendResetUserPasswordPincodeEmailAsync(System.Guid token, string mailTo, object userState) {
|
||||||
|
if ((this.SendResetUserPasswordPincodeEmailOperationCompleted == null)) {
|
||||||
|
this.SendResetUserPasswordPincodeEmailOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSendResetUserPasswordPincodeEmailOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("SendResetUserPasswordPincodeEmail", new object[] {
|
||||||
|
token,
|
||||||
|
mailTo}, this.SendResetUserPasswordPincodeEmailOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnSendResetUserPasswordPincodeEmailOperationCompleted(object arg) {
|
||||||
|
if ((this.SendResetUserPasswordPincodeEmailCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.SendResetUserPasswordPincodeEmailCompleted(this, new SendResetUserPasswordPincodeEmailCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/AddOrganizationDomain", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/AddOrganizationDomain", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
public int AddOrganizationDomain(int itemId, string domainName) {
|
public int AddOrganizationDomain(int itemId, string domainName) {
|
||||||
|
@ -2697,6 +2837,50 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CreatePasswordResetAccessToken", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
|
public AccessToken CreatePasswordResetAccessToken(int itemId, int accountId) {
|
||||||
|
object[] results = this.Invoke("CreatePasswordResetAccessToken", new object[] {
|
||||||
|
itemId,
|
||||||
|
accountId});
|
||||||
|
return ((AccessToken)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public System.IAsyncResult BeginCreatePasswordResetAccessToken(int itemId, int accountId, System.AsyncCallback callback, object asyncState) {
|
||||||
|
return this.BeginInvoke("CreatePasswordResetAccessToken", new object[] {
|
||||||
|
itemId,
|
||||||
|
accountId}, callback, asyncState);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public AccessToken EndCreatePasswordResetAccessToken(System.IAsyncResult asyncResult) {
|
||||||
|
object[] results = this.EndInvoke(asyncResult);
|
||||||
|
return ((AccessToken)(results[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void CreatePasswordResetAccessTokenAsync(int itemId, int accountId) {
|
||||||
|
this.CreatePasswordResetAccessTokenAsync(itemId, accountId, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public void CreatePasswordResetAccessTokenAsync(int itemId, int accountId, object userState) {
|
||||||
|
if ((this.CreatePasswordResetAccessTokenOperationCompleted == null)) {
|
||||||
|
this.CreatePasswordResetAccessTokenOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreatePasswordResetAccessTokenOperationCompleted);
|
||||||
|
}
|
||||||
|
this.InvokeAsync("CreatePasswordResetAccessToken", new object[] {
|
||||||
|
itemId,
|
||||||
|
accountId}, this.CreatePasswordResetAccessTokenOperationCompleted, userState);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnCreatePasswordResetAccessTokenOperationCompleted(object arg) {
|
||||||
|
if ((this.CreatePasswordResetAccessTokenCompleted != null)) {
|
||||||
|
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
||||||
|
this.CreatePasswordResetAccessTokenCompleted(this, new CreatePasswordResetAccessTokenCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CreateSecurityGroup", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CreateSecurityGroup", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
||||||
public int CreateSecurityGroup(int itemId, string displayName) {
|
public int CreateSecurityGroup(int itemId, string displayName) {
|
||||||
|
@ -3419,97 +3603,64 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/AddSupportServiceLevel", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
|
||||||
public int AddSupportServiceLevel(string levelName, string levelDescription) {
|
|
||||||
object[] results = this.Invoke("AddSupportServiceLevel", new object[] {
|
|
||||||
levelName,
|
|
||||||
levelDescription});
|
|
||||||
return ((int)(results[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public System.IAsyncResult BeginAddSupportServiceLevel(string levelName, string levelDescription, System.AsyncCallback callback, object asyncState) {
|
|
||||||
return this.BeginInvoke("AddSupportServiceLevel", new object[] {
|
|
||||||
levelName,
|
|
||||||
levelDescription}, callback, asyncState);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public int EndAddSupportServiceLevel(System.IAsyncResult asyncResult) {
|
|
||||||
object[] results = this.EndInvoke(asyncResult);
|
|
||||||
return ((int)(results[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public void AddSupportServiceLevelAsync(string levelName, string levelDescription) {
|
|
||||||
this.AddSupportServiceLevelAsync(levelName, levelDescription, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public void AddSupportServiceLevelAsync(string levelName, string levelDescription, object userState) {
|
|
||||||
if ((this.AddSupportServiceLevelOperationCompleted == null)) {
|
|
||||||
this.AddSupportServiceLevelOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAddSupportServiceLevelOperationCompleted);
|
|
||||||
}
|
|
||||||
this.InvokeAsync("AddSupportServiceLevel", new object[] {
|
|
||||||
levelName,
|
|
||||||
levelDescription}, this.AddSupportServiceLevelOperationCompleted, userState);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnAddSupportServiceLevelOperationCompleted(object arg) {
|
|
||||||
if ((this.AddSupportServiceLevelCompleted != null)) {
|
|
||||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
|
||||||
this.AddSupportServiceLevelCompleted(this, new AddSupportServiceLevelCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetSupportServiceLevel", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
|
|
||||||
public ServiceLevel GetSupportServiceLevel(int levelID) {
|
|
||||||
object[] results = this.Invoke("GetSupportServiceLevel", new object[] {
|
|
||||||
levelID});
|
|
||||||
return ((ServiceLevel)(results[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public System.IAsyncResult BeginGetSupportServiceLevel(int levelID, System.AsyncCallback callback, object asyncState) {
|
|
||||||
return this.BeginInvoke("GetSupportServiceLevel", new object[] {
|
|
||||||
levelID}, callback, asyncState);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public ServiceLevel EndGetSupportServiceLevel(System.IAsyncResult asyncResult) {
|
|
||||||
object[] results = this.EndInvoke(asyncResult);
|
|
||||||
return ((ServiceLevel)(results[0]));
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public void GetSupportServiceLevelAsync(int levelID) {
|
|
||||||
this.GetSupportServiceLevelAsync(levelID, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public void GetSupportServiceLevelAsync(int levelID, object userState) {
|
|
||||||
if ((this.GetSupportServiceLevelOperationCompleted == null)) {
|
|
||||||
this.GetSupportServiceLevelOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetSupportServiceLevelOperationCompleted);
|
|
||||||
}
|
|
||||||
this.InvokeAsync("GetSupportServiceLevel", new object[] {
|
|
||||||
levelID}, this.GetSupportServiceLevelOperationCompleted, userState);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnGetSupportServiceLevelOperationCompleted(object arg) {
|
|
||||||
if ((this.GetSupportServiceLevelCompleted != null)) {
|
|
||||||
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
|
|
||||||
this.GetSupportServiceLevelCompleted(this, new GetSupportServiceLevelCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
public new void CancelAsync(object userState) {
|
public new void CancelAsync(object userState) {
|
||||||
base.CancelAsync(userState);
|
base.CancelAsync(userState);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void AddSupportServiceLevelCompletedEventHandler(object sender, AddSupportServiceLevelCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class AddSupportServiceLevelCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal AddSupportServiceLevelCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public int Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((int)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void GetSupportServiceLevelCompletedEventHandler(object sender, GetSupportServiceLevelCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class GetSupportServiceLevelCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal GetSupportServiceLevelCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ServiceLevel Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((ServiceLevel)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
public delegate void CheckPhoneNumberIsInUseCompletedEventHandler(object sender, CheckPhoneNumberIsInUseCompletedEventArgs e);
|
public delegate void CheckPhoneNumberIsInUseCompletedEventHandler(object sender, CheckPhoneNumberIsInUseCompletedEventArgs e);
|
||||||
|
@ -4050,6 +4201,32 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void SendResetUserPasswordPincodeEmailCompletedEventHandler(object sender, SendResetUserPasswordPincodeEmailCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class SendResetUserPasswordPincodeEmailCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal SendResetUserPasswordPincodeEmailCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public ResultObject Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((ResultObject)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
public delegate void AddOrganizationDomainCompletedEventHandler(object sender, AddOrganizationDomainCompletedEventArgs e);
|
public delegate void AddOrganizationDomainCompletedEventHandler(object sender, AddOrganizationDomainCompletedEventArgs e);
|
||||||
|
@ -4574,6 +4751,32 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
public delegate void SendResetUserPasswordEmailCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
public delegate void SendResetUserPasswordEmailCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
public delegate void CreatePasswordResetAccessTokenCompletedEventHandler(object sender, CreatePasswordResetAccessTokenCompletedEventArgs e);
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
|
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
||||||
|
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
||||||
|
public partial class CreatePasswordResetAccessTokenCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
||||||
|
|
||||||
|
private object[] results;
|
||||||
|
|
||||||
|
internal CreatePasswordResetAccessTokenCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
||||||
|
base(exception, cancelled, userState) {
|
||||||
|
this.results = results;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <remarks/>
|
||||||
|
public AccessToken Result {
|
||||||
|
get {
|
||||||
|
this.RaiseExceptionIfNecessary();
|
||||||
|
return ((AccessToken)(this.results[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
/// <remarks/>
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
||||||
public delegate void CreateSecurityGroupCompletedEventHandler(object sender, CreateSecurityGroupCompletedEventArgs e);
|
public delegate void CreateSecurityGroupCompletedEventHandler(object sender, CreateSecurityGroupCompletedEventArgs e);
|
||||||
|
@ -4923,56 +5126,4 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
|
||||||
public delegate void AddSupportServiceLevelCompletedEventHandler(object sender, AddSupportServiceLevelCompletedEventArgs e);
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
|
||||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
|
||||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
|
||||||
public partial class AddSupportServiceLevelCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
|
||||||
|
|
||||||
private object[] results;
|
|
||||||
|
|
||||||
internal AddSupportServiceLevelCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
|
||||||
base(exception, cancelled, userState) {
|
|
||||||
this.results = results;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public int Result {
|
|
||||||
get {
|
|
||||||
this.RaiseExceptionIfNecessary();
|
|
||||||
return ((int)(this.results[0]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
|
||||||
public delegate void GetSupportServiceLevelCompletedEventHandler(object sender, GetSupportServiceLevelCompletedEventArgs e);
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
|
|
||||||
[System.Diagnostics.DebuggerStepThroughAttribute()]
|
|
||||||
[System.ComponentModel.DesignerCategoryAttribute("code")]
|
|
||||||
public partial class GetSupportServiceLevelCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
|
|
||||||
|
|
||||||
private object[] results;
|
|
||||||
|
|
||||||
internal GetSupportServiceLevelCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
|
|
||||||
base(exception, cancelled, userState) {
|
|
||||||
this.results = results;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <remarks/>
|
|
||||||
public ServiceLevel Result {
|
|
||||||
get {
|
|
||||||
this.RaiseExceptionIfNecessary();
|
|
||||||
return ((ServiceLevel)(this.results[0]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1654,15 +1654,14 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
}
|
}
|
||||||
|
|
||||||
UserInfo owner = PackageController.GetPackageOwner(org.PackageId);
|
UserInfo owner = PackageController.GetPackageOwner(org.PackageId);
|
||||||
OrganizationUser user = OrganizationController.GetUserGeneralSettingsWithExtraData(accessToken.ItemId,
|
OrganizationUser user = OrganizationController.GetUserGeneralSettingsWithExtraData(accessToken.ItemId, accessToken.AccountId);
|
||||||
accessToken.AccountId);
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(phoneTo))
|
if (string.IsNullOrEmpty(phoneTo))
|
||||||
{
|
{
|
||||||
phoneTo = user.MobilePhone;
|
phoneTo = user.MobilePhone;
|
||||||
}
|
}
|
||||||
|
|
||||||
UserSettings settings = UserController.GetUserSettings(owner.UserId, UserSettings.USER_PASSWORD_RESET_LETTER);
|
UserSettings settings = UserController.GetUserSettings(owner.UserId, UserSettings.USER_PASSWORD_RESET_PINCODE_LETTER);
|
||||||
|
|
||||||
string body = settings["PasswordResetPincodeSmsBody"];
|
string body = settings["PasswordResetPincodeSmsBody"];
|
||||||
|
|
||||||
|
@ -1700,6 +1699,90 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ResultObject SendResetUserPasswordPincodeEmail(Guid token, string mailTo = null)
|
||||||
|
{
|
||||||
|
var result = TaskManager.StartResultTask<ResultObject>("ORGANIZATION", "SEND_USER_PASSWORD_RESET_EMAIL_PINCODE");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var accessToken = OrganizationController.GetAccessToken(token, AccessTokenTypes.PasswrodReset);
|
||||||
|
|
||||||
|
if (accessToken == null)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format("Access token not found"));
|
||||||
|
}
|
||||||
|
|
||||||
|
// load organization
|
||||||
|
Organization org = GetOrganization(accessToken.ItemId);
|
||||||
|
|
||||||
|
if (org == null)
|
||||||
|
{
|
||||||
|
throw new Exception(string.Format("Organization not found"));
|
||||||
|
}
|
||||||
|
|
||||||
|
UserInfo owner = PackageController.GetPackageOwner(org.PackageId);
|
||||||
|
OrganizationUser user = OrganizationController.GetUserGeneralSettingsWithExtraData(accessToken.ItemId, accessToken.AccountId);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(mailTo))
|
||||||
|
{
|
||||||
|
mailTo = user.PrimaryEmailAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
UserSettings settings = UserController.GetUserSettings(owner.UserId, UserSettings.USER_PASSWORD_RESET_PINCODE_LETTER);
|
||||||
|
|
||||||
|
var generalSettings = OrganizationController.GetOrganizationGeneralSettings(accessToken.ItemId);
|
||||||
|
|
||||||
|
var logoUrl = generalSettings != null ? generalSettings.OrganizationLogoUrl : string.Empty;
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(logoUrl))
|
||||||
|
{
|
||||||
|
logoUrl = settings["LogoUrl"];
|
||||||
|
}
|
||||||
|
|
||||||
|
string from = settings["From"];
|
||||||
|
|
||||||
|
string subject = settings["Subject"];
|
||||||
|
string body = owner.HtmlMail ? settings["HtmlBody"] : settings["TextBody"];
|
||||||
|
bool isHtml = owner.HtmlMail;
|
||||||
|
|
||||||
|
MailPriority priority = MailPriority.Normal;
|
||||||
|
|
||||||
|
if (!String.IsNullOrEmpty(settings["Priority"]))
|
||||||
|
{
|
||||||
|
priority = (MailPriority)Enum.Parse(typeof(MailPriority), settings["Priority"], true);
|
||||||
|
}
|
||||||
|
|
||||||
|
string pincode = GeneratePincode() ;
|
||||||
|
|
||||||
|
Hashtable items = new Hashtable();
|
||||||
|
|
||||||
|
items["user"] = user;
|
||||||
|
items["logoUrl"] = logoUrl;
|
||||||
|
items["passwordResetPincode"] = pincode;
|
||||||
|
|
||||||
|
body = PackageController.EvaluateTemplate(body, items);
|
||||||
|
|
||||||
|
SetAccessTokenResponse(token, pincode);
|
||||||
|
|
||||||
|
TaskManager.Write("Organization ID : " + user.ItemId);
|
||||||
|
TaskManager.Write("Account : " + user.DisplayName);
|
||||||
|
TaskManager.Write("MailTo : " + mailTo);
|
||||||
|
|
||||||
|
// send mail message
|
||||||
|
MailHelper.SendMessage(from, mailTo, null, subject, body, priority, isHtml);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
TaskManager.WriteError(ex);
|
||||||
|
TaskManager.CompleteResultTask(result);
|
||||||
|
result.AddError("", ex);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
TaskManager.CompleteResultTask();
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
private static string GeneratePincode()
|
private static string GeneratePincode()
|
||||||
{
|
{
|
||||||
var random = new Random(Guid.NewGuid().GetHashCode());
|
var random = new Random(Guid.NewGuid().GetHashCode());
|
||||||
|
@ -1894,6 +1977,20 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return resultUrl.ToString();
|
return resultUrl.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static AccessToken CreatePasswordResetAccessToken(int itemId, int accountId)
|
||||||
|
{
|
||||||
|
var settings = GetWebDavSystemSettings();
|
||||||
|
|
||||||
|
if (settings == null || !settings.GetValueOrDefault(SystemSettings.WEBDAV_PASSWORD_RESET_ENABLED_KEY, false))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
var hours = settings.GetValueOrDefault(SystemSettings.WEBDAV_PASSWORD_RESET_LINK_LIFE_SPAN, 1);
|
||||||
|
|
||||||
|
return CreateAccessToken(itemId, accountId, AccessTokenTypes.PasswrodReset, hours);
|
||||||
|
}
|
||||||
|
|
||||||
private static AccessToken CreateAccessToken(int itemId, int accountId, AccessTokenTypes type, int hours)
|
private static AccessToken CreateAccessToken(int itemId, int accountId, AccessTokenTypes type, int hours)
|
||||||
{
|
{
|
||||||
var token = new AccessToken
|
var token = new AccessToken
|
||||||
|
|
|
@ -204,6 +204,12 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
return OrganizationController.SendResetUserPasswordPincodeSms(token, phoneTo);
|
return OrganizationController.SendResetUserPasswordPincodeSms(token, phoneTo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public ResultObject SendResetUserPasswordPincodeEmail(Guid token, string mailTo = null)
|
||||||
|
{
|
||||||
|
return OrganizationController.SendResetUserPasswordPincodeEmail(token, mailTo);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -361,6 +367,12 @@ namespace WebsitePanel.EnterpriseServer
|
||||||
OrganizationController.SendResetUserPasswordEmail(itemId, accountId, reason, mailTo, finalStep);
|
OrganizationController.SendResetUserPasswordEmail(itemId, accountId, reason, mailTo, finalStep);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[WebMethod]
|
||||||
|
public AccessToken CreatePasswordResetAccessToken(int itemId, int accountId)
|
||||||
|
{
|
||||||
|
return OrganizationController.CreatePasswordResetAccessToken(itemId, accountId);
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region Security Groups
|
#region Security Groups
|
||||||
|
|
|
@ -75,6 +75,16 @@ namespace WebsitePanel.WebDav.Core.Config.Entities
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string AccountIdKey
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
SessionKeysElement sessionKey =
|
||||||
|
_sessionKeys.FirstOrDefault(x => x.Key == SessionKeysElement.AccountIdKey);
|
||||||
|
return sessionKey != null ? sessionKey.Value : null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public string ResourseRenderCount
|
public string ResourseRenderCount
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
|
|
@ -16,6 +16,7 @@ namespace WebsitePanel.WebDav.Core.Config.WebConfigSections
|
||||||
public const string ResourseRenderCountKey = "ResourseRenderCountSessionKey";
|
public const string ResourseRenderCountKey = "ResourseRenderCountSessionKey";
|
||||||
public const string ItemIdSessionKey = "ItemId";
|
public const string ItemIdSessionKey = "ItemId";
|
||||||
public const string OwaEditFoldersSessionKey = "OwaEditFoldersSession";
|
public const string OwaEditFoldersSessionKey = "OwaEditFoldersSession";
|
||||||
|
public const string AccountIdKey = "AccountIdKey";
|
||||||
|
|
||||||
[ConfigurationProperty(KeyKey, IsKey = true, IsRequired = true)]
|
[ConfigurationProperty(KeyKey, IsKey = true, IsRequired = true)]
|
||||||
public string Key
|
public string Key
|
||||||
|
|
|
@ -8,5 +8,15 @@
|
||||||
string result = source.Remove(index, target.Length).Insert(index, newValue);
|
string result = source.Remove(index, target.Length).Insert(index, newValue);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string Tail(this string source, int tailLength)
|
||||||
|
{
|
||||||
|
if (source == null || tailLength >= source.Length)
|
||||||
|
{
|
||||||
|
return source;
|
||||||
|
}
|
||||||
|
|
||||||
|
return source.Substring(source.Length - tailLength);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -25,21 +25,21 @@ namespace WebsitePanel.WebDavPortal
|
||||||
);
|
);
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: AccountRouteNames.PasswordResetEmail,
|
name: AccountRouteNames.PasswordResetLogin,
|
||||||
url: "account/password-reset/step-1",
|
url: "account/password-reset/step-1",
|
||||||
defaults: new { controller = "Account", action = "PasswordResetEmail" }
|
defaults: new { controller = "Account", action = "PasswordResetLogin" }
|
||||||
);
|
);
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: AccountRouteNames.PasswordResetSms,
|
name: AccountRouteNames.PasswordResetPincodeSendOptions,
|
||||||
url: "account/password-reset/step-2/{token}",
|
url: "account/password-reset/step-2/{token}",
|
||||||
defaults: new { controller = "Account", action = "PasswordResetSms" }
|
defaults: new { controller = "Account", action = "PasswordResetPincodeSendOptions" }
|
||||||
);
|
);
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
name: AccountRouteNames.PasswordResetSendSms,
|
name: AccountRouteNames.PasswordResetPincode,
|
||||||
url: "account/password-reset/send-new-sms/{token}",
|
url: "account/password-reset/step-3/{token}",
|
||||||
defaults: new { controller = "Account", action = "PasswordResetSendSms" }
|
defaults: new { controller = "Account", action = "PasswordResetPincode" }
|
||||||
);
|
);
|
||||||
|
|
||||||
routes.MapRoute(
|
routes.MapRoute(
|
||||||
|
|
|
@ -12,9 +12,9 @@ namespace WebsitePanel.WebDavPortal.UI.Routes
|
||||||
public const string UserProfile = "UserProfileRoute";
|
public const string UserProfile = "UserProfileRoute";
|
||||||
|
|
||||||
public const string PasswordChange = "PasswordChangeRoute";
|
public const string PasswordChange = "PasswordChangeRoute";
|
||||||
public const string PasswordResetEmail = "PasswordResetEmailRoute";
|
public const string PasswordResetLogin = "PasswordResetLoginRoute";
|
||||||
public const string PasswordResetSms = "PasswordResetSmsRoute";
|
public const string PasswordResetPincodeSendOptions = "PasswordResetPincodeSendOptionsRoute";
|
||||||
public const string PasswordResetSendSms = "PasswordResetSendSmsRoute";
|
public const string PasswordResetPincode = "PasswordResetPincodeRoute";
|
||||||
public const string PasswordResetFinalStep = "PasswordResetFinalStepRoute";
|
public const string PasswordResetFinalStep = "PasswordResetFinalStepRoute";
|
||||||
public const string PasswordResetSuccess = "PasswordResetSuccess";
|
public const string PasswordResetSuccess = "PasswordResetSuccess";
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ using WebsitePanel.WebDav.Core.Wsp.Framework;
|
||||||
using WebsitePanel.WebDavPortal.CustomAttributes;
|
using WebsitePanel.WebDavPortal.CustomAttributes;
|
||||||
using WebsitePanel.WebDavPortal.Models;
|
using WebsitePanel.WebDavPortal.Models;
|
||||||
using WebsitePanel.WebDavPortal.Models.Account;
|
using WebsitePanel.WebDavPortal.Models.Account;
|
||||||
|
using WebsitePanel.WebDavPortal.Models.Account.Enums;
|
||||||
using WebsitePanel.WebDavPortal.Models.Common;
|
using WebsitePanel.WebDavPortal.Models.Common;
|
||||||
using WebsitePanel.WebDavPortal.Models.Common.EditorTemplates;
|
using WebsitePanel.WebDavPortal.Models.Common.EditorTemplates;
|
||||||
using WebsitePanel.WebDavPortal.Models.Common.Enums;
|
using WebsitePanel.WebDavPortal.Models.Common.Enums;
|
||||||
|
@ -162,16 +163,16 @@ namespace WebsitePanel.WebDavPortal.Controllers
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public ActionResult PasswordResetEmail()
|
public ActionResult PasswordResetLogin()
|
||||||
{
|
{
|
||||||
var model = new PasswordResetEmailModel();
|
var model = new PasswordResetLoginModel();
|
||||||
|
|
||||||
return View(model);
|
return View(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public ActionResult PasswordResetEmail(PasswordResetEmailModel model)
|
public ActionResult PasswordResetLogin(PasswordResetLoginModel model)
|
||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
|
@ -187,17 +188,117 @@ namespace WebsitePanel.WebDavPortal.Controllers
|
||||||
return View(model);
|
return View(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
WspContext.Services.Organizations.SendResetUserPasswordEmail(exchangeAccount.ItemId, exchangeAccount.AccountId, Resources.Messages.PasswordResetUserReason, exchangeAccount.PrimaryEmailAddress, false);
|
var tokenEntity = WspContext.Services.Organizations.CreatePasswordResetAccessToken(exchangeAccount.ItemId, exchangeAccount.AccountId);
|
||||||
|
|
||||||
return View("PasswordResetEmailSent");
|
return RedirectToRoute(AccountRouteNames.PasswordResetPincodeSendOptions, new {token = tokenEntity.AccessTokenGuid.ToString("N")});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public ActionResult PasswordResetSms(Guid token)
|
public ActionResult PasswordResetPincodeSendOptions(Guid token)
|
||||||
{
|
{
|
||||||
var model = new PasswordResetSmsModel();
|
var accessToken = WspContext.Services.Organizations.GetPasswordresetAccessToken(token);
|
||||||
|
|
||||||
|
if (accessToken == null)
|
||||||
|
{
|
||||||
|
AddMessage(MessageType.Error, Resources.Messages.IncorrectPasswordResetUrl);
|
||||||
|
|
||||||
|
return RedirectToRoute(AccountRouteNames.PasswordResetLogin);
|
||||||
|
}
|
||||||
|
|
||||||
|
var user = WspContext.Services.Organizations.GetUserGeneralSettings(accessToken.ItemId, accessToken.AccountId);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(user.MobilePhone))
|
||||||
|
{
|
||||||
|
var result = WspContext.Services.Organizations.SendResetUserPasswordPincodeEmail(accessToken.AccessTokenGuid, user.PrimaryEmailAddress);
|
||||||
|
|
||||||
|
if (result.IsSuccess)
|
||||||
|
{
|
||||||
|
AddMessage(MessageType.Success, Resources.Messages.PincodeEmailWasSent);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AddMessage(MessageType.Error, Resources.Messages.PincodeEmailWasNotSent);
|
||||||
|
}
|
||||||
|
|
||||||
|
return RedirectToRoute(AccountRouteNames.PasswordResetPincode);
|
||||||
|
}
|
||||||
|
|
||||||
|
var model = new PasswordResetPincodeSendOptionsModel();
|
||||||
|
|
||||||
|
model.MobileNumber = user.MobilePhone;
|
||||||
|
model.Email = user.PrimaryEmailAddress;
|
||||||
|
|
||||||
|
return View(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
|
[AllowAnonymous]
|
||||||
|
public ActionResult PasswordResetPincodeSendOptions(Guid token, PasswordResetPincodeSendOptionsModel model)
|
||||||
|
{
|
||||||
|
if (!ModelState.IsValid)
|
||||||
|
{
|
||||||
|
return View(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
var accessToken = WspContext.Services.Organizations.GetPasswordresetAccessToken(token);
|
||||||
|
|
||||||
|
if (accessToken == null)
|
||||||
|
{
|
||||||
|
AddMessage(MessageType.Error, Resources.Messages.IncorrectPasswordResetUrl);
|
||||||
|
|
||||||
|
return RedirectToRoute(AccountRouteNames.PasswordResetLogin);
|
||||||
|
}
|
||||||
|
|
||||||
|
var user = WspContext.Services.Organizations.GetUserGeneralSettings(accessToken.ItemId, accessToken.AccountId);
|
||||||
|
|
||||||
|
switch (model.Method)
|
||||||
|
{
|
||||||
|
case PincodeSendMethod.Mobile:
|
||||||
|
{
|
||||||
|
var result = WspContext.Services.Organizations.SendResetUserPasswordPincodeSms(accessToken.AccessTokenGuid, user.MobilePhone);
|
||||||
|
|
||||||
|
if (result.IsSuccess)
|
||||||
|
{
|
||||||
|
AddMessage(MessageType.Success, Resources.Messages.SmsWasSent);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AddMessage(MessageType.Error, Resources.Messages.SmsWasNotSent);
|
||||||
|
|
||||||
|
return RedirectToRoute(AccountRouteNames.PasswordResetPincodeSendOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case PincodeSendMethod.Email:
|
||||||
|
{
|
||||||
|
var result = WspContext.Services.Organizations.SendResetUserPasswordPincodeEmail(accessToken.AccessTokenGuid, user.PrimaryEmailAddress);
|
||||||
|
|
||||||
|
if (result.IsSuccess)
|
||||||
|
{
|
||||||
|
AddMessage(MessageType.Success, Resources.Messages.PincodeEmailWasSent);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AddMessage(MessageType.Error, Resources.Messages.PincodeEmailWasNotSent);
|
||||||
|
|
||||||
|
return RedirectToRoute(AccountRouteNames.PasswordResetPincodeSendOptions);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return RedirectToRoute(AccountRouteNames.PasswordResetPincode);
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
[AllowAnonymous]
|
||||||
|
public ActionResult PasswordResetPincode(Guid token)
|
||||||
|
{
|
||||||
|
var model = new PasswordResetPincodeModel();
|
||||||
|
|
||||||
var accessToken = WspContext.Services.Organizations.GetPasswordresetAccessToken(token);
|
var accessToken = WspContext.Services.Organizations.GetPasswordresetAccessToken(token);
|
||||||
|
|
||||||
|
@ -207,25 +308,13 @@ namespace WebsitePanel.WebDavPortal.Controllers
|
||||||
{
|
{
|
||||||
AddMessage(MessageType.Error, Resources.Messages.IncorrectPasswordResetUrl);
|
AddMessage(MessageType.Error, Resources.Messages.IncorrectPasswordResetUrl);
|
||||||
|
|
||||||
return View(model);
|
return RedirectToRoute(AccountRouteNames.PasswordResetLogin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (accessToken != null && accessToken.IsSmsSent == false)
|
if (accessToken != null && accessToken.IsSmsSent == false)
|
||||||
{
|
{
|
||||||
var user = WspContext.Services.Organizations.GetUserGeneralSettings(accessToken.ItemId,
|
return RedirectToRoute(AccountRouteNames.PasswordResetPincodeSendOptions);
|
||||||
accessToken.AccountId);
|
|
||||||
|
|
||||||
var result = WspContext.Services.Organizations.SendResetUserPasswordPincodeSms(token, user.MobilePhone);
|
|
||||||
|
|
||||||
if (result.IsSuccess)
|
|
||||||
{
|
|
||||||
AddMessage(MessageType.Success, Resources.Messages.SmsWasSent);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AddMessage(MessageType.Error, Resources.Messages.SmsWasNotSent);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return View(model);
|
return View(model);
|
||||||
|
@ -233,7 +322,7 @@ namespace WebsitePanel.WebDavPortal.Controllers
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[AllowAnonymous]
|
[AllowAnonymous]
|
||||||
public ActionResult PasswordResetSms(Guid token, PasswordResetSmsModel model)
|
public ActionResult PasswordResetPincode(Guid token, PasswordResetPincodeModel model)
|
||||||
{
|
{
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
{
|
{
|
||||||
|
@ -313,35 +402,6 @@ namespace WebsitePanel.WebDavPortal.Controllers
|
||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet]
|
|
||||||
[AllowAnonymous]
|
|
||||||
public ActionResult PasswordResetSendSms(Guid token)
|
|
||||||
{
|
|
||||||
var accessToken = WspContext.Services.Organizations.GetPasswordresetAccessToken(token);
|
|
||||||
|
|
||||||
if (accessToken == null)
|
|
||||||
{
|
|
||||||
return RedirectToRoute(AccountRouteNames.PasswordResetSms);
|
|
||||||
}
|
|
||||||
|
|
||||||
var user = WspContext.Services.Organizations.GetUserGeneralSettings(accessToken.ItemId,
|
|
||||||
accessToken.AccountId);
|
|
||||||
|
|
||||||
var result = WspContext.Services.Organizations.SendResetUserPasswordPincodeSms(accessToken.AccessTokenGuid,
|
|
||||||
user.MobilePhone);
|
|
||||||
|
|
||||||
if (result.IsSuccess)
|
|
||||||
{
|
|
||||||
AddMessage(MessageType.Success, Resources.Messages.SmsWasSent);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
AddMessage(MessageType.Error, Resources.Messages.SmsWasNotSent);
|
|
||||||
}
|
|
||||||
|
|
||||||
return RedirectToRoute(AccountRouteNames.PasswordResetSms);
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Helpers
|
#region Helpers
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -362,7 +422,7 @@ namespace WebsitePanel.WebDavPortal.Controllers
|
||||||
{
|
{
|
||||||
AddMessage(MessageType.Error, Resources.Messages.IncorrectSmsResponse);
|
AddMessage(MessageType.Error, Resources.Messages.IncorrectSmsResponse);
|
||||||
|
|
||||||
return RedirectToRoute(AccountRouteNames.PasswordResetSms);
|
return RedirectToRoute(AccountRouteNames.PasswordResetPincode); //todo
|
||||||
}
|
}
|
||||||
|
|
||||||
var tokenEntity = WspContext.Services.Organizations.GetPasswordresetAccessToken(token);
|
var tokenEntity = WspContext.Services.Organizations.GetPasswordresetAccessToken(token);
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
namespace WebsitePanel.WebDavPortal.Models.Account.Enums
|
||||||
|
{
|
||||||
|
public enum PincodeSendMethod
|
||||||
|
{
|
||||||
|
Mobile,
|
||||||
|
Email
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ using WebsitePanel.WebDavPortal.Resources;
|
||||||
|
|
||||||
namespace WebsitePanel.WebDavPortal.Models.Account
|
namespace WebsitePanel.WebDavPortal.Models.Account
|
||||||
{
|
{
|
||||||
public class PasswordResetEmailModel
|
public class PasswordResetLoginModel
|
||||||
{
|
{
|
||||||
[Required]
|
[Required]
|
||||||
[Display(ResourceType = typeof(Resources.UI), Name = "Email")]
|
[Display(ResourceType = typeof(Resources.UI), Name = "Email")]
|
|
@ -3,7 +3,7 @@ using WebsitePanel.WebDavPortal.Models.Common;
|
||||||
|
|
||||||
namespace WebsitePanel.WebDavPortal.Models.Account
|
namespace WebsitePanel.WebDavPortal.Models.Account
|
||||||
{
|
{
|
||||||
public class PasswordResetSmsModel
|
public class PasswordResetPincodeModel
|
||||||
{
|
{
|
||||||
[Required]
|
[Required]
|
||||||
public string Sms { get; set; }
|
public string Sms { get; set; }
|
|
@ -0,0 +1,11 @@
|
||||||
|
using WebsitePanel.WebDavPortal.Models.Account.Enums;
|
||||||
|
|
||||||
|
namespace WebsitePanel.WebDavPortal.Models.Account
|
||||||
|
{
|
||||||
|
public class PasswordResetPincodeSendOptionsModel
|
||||||
|
{
|
||||||
|
public PincodeSendMethod Method { get; set; }
|
||||||
|
public string MobileNumber { get; set; }
|
||||||
|
public string Email { get; set; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -160,7 +160,7 @@ namespace WebsitePanel.WebDavPortal.Resources {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Please enter the verification code we sent to your phone. If you didn't receive a code, you can {0}..
|
/// Looks up a localized string similar to Please enter the verification code we sent to you. If you didn't receive a code, you can {0}..
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string PasswordResetSmsHintFormat {
|
public static string PasswordResetSmsHintFormat {
|
||||||
get {
|
get {
|
||||||
|
@ -213,6 +213,24 @@ namespace WebsitePanel.WebDavPortal.Resources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Pincode was not sent to your email address..
|
||||||
|
/// </summary>
|
||||||
|
public static string PincodeEmailWasNotSent {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("PincodeEmailWasNotSent", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Pincode was sent to your email address..
|
||||||
|
/// </summary>
|
||||||
|
public static string PincodeEmailWasSent {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("PincodeEmailWasSent", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to {0} field is required.
|
/// Looks up a localized string similar to {0} field is required.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -151,7 +151,7 @@
|
||||||
<value>A message was sent to your email address. Please check your email for further instructions.</value>
|
<value>A message was sent to your email address. Please check your email for further instructions.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordResetSmsHintFormat" xml:space="preserve">
|
<data name="PasswordResetSmsHintFormat" xml:space="preserve">
|
||||||
<value>Please enter the verification code we sent to your phone. If you didn't receive a code, you can {0}.</value>
|
<value>Please enter the verification code we sent to you. If you didn't receive a code, you can {0}.</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PasswordResetUserReason" xml:space="preserve">
|
<data name="PasswordResetUserReason" xml:space="preserve">
|
||||||
<value>Webdav portal user request.</value>
|
<value>Webdav portal user request.</value>
|
||||||
|
@ -168,6 +168,12 @@
|
||||||
<data name="PhoneNumberInvalid" xml:space="preserve">
|
<data name="PhoneNumberInvalid" xml:space="preserve">
|
||||||
<value>Phone number is invalid</value>
|
<value>Phone number is invalid</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="PincodeEmailWasNotSent" xml:space="preserve">
|
||||||
|
<value>Pincode was not sent to your email address.</value>
|
||||||
|
</data>
|
||||||
|
<data name="PincodeEmailWasSent" xml:space="preserve">
|
||||||
|
<value>Pincode was sent to your email address.</value>
|
||||||
|
</data>
|
||||||
<data name="Required" xml:space="preserve">
|
<data name="Required" xml:space="preserve">
|
||||||
<value>{0} field is required</value>
|
<value>{0} field is required</value>
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -699,6 +699,15 @@ namespace WebsitePanel.WebDavPortal.Resources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Pincode.
|
||||||
|
/// </summary>
|
||||||
|
public static string Pincode {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Pincode", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Please wait....
|
/// Looks up a localized string similar to Please wait....
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -807,6 +816,15 @@ namespace WebsitePanel.WebDavPortal.Resources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to Send.
|
||||||
|
/// </summary>
|
||||||
|
public static string Send {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("Send", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Send email.
|
/// Looks up a localized string similar to Send email.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -816,6 +834,15 @@ namespace WebsitePanel.WebDavPortal.Resources {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Looks up a localized string similar to When you click the send button below, a Password Reset PIN will be sent to your Cell Phone or Email Address..
|
||||||
|
/// </summary>
|
||||||
|
public static string SendPincodeTo {
|
||||||
|
get {
|
||||||
|
return ResourceManager.GetString("SendPincodeTo", resourceCulture);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Size.
|
/// Looks up a localized string similar to Size.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -411,4 +411,13 @@
|
||||||
<data name="YouRChangingPswForFormat" xml:space="preserve">
|
<data name="YouRChangingPswForFormat" xml:space="preserve">
|
||||||
<value>You are changing password for '{0}' account.</value>
|
<value>You are changing password for '{0}' account.</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Pincode" xml:space="preserve">
|
||||||
|
<value>Pincode</value>
|
||||||
|
</data>
|
||||||
|
<data name="Send" xml:space="preserve">
|
||||||
|
<value>Send</value>
|
||||||
|
</data>
|
||||||
|
<data name="SendPincodeTo" xml:space="preserve">
|
||||||
|
<value>When you click the send button below, a Password Reset PIN will be sent to your Cell Phone or Email Address.</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -36,7 +36,7 @@
|
||||||
<button type="submit" class="btn btn-default">Sign in</button>
|
<button type="submit" class="btn btn-default">Sign in</button>
|
||||||
@if (Model.PasswordResetEnabled)
|
@if (Model.PasswordResetEnabled)
|
||||||
{
|
{
|
||||||
<a href="@Url.RouteUrl(AccountRouteNames.PasswordResetEmail)" class="forgot-your-password-link">@UI.ForgotYourPassword</a>
|
<a href="@Url.RouteUrl(AccountRouteNames.PasswordResetLogin)" class="forgot-your-password-link">@UI.ForgotYourPassword</a>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
@using WebsitePanel.WebDavPortal.Resources
|
@using WebsitePanel.WebDavPortal.Resources
|
||||||
@using WebsitePanel.WebDavPortal.UI.Routes
|
@using WebsitePanel.WebDavPortal.UI.Routes
|
||||||
@model WebsitePanel.WebDavPortal.Models.Account.PasswordResetEmailModel
|
@model WebsitePanel.WebDavPortal.Models.Account.PasswordResetLoginModel
|
||||||
|
|
||||||
@{
|
@{
|
||||||
Layout = "~/Views/Shared/_Layout.cshtml";
|
Layout = "~/Views/Shared/_Layout.cshtml";
|
||||||
|
@ -8,7 +8,7 @@
|
||||||
|
|
||||||
|
|
||||||
<div class="container row">
|
<div class="container row">
|
||||||
@using (Html.BeginRouteForm(AccountRouteNames.PasswordResetEmail, FormMethod.Post, new { @class = "user-password-reset-email bs-val-styles col-lg-10 col-lg-offset-3", id = "user-password-reset" }))
|
@using (Html.BeginRouteForm(AccountRouteNames.PasswordResetLogin, FormMethod.Post, new { @class = "user-password-reset-email bs-val-styles col-lg-10 col-lg-offset-3", id = "user-password-reset" }))
|
||||||
{
|
{
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<h3>@UI.PasswordReset</h3>
|
<h3>@UI.PasswordReset</h3>
|
||||||
|
@ -18,6 +18,6 @@
|
||||||
@Html.TextBoxFor(x => x.Email, new { @class = "form-control", placeholder = UI.Login })
|
@Html.TextBoxFor(x => x.Email, new { @class = "form-control", placeholder = UI.Login })
|
||||||
@Html.ValidationMessageFor(x => x.Email)
|
@Html.ValidationMessageFor(x => x.Email)
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-default">@UI.SendEmail</button>
|
<button type="submit" class="btn btn-default">@UI.Next</button>
|
||||||
}
|
}
|
||||||
</div>
|
</div>
|
|
@ -1,6 +1,6 @@
|
||||||
@using WebsitePanel.WebDavPortal.Resources
|
@using WebsitePanel.WebDavPortal.Resources
|
||||||
@using WebsitePanel.WebDavPortal.UI.Routes
|
@using WebsitePanel.WebDavPortal.UI.Routes
|
||||||
@model WebsitePanel.WebDavPortal.Models.Account.PasswordResetSmsModel
|
@model WebsitePanel.WebDavPortal.Models.Account.PasswordResetPincodeModel
|
||||||
|
|
||||||
@{
|
@{
|
||||||
Layout = "~/Views/Shared/_Layout.cshtml";
|
Layout = "~/Views/Shared/_Layout.cshtml";
|
||||||
|
@ -9,7 +9,7 @@
|
||||||
@if (Model.IsTokenExist)
|
@if (Model.IsTokenExist)
|
||||||
{
|
{
|
||||||
<div class="container row">
|
<div class="container row">
|
||||||
@using (Html.BeginRouteForm(AccountRouteNames.PasswordResetSms, FormMethod.Post, new {@class = "user-password-reset-sms bs-val-styles col-lg-9 col-lg-offset-3", id = "user-password-reset"}))
|
@using (Html.BeginRouteForm(AccountRouteNames.PasswordResetPincode, FormMethod.Post, new {@class = "user-password-reset-sms bs-val-styles col-lg-9 col-lg-offset-3", id = "user-password-reset"}))
|
||||||
{
|
{
|
||||||
@Html.HiddenFor(x=>x.IsTokenExist)
|
@Html.HiddenFor(x=>x.IsTokenExist)
|
||||||
|
|
||||||
|
@ -17,9 +17,9 @@
|
||||||
<h3>@UI.PasswordReset</h3>
|
<h3>@UI.PasswordReset</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-group">
|
<div class="form-group">
|
||||||
<label for="@Html.IdFor(x => x.Sms)" class="control-label">@Html.Raw(string.Format(Messages.PasswordResetSmsHintFormat, Html.RouteLink(UI.TryAgain.ToLowerInvariant(), AccountRouteNames.PasswordResetSendSms)))</label>
|
<label for="@Html.IdFor(x => x.Sms)" class="control-label">@Html.Raw(string.Format(Messages.PasswordResetSmsHintFormat, Html.RouteLink(UI.TryAgain.ToLowerInvariant(), AccountRouteNames.PasswordResetPincodeSendOptions)))</label>
|
||||||
<div >
|
<div >
|
||||||
@Html.TextBoxFor(x => x.Sms, new {@class = "form-control", placeholder = UI.Sms})
|
@Html.TextBoxFor(x => x.Sms, new {@class = "form-control", placeholder = UI.Pincode})
|
||||||
@Html.ValidationMessageFor(x => x.Sms)
|
@Html.ValidationMessageFor(x => x.Sms)
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
|
@ -0,0 +1,51 @@
|
||||||
|
@using WebsitePanel.WebDav.Core.Extensions
|
||||||
|
@using WebsitePanel.WebDavPortal.Models.Account.Enums
|
||||||
|
@using WebsitePanel.WebDavPortal.Resources
|
||||||
|
@using WebsitePanel.WebDavPortal.UI.Routes
|
||||||
|
@model WebsitePanel.WebDavPortal.Models.Account.PasswordResetPincodeSendOptionsModel
|
||||||
|
|
||||||
|
@{
|
||||||
|
var indexOf = Model.Email.IndexOf('@');
|
||||||
|
|
||||||
|
var maskedEmail = string.Empty;
|
||||||
|
for (int i = 0; i < indexOf - 1; i++)
|
||||||
|
{
|
||||||
|
maskedEmail += '*';
|
||||||
|
}
|
||||||
|
|
||||||
|
maskedEmail += Model.Email.Substring(indexOf - 1);
|
||||||
|
|
||||||
|
var maskedPhone = string.Empty;
|
||||||
|
for (int i = 0; i < Model.MobileNumber.Count() - 5; i++)
|
||||||
|
{
|
||||||
|
maskedPhone += '*';
|
||||||
|
}
|
||||||
|
|
||||||
|
maskedPhone += Model.MobileNumber.Tail(4);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
<div class="container row">
|
||||||
|
@using (Html.BeginRouteForm(AccountRouteNames.PasswordResetPincodeSendOptions, FormMethod.Post, new { @class = "user-password-pincode-send-options bs-val-styles col-lg-10 col-lg-offset-3", id = "user-password-reset" }))
|
||||||
|
{
|
||||||
|
<div class="form-group">
|
||||||
|
<h3>@UI.PasswordReset</h3>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="input-group">
|
||||||
|
<label class="control-label">@UI.SendPincodeTo </label>
|
||||||
|
</div>
|
||||||
|
<div class="input-group">
|
||||||
|
@Html.RadioButtonFor(x => x.Method, PincodeSendMethod.Mobile)
|
||||||
|
@maskedPhone (@UI.MobilePhone)
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="input-group">
|
||||||
|
@Html.RadioButtonFor(x => x.Method, PincodeSendMethod.Email)
|
||||||
|
@maskedEmail (@UI.Email)
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<button type="submit" class="btn btn-default">@UI.Send</button>
|
||||||
|
}
|
||||||
|
</div>
|
|
@ -54,6 +54,7 @@
|
||||||
<add key="UserGroupsKey" value="UserGroups" />
|
<add key="UserGroupsKey" value="UserGroups" />
|
||||||
<add key="OwaEditFoldersSession" value="OwaEditFolders" />
|
<add key="OwaEditFoldersSession" value="OwaEditFolders" />
|
||||||
<add key="PasswordResetSmsKey" value="PasswordResetSms" />
|
<add key="PasswordResetSmsKey" value="PasswordResetSms" />
|
||||||
|
<add key="AccountIdKey" value="AccountId" />
|
||||||
</sessionKeys>
|
</sessionKeys>
|
||||||
<fileIcons defaultPath="~/Content/Images/other-icon.png" folderPath="~/Content/Images/folder_100x100.png">
|
<fileIcons defaultPath="~/Content/Images/other-icon.png" folderPath="~/Content/Images/folder_100x100.png">
|
||||||
<add extension=".txt" path="~/Content/Images/txt-icon.png" />
|
<add extension=".txt" path="~/Content/Images/txt-icon.png" />
|
||||||
|
|
|
@ -196,10 +196,12 @@
|
||||||
<Compile Include="Mapping\Profiles\Webdav\ResourceTableItemProfile.cs" />
|
<Compile Include="Mapping\Profiles\Webdav\ResourceTableItemProfile.cs" />
|
||||||
<Compile Include="ModelBinders\DataTables\JqueryDataTableModelBinder.cs" />
|
<Compile Include="ModelBinders\DataTables\JqueryDataTableModelBinder.cs" />
|
||||||
<Compile Include="Models\AccountModel.cs" />
|
<Compile Include="Models\AccountModel.cs" />
|
||||||
|
<Compile Include="Models\Account\Enums\PincodeSendMethod.cs" />
|
||||||
<Compile Include="Models\Account\PasswordChangeModel.cs" />
|
<Compile Include="Models\Account\PasswordChangeModel.cs" />
|
||||||
<Compile Include="Models\Account\PasswordResetEmailModel.cs" />
|
<Compile Include="Models\Account\PasswordResetLoginModel.cs" />
|
||||||
<Compile Include="Models\Account\PasswordResetFinalStepModel.cs" />
|
<Compile Include="Models\Account\PasswordResetFinalStepModel.cs" />
|
||||||
<Compile Include="Models\Account\PasswordResetSmsModel.cs" />
|
<Compile Include="Models\Account\PasswordResetPincodeSendOptionsModel.cs" />
|
||||||
|
<Compile Include="Models\Account\PasswordResetPincodeModel.cs" />
|
||||||
<Compile Include="Models\Account\UserProfile.cs" />
|
<Compile Include="Models\Account\UserProfile.cs" />
|
||||||
<Compile Include="Models\Common\AjaxModel.cs" />
|
<Compile Include="Models\Common\AjaxModel.cs" />
|
||||||
<Compile Include="Models\Common\DataTable\JqueryDataTableBaseEntity.cs" />
|
<Compile Include="Models\Common\DataTable\JqueryDataTableBaseEntity.cs" />
|
||||||
|
@ -486,11 +488,12 @@
|
||||||
<Content Include="Views\Shared\EditorTemplates\CountrySelector.cshtml" />
|
<Content Include="Views\Shared\EditorTemplates\CountrySelector.cshtml" />
|
||||||
<Content Include="Views\Account\PasswordChange.cshtml" />
|
<Content Include="Views\Account\PasswordChange.cshtml" />
|
||||||
<Content Include="Views\Shared\EditorTemplates\PasswordEditor.cshtml" />
|
<Content Include="Views\Shared\EditorTemplates\PasswordEditor.cshtml" />
|
||||||
<Content Include="Views\Account\PasswordResetEmail.cshtml" />
|
<Content Include="Views\Account\PasswordResetLogin.cshtml" />
|
||||||
<Content Include="Views\Account\PasswordResetEmailSent.cshtml" />
|
<Content Include="Views\Account\PasswordResetEmailSent.cshtml" />
|
||||||
<Content Include="Views\Account\PasswordResetSms.cshtml" />
|
<Content Include="Views\Account\PasswordResetPincode.cshtml" />
|
||||||
<Content Include="Views\Account\PasswordResetFinalStep.cshtml" />
|
<Content Include="Views\Account\PasswordResetFinalStep.cshtml" />
|
||||||
<Content Include="Views\Account\PasswordSuccessfullyChanged.cshtml" />
|
<Content Include="Views\Account\PasswordSuccessfullyChanged.cshtml" />
|
||||||
|
<Content Include="Views\Account\PasswordResetPincodeSendOptions.cshtml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Models\FileSystem\Enums\" />
|
<Folder Include="Models\FileSystem\Enums\" />
|
||||||
|
|
|
@ -0,0 +1,159 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<data name="ddlPriorityItem.High" xml:space="preserve">
|
||||||
|
<value>High</value>
|
||||||
|
</data>
|
||||||
|
<data name="ddlPriorityItem.Low" xml:space="preserve">
|
||||||
|
<value>Low</value>
|
||||||
|
</data>
|
||||||
|
<data name="ddlPriorityItem.Normal" xml:space="preserve">
|
||||||
|
<value>Normal</value>
|
||||||
|
</data>
|
||||||
|
<data name="lblFrom.Text" xml:space="preserve">
|
||||||
|
<value>From:</value>
|
||||||
|
</data>
|
||||||
|
<data name="lblHtmlBody.Text" xml:space="preserve">
|
||||||
|
<value>HTML Body:</value>
|
||||||
|
</data>
|
||||||
|
<data name="lblLogoUrl.Text" xml:space="preserve">
|
||||||
|
<value>Logo Url:</value>
|
||||||
|
</data>
|
||||||
|
<data name="lblNoChangesHtmlBody" xml:space="preserve">
|
||||||
|
<value>No Changes HTML Body:</value>
|
||||||
|
</data>
|
||||||
|
<data name="lblNoChangesTextBody.Text" xml:space="preserve">
|
||||||
|
<value>No Changes Text Body:</value>
|
||||||
|
</data>
|
||||||
|
<data name="lblPasswordResetLinkSmsBody.Text" xml:space="preserve">
|
||||||
|
<value>Password Reset Link Sms Body:</value>
|
||||||
|
</data>
|
||||||
|
<data name="lblPasswordResetPincodeSmsBody.Text" xml:space="preserve">
|
||||||
|
<value>Password Reset Link Pincode Body:</value>
|
||||||
|
</data>
|
||||||
|
<data name="lblPriority.Text" xml:space="preserve">
|
||||||
|
<value>Priority:</value>
|
||||||
|
</data>
|
||||||
|
<data name="lblSubject.Text" xml:space="preserve">
|
||||||
|
<value>Subject:</value>
|
||||||
|
</data>
|
||||||
|
<data name="lblTextBody.Text" xml:space="preserve">
|
||||||
|
<value>Text Body:</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -156,4 +156,7 @@
|
||||||
<data name="lnkOrganizationUserPasswordResetLetter.Text" xml:space="preserve">
|
<data name="lnkOrganizationUserPasswordResetLetter.Text" xml:space="preserve">
|
||||||
<value>Organization User Password Reset Letter</value>
|
<value>Organization User Password Reset Letter</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="lnkOrganizationUserPasswordResetPincodeLetter.Text" xml:space="preserve">
|
||||||
|
<value>Organization User Password Reset Pincode Letter</value>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -49,12 +49,5 @@
|
||||||
<td class="Normal" colspan="2">
|
<td class="Normal" colspan="2">
|
||||||
<asp:TextBox ID="txtBodyPasswordResetLinkSmsBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
<asp:TextBox ID="txtBodyPasswordResetLinkSmsBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
||||||
</tr>
|
</tr>
|
||||||
tr>
|
|
||||||
<td class="SubHead" colspan="2"><br /><br /><asp:Label ID="lblPasswordResetPincodeSmsBody" runat="server" meta:resourcekey="lblPasswordResetPincodeSmsBody" Text="Password Reset Link Pincode Body:"></asp:Label></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td class="Normal" colspan="2">
|
|
||||||
<asp:TextBox ID="txtPasswordResetPincodeSmsBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
</table>
|
</table>
|
|
@ -20,7 +20,6 @@ namespace WebsitePanel.Portal
|
||||||
txtLogoUrl.Text = settings["LogoUrl"];
|
txtLogoUrl.Text = settings["LogoUrl"];
|
||||||
|
|
||||||
txtBodyPasswordResetLinkSmsBody.Text = settings["PasswordResetLinkSmsBody"];
|
txtBodyPasswordResetLinkSmsBody.Text = settings["PasswordResetLinkSmsBody"];
|
||||||
txtPasswordResetPincodeSmsBody.Text = settings["PasswordResetPincodeSmsBody"];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveSettings(UserSettings settings)
|
public void SaveSettings(UserSettings settings)
|
||||||
|
@ -33,7 +32,6 @@ namespace WebsitePanel.Portal
|
||||||
settings["LogoUrl"] = txtLogoUrl.Text;
|
settings["LogoUrl"] = txtLogoUrl.Text;
|
||||||
|
|
||||||
settings["PasswordResetLinkSmsBody"]= txtBodyPasswordResetLinkSmsBody.Text;
|
settings["PasswordResetLinkSmsBody"]= txtBodyPasswordResetLinkSmsBody.Text;
|
||||||
settings["PasswordResetPincodeSmsBody"] =txtPasswordResetPincodeSmsBody.Text;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -137,23 +137,5 @@ namespace WebsitePanel.Portal {
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.TextBox txtBodyPasswordResetLinkSmsBody;
|
protected global::System.Web.UI.WebControls.TextBox txtBodyPasswordResetLinkSmsBody;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// lblPasswordResetPincodeSmsBody control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.Label lblPasswordResetPincodeSmsBody;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// txtPasswordResetPincodeSmsBody control.
|
|
||||||
/// </summary>
|
|
||||||
/// <remarks>
|
|
||||||
/// Auto-generated field.
|
|
||||||
/// To modify move field declaration from designer file to code-behind file.
|
|
||||||
/// </remarks>
|
|
||||||
protected global::System.Web.UI.WebControls.TextBox txtPasswordResetPincodeSmsBody;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SettingsUserPasswordResetPincodeLetter.ascx.cs" Inherits="WebsitePanel.Portal.SettingsUserPasswordResetPincodeLetter" %>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead" width="150" nowrap><asp:Label ID="lblFrom" runat="server" meta:resourcekey="lblFrom" Text="From:"></asp:Label></td>
|
||||||
|
<td class="Normal" width="100%">
|
||||||
|
<asp:TextBox ID="txtFrom" runat="server" Width="500px" CssClass="NormalTextBox"></asp:TextBox></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead"><asp:Label ID="lblSubject" runat="server" meta:resourcekey="lblSubject" Text="Subject:"></asp:Label></td>
|
||||||
|
<td class="Normal">
|
||||||
|
<asp:TextBox ID="txtSubject" runat="server" Width="500px" CssClass="NormalTextBox"></asp:TextBox></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead"><asp:Label ID="lblPriority" runat="server" meta:resourcekey="lblPriority" Text="Priority"></asp:Label></td>
|
||||||
|
<td class="Normal">
|
||||||
|
<asp:DropDownList ID="ddlPriority" runat="server" CssClass="NormalTextBox" resourcekey="ddlPriority">
|
||||||
|
<asp:ListItem Value="High">High</asp:ListItem>
|
||||||
|
<asp:ListItem Value="Normal">Normal</asp:ListItem>
|
||||||
|
<asp:ListItem Value="Low">Low</asp:ListItem>
|
||||||
|
</asp:DropDownList>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead"><asp:Label ID="lblLogoUrl" runat="server" meta:resourcekey="lblLogoUrl" Text="Logo Url:"></asp:Label></td>
|
||||||
|
<td class="Normal">
|
||||||
|
<asp:TextBox ID="txtLogoUrl" runat="server" Width="500px" CssClass="NormalTextBox"></asp:TextBox></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead" colspan="2"><br /><br /><asp:Label ID="lblHtmlBody" runat="server" meta:resourcekey="lblHtmlBody" Text="HTML Body:"></asp:Label></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="Normal" colspan="2">
|
||||||
|
<asp:TextBox ID="txtHtmlBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead" colspan="2"><br /><br /><asp:Label ID="lblTextBody" runat="server" meta:resourcekey="lblTextBody" Text="Text Body:"></asp:Label></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="Normal" colspan="2">
|
||||||
|
<asp:TextBox ID="txtTextBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="SubHead" colspan="2"><br /><br /><asp:Label ID="lblPasswordResetPincodeSmsBody" runat="server" meta:resourcekey="lblPasswordResetPincodeSmsBody" Text="Password Reset Link Pincode Body:"></asp:Label></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="Normal" colspan="2">
|
||||||
|
<asp:TextBox ID="txtPasswordResetPincodeSmsBody" runat="server" Rows="15" TextMode="MultiLine" Width="680px" CssClass="NormalTextBox" Wrap="false"></asp:TextBox></td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
|
@ -0,0 +1,37 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Web;
|
||||||
|
using System.Web.UI;
|
||||||
|
using System.Web.UI.WebControls;
|
||||||
|
using WebsitePanel.EnterpriseServer;
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal
|
||||||
|
{
|
||||||
|
public partial class SettingsUserPasswordResetPincodeLetter : WebsitePanelControlBase, IUserSettingsEditorControl
|
||||||
|
{
|
||||||
|
public void BindSettings(UserSettings settings)
|
||||||
|
{
|
||||||
|
txtFrom.Text = settings["From"];
|
||||||
|
txtSubject.Text = settings["Subject"];
|
||||||
|
Utils.SelectListItem(ddlPriority, settings["Priority"]);
|
||||||
|
txtHtmlBody.Text = settings["HtmlBody"];
|
||||||
|
txtTextBody.Text = settings["TextBody"];
|
||||||
|
txtLogoUrl.Text = settings["LogoUrl"];
|
||||||
|
|
||||||
|
txtPasswordResetPincodeSmsBody.Text = settings["PasswordResetPincodeSmsBody"];
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SaveSettings(UserSettings settings)
|
||||||
|
{
|
||||||
|
settings["From"] = txtFrom.Text;
|
||||||
|
settings["Subject"] = txtSubject.Text;
|
||||||
|
settings["Priority"] = ddlPriority.SelectedValue;
|
||||||
|
settings["HtmlBody"] = txtHtmlBody.Text;
|
||||||
|
settings["TextBody"] = txtTextBody.Text;
|
||||||
|
settings["LogoUrl"] = txtLogoUrl.Text;
|
||||||
|
|
||||||
|
settings["PasswordResetPincodeSmsBody"] = txtPasswordResetPincodeSmsBody.Text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,141 @@
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// This code was generated by a tool.
|
||||||
|
//
|
||||||
|
// Changes to this file may cause incorrect behavior and will be lost if
|
||||||
|
// the code is regenerated.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace WebsitePanel.Portal {
|
||||||
|
|
||||||
|
|
||||||
|
public partial class SettingsUserPasswordResetPincodeLetter {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblFrom control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblFrom;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtFrom control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.TextBox txtFrom;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblSubject control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblSubject;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtSubject control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.TextBox txtSubject;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblPriority control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblPriority;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ddlPriority control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.DropDownList ddlPriority;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblLogoUrl control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblLogoUrl;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtLogoUrl control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.TextBox txtLogoUrl;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblHtmlBody control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblHtmlBody;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtHtmlBody control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.TextBox txtHtmlBody;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblTextBody control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblTextBody;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtTextBody control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.TextBox txtTextBody;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lblPasswordResetPincodeSmsBody control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.Label lblPasswordResetPincodeSmsBody;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// txtPasswordResetPincodeSmsBody control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.TextBox txtPasswordResetPincodeSmsBody;
|
||||||
|
}
|
||||||
|
}
|
|
@ -50,6 +50,10 @@
|
||||||
<asp:HyperLink ID="lnkOrganizationUserPasswordResetLetter" runat="server" meta:resourcekey="lnkOrganizationUserPasswordResetLetter"
|
<asp:HyperLink ID="lnkOrganizationUserPasswordResetLetter" runat="server" meta:resourcekey="lnkOrganizationUserPasswordResetLetter"
|
||||||
Text="User Password Reset Letter" NavigateUrl='<%# GetSettingsLink("UserPasswordResetLetter", "SettingsUserPasswordResetLetter") %>'></asp:HyperLink>
|
Text="User Password Reset Letter" NavigateUrl='<%# GetSettingsLink("UserPasswordResetLetter", "SettingsUserPasswordResetLetter") %>'></asp:HyperLink>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<asp:HyperLink ID="lnkOrganizationUserPasswordResetPincodeLetter" runat="server" meta:resourcekey="lnkOrganizationUserPasswordResetPincodeLetter"
|
||||||
|
Text="User Password Reset Pincode Letter" NavigateUrl='<%# GetSettingsLink("UserPasswordResetPincodeLetter", "SettingsUserPasswordResetPincodeLetter") %>'></asp:HyperLink>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="FormFooter">
|
<div class="FormFooter">
|
||||||
|
|
|
@ -120,6 +120,15 @@ namespace WebsitePanel.Portal {
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
protected global::System.Web.UI.WebControls.HyperLink lnkOrganizationUserPasswordResetLetter;
|
protected global::System.Web.UI.WebControls.HyperLink lnkOrganizationUserPasswordResetLetter;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// lnkOrganizationUserPasswordResetPincodeLetter control.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Auto-generated field.
|
||||||
|
/// To modify move field declaration from designer file to code-behind file.
|
||||||
|
/// </remarks>
|
||||||
|
protected global::System.Web.UI.WebControls.HyperLink lnkOrganizationUserPasswordResetPincodeLetter;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// btnCancel control.
|
/// btnCancel control.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -342,6 +342,13 @@
|
||||||
<DependentUpon>UserPasswordExpirationNotificationView.ascx</DependentUpon>
|
<DependentUpon>UserPasswordExpirationNotificationView.ascx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="SettingsUserPasswordResetPincodeLetter.ascx.cs">
|
||||||
|
<DependentUpon>SettingsUserPasswordResetPincodeLetter.ascx</DependentUpon>
|
||||||
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="SettingsUserPasswordResetPincodeLetter.ascx.designer.cs">
|
||||||
|
<DependentUpon>SettingsUserPasswordResetPincodeLetter.ascx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="VPS2012\RemoteDesktop\Connect.aspx.cs">
|
<Compile Include="VPS2012\RemoteDesktop\Connect.aspx.cs">
|
||||||
<DependentUpon>Connect.aspx</DependentUpon>
|
<DependentUpon>Connect.aspx</DependentUpon>
|
||||||
<SubType>ASPXCodeBehind</SubType>
|
<SubType>ASPXCodeBehind</SubType>
|
||||||
|
@ -4876,6 +4883,7 @@
|
||||||
<Content Include="ScheduleTaskControls\UserPasswordExpirationNotificationView.ascx" />
|
<Content Include="ScheduleTaskControls\UserPasswordExpirationNotificationView.ascx" />
|
||||||
<Content Include="SettingsUserPasswordExpirationLetter.ascx" />
|
<Content Include="SettingsUserPasswordExpirationLetter.ascx" />
|
||||||
<Content Include="SettingsUserPasswordResetLetter.ascx" />
|
<Content Include="SettingsUserPasswordResetLetter.ascx" />
|
||||||
|
<Content Include="SettingsUserPasswordResetPincodeLetter.ascx" />
|
||||||
<Content Include="VPS2012\RemoteDesktop\Connect.aspx" />
|
<Content Include="VPS2012\RemoteDesktop\Connect.aspx" />
|
||||||
<Content Include="VPS2012\RemoteDesktop\msrdp.cab" />
|
<Content Include="VPS2012\RemoteDesktop\msrdp.cab" />
|
||||||
<Content Include="VPS2012\TestVirtualMachineTemplate.aspx" />
|
<Content Include="VPS2012\TestVirtualMachineTemplate.aspx" />
|
||||||
|
@ -4989,6 +4997,7 @@
|
||||||
</Content>
|
</Content>
|
||||||
<Content Include="ExchangeServer\App_LocalResources\OrganizationSettingsGeneralSettings.ascx.resx" />
|
<Content Include="ExchangeServer\App_LocalResources\OrganizationSettingsGeneralSettings.ascx.resx" />
|
||||||
<Content Include="App_LocalResources\SettingsUserPasswordResetLetter.ascx.resx" />
|
<Content Include="App_LocalResources\SettingsUserPasswordResetLetter.ascx.resx" />
|
||||||
|
<Content Include="App_LocalResources\SettingsUserPasswordResetPincodeLetter.ascx.resx" />
|
||||||
<EmbeddedResource Include="RDS\App_LocalResources\RDSEditCollectionSettings.ascx.resx" />
|
<EmbeddedResource Include="RDS\App_LocalResources\RDSEditCollectionSettings.ascx.resx" />
|
||||||
<Content Include="RDSServersEditServer.ascx" />
|
<Content Include="RDSServersEditServer.ascx" />
|
||||||
<Content Include="RDS\AssignedRDSServers.ascx" />
|
<Content Include="RDS\AssignedRDSServers.ascx" />
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue