This commit is contained in:
Alexander Trofimov 2015-05-03 22:23:56 +03:00
commit 6e8cf2baa6
50 changed files with 1485 additions and 279 deletions

View file

@ -1654,15 +1654,14 @@ namespace WebsitePanel.EnterpriseServer
}
UserInfo owner = PackageController.GetPackageOwner(org.PackageId);
OrganizationUser user = OrganizationController.GetUserGeneralSettingsWithExtraData(accessToken.ItemId,
accessToken.AccountId);
OrganizationUser user = OrganizationController.GetUserGeneralSettingsWithExtraData(accessToken.ItemId, accessToken.AccountId);
if (string.IsNullOrEmpty(phoneTo))
{
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"];
@ -1700,6 +1699,90 @@ namespace WebsitePanel.EnterpriseServer
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()
{
var random = new Random(Guid.NewGuid().GetHashCode());
@ -1877,7 +1960,9 @@ namespace WebsitePanel.EnterpriseServer
var webdavPortalUrl = new Uri(settings["WebdavPortalUrl"]);
var token = CreateAccessToken(itemId, accountId, AccessTokenTypes.PasswrodReset);
var hours = settings.GetValueOrDefault(SystemSettings.WEBDAV_PASSWORD_RESET_LINK_LIFE_SPAN, 1);
var token = CreateAccessToken(itemId, accountId, AccessTokenTypes.PasswrodReset, hours);
tokenGuid = token.AccessTokenGuid;
@ -1892,7 +1977,21 @@ namespace WebsitePanel.EnterpriseServer
return resultUrl.ToString();
}
private static AccessToken CreateAccessToken(int itemId, int accountId, AccessTokenTypes type)
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)
{
var token = new AccessToken
{
@ -1900,7 +1999,7 @@ namespace WebsitePanel.EnterpriseServer
ItemId = itemId,
AccountId = accountId,
TokenType = type,
ExpirationDate = DateTime.Now.AddHours(12)
ExpirationDate = DateTime.Now.AddHours(hours)
};
token.Id = DataProvider.AddAccessToken(token);
@ -2890,6 +2989,7 @@ namespace WebsitePanel.EnterpriseServer
OrganizationUser retUser = orgProxy.GetOrganizationUserWithExtraData(accountName, org.OrganizationId);
retUser.AccountId = accountId;
retUser.ItemId = itemId;
retUser.AccountName = account.AccountName;
retUser.PrimaryEmailAddress = account.PrimaryEmailAddress;
retUser.AccountType = account.AccountType;