public object SaveMailDomainSettings(TenantTrustedDomainsType type, List <string> domains, bool inviteUsersAsVisitors) { try { SecurityContext.DemandPermissions(SecutiryConstants.EditPortalSettings); var tenant = CoreContext.TenantManager.GetCurrentTenant(); if (type == TenantTrustedDomainsType.Custom) { tenant.TrustedDomains.Clear(); foreach (var domain in domains) { var d = (domain ?? "").Trim().ToLower(); if (!CheckTrustedDomain(d)) { return new { Status = 0, Message = Resources.Resource.ErrorNotCorrectTrustedDomain } } ; tenant.TrustedDomains.Add(d); } } if (tenant.TrustedDomains.Count == 0) { tenant.TrustedDomainsType = TenantTrustedDomainsType.None; } else { tenant.TrustedDomainsType = type; } var domainSettingsObj = new StudioTrustedDomainSettings { InviteUsersAsVisitors = inviteUsersAsVisitors }; var resultStatus = SettingsManager.Instance.SaveSettings(domainSettingsObj, TenantProvider.CurrentTenantID); CoreContext.TenantManager.SaveTenant(tenant); AdminLog.PostAction("Settings: saved mail domain settings with parameters type={0}, domains={1}, inviteUsersAsVisitors={2}", type, string.Join("|", domains.ToArray()), inviteUsersAsVisitors.ToString()); return(new { Status = 1, Message = Resources.Resource.SuccessfullySaveSettingsMessage }); } catch (Exception e) { return(new { Status = 0, Message = e.Message.HtmlEncode() }); } }
protected void Page_Load(object sender, EventArgs e) { AjaxPro.Utility.RegisterTypeForAjax(GetType()); Page.RegisterBodyScripts(ResolveUrl("~/usercontrols/management/maildomainsettings/js/maildomainsettings.js")); Page.RegisterStyleControl(VirtualPathUtility.ToAbsolute("~/usercontrols/management/maildomainsettings/css/maildomainsettings.less")); _currentTenant = CoreContext.TenantManager.GetCurrentTenant(); _studioTrustedDomainSettings = SettingsManager.Instance.LoadSettings <StudioTrustedDomainSettings>(TenantProvider.CurrentTenantID); _enableInviteUsers = TenantStatisticsProvider.GetUsersCount() < TenantExtra.GetTenantQuota().ActiveUsers; if (!_enableInviteUsers) { _studioTrustedDomainSettings.InviteUsersAsVisitors = true; } }
public object SaveMailDomainSettings(TenantTrustedDomainsType type, List <string> domains, bool inviteUsersAsVisitors) { try { SecurityContext.DemandPermissions(SecutiryConstants.EditPortalSettings); var tenant = CoreContext.TenantManager.GetCurrentTenant(); if (type == TenantTrustedDomainsType.Custom) { tenant.TrustedDomains.Clear(); foreach (var d in domains.Select(domain => (domain ?? "").Trim().ToLower())) { if (!CheckTrustedDomain(d)) { return new { Status = 0, Message = Resource.ErrorNotCorrectTrustedDomain } } ; tenant.TrustedDomains.Add(d); } if (tenant.TrustedDomains.Count == 0) { type = TenantTrustedDomainsType.None; } } tenant.TrustedDomainsType = type; var domainSettingsObj = new StudioTrustedDomainSettings { InviteUsersAsVisitors = inviteUsersAsVisitors }; SettingsManager.Instance.SaveSettings(domainSettingsObj, TenantProvider.CurrentTenantID); CoreContext.TenantManager.SaveTenant(tenant); MessageService.Send(HttpContext.Current.Request, MessageAction.TrustedMailDomainSettingsUpdated); return(new { Status = 1, Message = Resource.SuccessfullySaveSettingsMessage }); } catch (Exception e) { return(new { Status = 0, Message = e.Message.HtmlEncode() }); } }
protected void Page_Load(object sender, EventArgs e) { AjaxPro.Utility.RegisterTypeForAjax(GetType()); Page.RegisterBodyScripts("~/usercontrols/management/maildomainsettings/js/maildomainsettings.js"); Page.RegisterStyle("~/usercontrols/management/maildomainsettings/css/maildomainsettings.less"); _currentTenant = CoreContext.TenantManager.GetCurrentTenant(); _studioTrustedDomainSettings = SettingsManager.Instance.LoadSettings <StudioTrustedDomainSettings>(TenantProvider.CurrentTenantID); _enableInviteUsers = TenantStatisticsProvider.GetUsersCount() < TenantExtra.GetTenantQuota().ActiveUsers; if (!_enableInviteUsers) { _studioTrustedDomainSettings.InviteUsersAsVisitors = true; } var managementPage = Page as Studio.Management; _tenantAccessAnyone = managementPage != null ? managementPage.TenantAccess.Anyone : SettingsManager.Instance.LoadSettings <TenantAccessSettings>(TenantProvider.CurrentTenantID).Anyone; }
public object SendJoinInviteMail(string email) { try { if (!EnabledJoin) { throw new MethodAccessException("Method not available"); } if (!email.TestEmailRegex()) { throw new Exception(Resource.ErrorNotCorrectEmail); } var user = CoreContext.UserManager.GetUserByEmail(email); if (!user.ID.Equals(Constants.LostUser.ID)) { throw new Exception(CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists")); } var tenant = CoreContext.TenantManager.GetCurrentTenant(); var settings = IPRestrictionsSettings.Load(); if (settings.Enable && !IPSecurity.IPSecurity.Verify(tenant)) { throw new Exception(Resource.ErrorAccessRestricted); } var trustedDomainSettings = StudioTrustedDomainSettings.Load(); var emplType = trustedDomainSettings.InviteUsersAsVisitors ? EmployeeType.Visitor : EmployeeType.User; var enableInviteUsers = TenantStatisticsProvider.GetUsersCount() < TenantExtra.GetTenantQuota().ActiveUsers; if (!enableInviteUsers) { emplType = EmployeeType.Visitor; } switch (tenant.TrustedDomainsType) { case TenantTrustedDomainsType.Custom: { var address = new MailAddress(email); if ( tenant.TrustedDomains.Any( d => address.Address.EndsWith("@" + d, StringComparison.InvariantCultureIgnoreCase))) { StudioNotifyService.Instance.SendJoinMsg(email, emplType); MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, MessageAction.SentInviteInstructions, email); return(new { Status = 1, Message = Resource.FinishInviteJoinEmailMessage }); } throw new Exception(Resource.ErrorEmailDomainNotAllowed); } case TenantTrustedDomainsType.All: { StudioNotifyService.Instance.SendJoinMsg(email, emplType); MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, MessageAction.SentInviteInstructions, email); return(new { Status = 1, Message = Resource.FinishInviteJoinEmailMessage }); } default: throw new Exception(Resource.ErrorNotCorrectEmail); } } catch (FormatException) { return(new { Status = 0, Message = Resource.ErrorNotCorrectEmail }); } catch (Exception e) { return(new { Status = 0, Message = e.Message.HtmlEncode() }); } }
public AjaxResponse SendJoinInviteMail(string email) { email = (email ?? "").Trim(); var resp = new AjaxResponse { rs1 = "0" }; try { if (String.IsNullOrEmpty(email)) { resp.rs2 = Resource.ErrorNotCorrectEmail; return(resp); } if (!email.TestEmailRegex()) { resp.rs2 = Resource.ErrorNotCorrectEmail; } var user = CoreContext.UserManager.GetUserByEmail(email); if (!user.ID.Equals(ASC.Core.Users.Constants.LostUser.ID)) { resp.rs1 = "0"; resp.rs2 = CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists").HtmlEncode(); return(resp); } var tenant = CoreContext.TenantManager.GetCurrentTenant(); if (tenant != null) { var settings = IPRestrictionsSettings.Load(); if (settings.Enable && !IPSecurity.IPSecurity.Verify(tenant)) { resp.rs2 = Resource.ErrorAccessRestricted; return(resp); } } var trustedDomainSettings = StudioTrustedDomainSettings.Load(); var emplType = trustedDomainSettings.InviteUsersAsVisitors ? EmployeeType.Visitor : EmployeeType.User; var enableInviteUsers = TenantStatisticsProvider.GetUsersCount() < TenantExtra.GetTenantQuota().ActiveUsers; if (!enableInviteUsers) { emplType = EmployeeType.Visitor; } switch (tenant.TrustedDomainsType) { case TenantTrustedDomainsType.Custom: { var address = new MailAddress(email); if (tenant.TrustedDomains.Any(d => address.Address.EndsWith("@" + d, StringComparison.InvariantCultureIgnoreCase))) { StudioNotifyService.Instance.InviteUsers(email, "", true, emplType); MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, MessageAction.SentInviteInstructions, email); resp.rs1 = "1"; resp.rs2 = Resource.FinishInviteJoinEmailMessage; return(resp); } else { resp.rs2 = Resource.ErrorEmailDomainNotAllowed; } } break; case TenantTrustedDomainsType.All: StudioNotifyService.Instance.InviteUsers(email, "", true, emplType); MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, MessageAction.SentInviteInstructions, email); resp.rs1 = "1"; resp.rs2 = Resource.FinishInviteJoinEmailMessage; return(resp); default: resp.rs2 = Resource.ErrorNotCorrectEmail; break; } } catch (FormatException) { resp.rs2 = Resource.ErrorNotCorrectEmail; } catch (Exception e) { resp.rs2 = HttpUtility.HtmlEncode(e.Message); } return(resp); }