protected void Page_Load(object sender, EventArgs e) { ((CommunityMasterPage)this.Master).DisabledSidePanel = true; this.Title = Resources.CommunityResource.MainPageTitle; if (ShowEmptyScreen()) { var dashboardEmptyScreen = (DashboardEmptyScreen)Page.LoadControl(DashboardEmptyScreen.Location); AddContent.Controls.Add(dashboardEmptyScreen); return; } _widgetTabControl = new WidgetTab(new Guid("{57DAD9FA-BBB8-4a3a-B208-D3CD58691D35}"), ColumnSchemaType.Schema_25_50_25, "communityDashboard" ); var modules = new List <ASC.Web.Core.ModuleManagement.Module>(); foreach (var item in WebItemManager.Instance.GetSubItems(CommunityProduct.ID)) { if ((item is ASC.Web.Core.ModuleManagement.Module) == false) { continue; } var module = item as ASC.Web.Core.ModuleManagement.Module; modules.Add(module); foreach (var widget in module.Widgets) { try { _widgetTabControl.WidgetCollection.Add(GetWidgetControl(module, widget)); } catch (Exception ex) { //TODO: draw error control or something _widgetTabControl.WidgetCollection.Add(GetBrokenWidgetControl(ex)); } } } _widgetTabControl.WidgetCollection.Add(new Widget(BirthdayReminderWidget.WidgetID, new BirthdayReminderWidget() { ProductID = CommunityProduct.ID }, Resources.CommunityResource.BirthdayReminderWidgetName, Resources.CommunityResource.BirthdayReminderWidgetDescription) { ImageURL = WebImageSupplier.GetAbsoluteWebPath("birthday_widget.png"), SettingsProviderType = typeof(StudioWidgetSettingsProvider), UsePositionAttribute = true }); _widgetTabControl.WidgetCollection.Add(new Widget(NewEmployeeWidget.WidgetID, new NewEmployeeWidget() { ProductID = CommunityProduct.ID }, CustomNamingPeople.Substitute <Resources.CommunityResource>("NewEmployeeWidgetName"), Resources.CommunityResource.NewEmployeeWidgetDescription) { ImageURL = WebImageSupplier.GetAbsoluteWebPath("newemp_widget.png"), SettingsProviderType = typeof(StudioWidgetSettingsProvider), UsePositionAttribute = true }); var widgetSettings = SettingsManager.Instance.LoadSettingsFor <ProductActivityWidgetSettings>(SecurityContext.CurrentAccount.ID); ProductActivity productActivityControl = (ProductActivity)LoadControl(ProductActivity.Location); productActivityControl.ProductId = CommunityProduct.ID; productActivityControl.Activities = UserActivityManager.GetUserActivities( TenantProvider.CurrentTenantID, null, CommunityProduct.ID, null, UserActivityConstants.ContentActionType, null, 0, widgetSettings.CountActivities) .ConvertAll(a => new UserContentActivity(a)); _widgetTabControl.WidgetCollection.Add(new Widget(ProductActivity.WidgetID, productActivityControl, Resources.CommunityResource.CommunityActivityWidgetName, Resources.CommunityResource.CommunityActivityWidgetDescription) { ImageURL = WebImageSupplier.GetAbsoluteWebPath("lastadded_widget.png"), SettingsProviderType = typeof(StudioWidgetSettingsProvider), Position = new Point(0, 2), WidgetURL = WhatsNew.GetUrlForModule(Product.CommunityProduct.ID, null) }); WidgetsContent.Controls.Add(_widgetTabControl); NavigationPanel NavigationPanel = (NavigationPanel)this.LoadControl(NavigationPanel.Location); NavigationPanelContent.Controls.Add(NavigationPanel); if (SecurityContext.CurrentAccount.IsAuthenticated) { NavigationPanel.addButton(Resources.CommunityResource.BtnCustomizeWidgets, WebImageSupplier.GetAbsoluteWebPath("btn_managewidgets.png"), "javascript:communityDashboard.ShowSettings()", 3); if (modules.Count > 0) { NavigationPanel.addButton(Resources.CommunityResource.BtnAddContent, WebImageSupplier.GetAbsoluteWebPath("btn_addcontent.png"), "javascript:StudioManager.ShowAddContentDialog()", 2); AddContentControl AddCntnt = (AddContentControl)this.LoadControl(AddContentControl.Location); foreach (var module in modules) { try { AddCntnt.Types.Add(new AddContentControl.ContentTypes { Link = module.Context.GetCreateContentPageAbsoluteUrl(), Icon = (module as IWebItem).GetIconAbsoluteURL(), Label = module.Name }); } catch (Exception) { AddCntnt.Types.Add(new AddContentControl.ContentTypes { Link = "#", Icon = string.Empty, Label = "Error loading " + module.Name }); } } AddContent.Controls.Add(AddCntnt); } } }
protected void RenderHeader() { var topNavigationPanel = (TopNavigationPanel)LoadControl(TopNavigationPanel.Location); // topNavigationPanel.SingleSearchHandlerType = typeof(SearchHandler); // topNavigationPanel.CustomInfoHTML = String.Format("<img vspace='9' hspace='10' align='middle' src='{0}' valign='middle'>", WebImageSupplier.GetAbsoluteWebPath("beta_module.png")); _topNavigationPanelPlaceHolder.Controls.Add(topNavigationPanel); var absolutePathWithoutQuery = Request.Url.AbsolutePath.Substring(0, Request.Url.AbsolutePath.IndexOf(".aspx")); var sysName = absolutePathWithoutQuery.Substring(absolutePathWithoutQuery.LastIndexOf('/') + 1); //topNavigationPanel.NavigationItems.Add(new NavigationItem // { // URL = // String.Concat(PathProvider.BaseAbsolutePath, // "default.aspx"), // Name = CRMCommonResource.DashboardModuleName, // Description = "", // Selected = String.Compare(sysName, "Default", true) == 0 // }); topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "default.aspx"), Name = CRMContactResource.Contacts, Description = "", Selected = String.Compare(sysName, "default", true) == 0 }); topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "tasks.aspx"), Name = CRMCommonResource.TaskModuleName, Description = "", Selected = String.Compare(sysName, "Tasks", true) == 0 }); topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "deals.aspx"), Name = CRMCommonResource.DealModuleName, Description = "", Selected = String.Compare(sysName, "Deals", true) == 0 }); topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "cases.aspx"), Name = CRMCommonResource.CasesModuleName, Description = "", Selected = String.Compare(sysName, "Cases", true) == 0 }); //if (CRMSecurity.IsAdmin) // topNavigationPanel.NavigationItems.Add(new NavigationItem // { // URL = // String.Concat(PathProvider.BaseAbsolutePath, // "reports.aspx"), // Name = CRMCommonResource.ReportModuleName, // Description = "", // Selected = String.Compare(sysName, "Reports", true) == 0 // }); if (CRMSecurity.IsAdmin) { topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "settings.aspx?type=common"), Name = CRMCommonResource.SettingModuleName, Description = "", Selected = String.Compare(sysName, "Settings", true) == 0, RightAlign = true }); } topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = CommonLinkUtility.GetEmployees(ProductEntryPoint.ID), Name = CustomNamingPeople.Substitute <CRMCommonResource>( "Employees"), Description = "", Selected = UserOnlineManager.Instance.IsEmployeesPage() || UserOnlineManager.Instance.IsUserProfilePage(), RightAlign = true }); }
public string InitUsersDdl() { var projectIds = Report.Filter.ProjectIds; if (Report.Filter.TagId != 0 && Report.Filter.ProjectIds.Count == 0) { projectIds = Global.EngineFactory.GetTagEngine().GetTagProjects(Report.Filter.TagId).ToList(); } UserInfo[] users; if (!Report.Filter.DepartmentId.Equals(Guid.Empty)) { users = CoreContext.UserManager.GetUsersByGroup(Report.Filter.DepartmentId); } else if (projectIds.Any()) { users = Global.EngineFactory.GetProjectEngine().GetTeam(projectIds).Select(r => r.UserInfo).ToArray(); } else { users = CoreContext.UserManager.GetUsers(); } var sb = new StringBuilder().AppendFormat("<option value='-1' id='ddlUser-1'>{0}</option>", CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode()); users.OrderBy(u => u, UserInfoComparer.Default).ToList() .ForEach(u => sb.AppendFormat("<option value='{0}' id='ddlUser{0}' {2}>{1}</option>", u.ID, u.DisplayUserName(), u.ID == Report.Filter.UserId || u.ID == Report.Filter.ParticipantId ? "selected='selected'" : "")); return(sb.ToString()); }
public override string GetReportFileName() { return(CustomNamingPeople.Substitute <ReportResource>("ReportEmployeesWithoutActiveTasks_Title").HtmlEncode()); }
public void RunJob() { Status = (int)Operation.Success; CoreContext.TenantManager.SetCurrentTenant((int)Id); SecurityContext.AuthenticateMe(UserId); if (!SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser)) { Error = Resource.ErrorAccessDenied; IsCompleted = true; return; } try { var jsSerializer = new System.Web.Script.Serialization.JavaScriptSerializer(); var ruleObj = jsSerializer.Deserialize <List <UserData> >(userList); var error = 0; Address address; GetUserCounter = ruleObj.Count; foreach (var userData in ruleObj) { var isGuest = userData.Status == EmployeeType.All ? importUsersAsCollaborators : userData.Status == EmployeeType.Visitor; var isValidEmail = Parser.TryParseAddress(userData.Email, out address); if (!isValidEmail || String.IsNullOrEmpty(userData.FirstName) || String.IsNullOrEmpty(userData.LastName)) { Data.Add(new UserResults { Email = userData.Email, Result = Resource.ImportContactsIncorrectFields, Class = !isValidEmail ? "error3" : "error1" }); error++; Percentage++; continue; } var us = CoreContext.UserManager.GetUserByEmail(userData.Email); if (us.ID != Constants.LostUser.ID) { Data.Add(new UserResults { Email = userData.Email, Result = CustomNamingPeople.Substitute <Resource>("ImportContactsAlreadyExists"), Class = "error2" }); error++; Percentage++; continue; } if (isGuest && !(CoreContext.Configuration.Standalone || CoreContext.UserManager.GetUsersByGroup(Constants.GroupVisitor.ID).Length < Constants.CoefficientOfVisitors * TenantExtra.GetTenantQuota().ActiveUsers)) { break; } var userInfo = new UserInfo { Email = userData.Email, FirstName = userData.FirstName, LastName = userData.LastName }; UserManagerWrapper.AddUser(userInfo, UserManagerWrapper.GeneratePassword(), false, true, isGuest); var messageAction = isGuest ? MessageAction.GuestImported : MessageAction.UserImported; MessageService.Send(httpHeaders, messageAction, MessageTarget.Create(userInfo.ID), string.Format("{0} ({1})", userInfo.DisplayUserName(false), userInfo.Email)); Data.Add(new UserResults { Email = userData.Email, Result = String.Empty }); Percentage++; } } catch (Exception ex) { Status = (int)Operation.Error; Error = ex.Message; } IsCompleted = true; }
[Create(@"register", false)] //NOTE: This method doesn't require auth!!! public string RegisterUserOnPersonal(string email, string lang, bool spam, string recaptchaResponse) { if (!CoreContext.Configuration.Personal) { throw new MethodAccessException("Method is only available on personal.onlyoffice.com"); } try { if (CoreContext.Configuration.CustomMode) { lang = "ru-RU"; } var cultureInfo = SetupInfo.GetPersonalCulture(lang).Value; if (cultureInfo != null) { Thread.CurrentThread.CurrentUICulture = cultureInfo; } email.ThrowIfNull(new ArgumentException(Resource.ErrorEmailEmpty, "email")); if (!email.TestEmailRegex()) { throw new ArgumentException(Resource.ErrorNotCorrectEmail, "email"); } if (!SetupInfo.IsSecretEmail(email) && !string.IsNullOrEmpty(SetupInfo.RecaptchaPublicKey) && !string.IsNullOrEmpty(SetupInfo.RecaptchaPrivateKey)) { var ip = Request.Headers["X-Forwarded-For"] ?? Request.UserHostAddress; if (String.IsNullOrEmpty(recaptchaResponse) || !Authorize.ValidateRecaptcha(recaptchaResponse, ip)) { throw new Authorize.RecaptchaException(Resource.RecaptchaInvalid); } } var newUserInfo = CoreContext.UserManager.GetUserByEmail(email); if (CoreContext.UserManager.UserExists(newUserInfo.ID)) { if (!SetupInfo.IsSecretEmail(email) || SecurityContext.IsAuthenticated) { throw new Exception(CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists")); } try { SecurityContext.CurrentAccount = Constants.CoreSystem; CoreContext.UserManager.DeleteUser(newUserInfo.ID); } finally { SecurityContext.Logout(); } } if (!spam) { try { const string _databaseID = "com"; using (var db = DbManager.FromHttpContext(_databaseID)) { db.ExecuteNonQuery(new SqlInsert("template_unsubscribe", false) .InColumnValue("email", email.ToLowerInvariant()) .InColumnValue("reason", "personal") ); Log.Debug(String.Format("Write to template_unsubscribe {0}", email.ToLowerInvariant())); } } catch (Exception ex) { Log.Debug(String.Format("ERROR write to template_unsubscribe {0}, email:{1}", ex.Message, email.ToLowerInvariant())); } } StudioNotifyService.Instance.SendInvitePersonal(email); } catch (Exception ex) { return(ex.Message); } return(string.Empty); }
public AjaxResponse SendEmailActivationInstructionsOnChange(string oldEmail, string newEmail, string newEmailConfirm, string queryString) { const string StatusSuccess = "success"; const string StatusError = "error"; const string StatusFatalError = "fatalerror"; AjaxResponse response = new AjaxResponse(); response.status = StatusSuccess; if (String.IsNullOrEmpty(oldEmail)) { response.status = StatusFatalError; response.message = Resources.Resource.ErrorConfirmURLError; return(response); } if (String.IsNullOrEmpty(queryString)) { response.status = StatusFatalError; response.message = Resources.Resource.ErrorConfirmURLError; return(response); } if (String.IsNullOrEmpty(newEmail)) { response.status = StatusError; response.message = Resources.Resource.ErrorEmailEmpty; return(response); } if (String.IsNullOrEmpty(newEmailConfirm)) { response.status = StatusError; response.message = Resources.Resource.ErrorEmailConfirmEmpty; return(response); } try { if (!newEmail.TestEmailRegex()) { response.status = StatusError; response.message = Resources.Resource.ErrorNotCorrectEmail; return(response); } var result = CheckValidationKey(queryString.Substring(1)); if (result != EmailValidationKeyProvider.ValidationResult.Ok) { response.status = StatusFatalError; switch (result) { case EmailValidationKeyProvider.ValidationResult.Invalid: response.message = Resources.Resource.ErrorInvalidActivationLink; break; case EmailValidationKeyProvider.ValidationResult.Expired: response.message = Resources.Resource.ErrorExpiredActivationLink; break; default: response.message = Resources.Resource.ErrorConfirmURLError; break; } return(response); } if (!String.Equals(newEmail, newEmailConfirm, StringComparison.InvariantCultureIgnoreCase)) { response.status = StatusError; response.message = Resources.Resource.ErrorMissMatchEmail; return(response); } UserInfo user = CoreContext.UserManager.GetUserByEmail(oldEmail); if (user == null) { response.status = StatusFatalError; response.message = String.Format(Resources.Resource.ErrorUserNotFoundByEmail, oldEmail); return(response); } UserInfo existentUser = CoreContext.UserManager.GetUserByEmail(newEmail); if (existentUser != null && existentUser.ID == user.ID) { response.status = StatusError; response.message = Resources.Resource.ErrorEmailsAreTheSame; return(response); } if (existentUser.ID != ASC.Core.Users.Constants.LostUser.ID) { response.status = StatusError; response.message = CustomNamingPeople.Substitute <Resources.Resource>("ErrorEmailAlreadyExists"); return(response); } user.Email = newEmail; user.ActivationStatus = EmployeeActivationStatus.NotActivated; CoreContext.UserManager.SaveUserInfo(user); StudioNotifyService.Instance.SendEmailActivationInstructions(user, newEmail); response.message = String.Format(Resources.Resource.MessageEmailActivationInstuctionsSentOnEmail, CreateEmailLink(newEmail)); return(response); } catch (Exception) { response.status = StatusFatalError; response.message = Resources.Resource.UnknownError; return(response); } }
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); }
protected void Page_Load(object sender, EventArgs e) { PageTitle = CustomNamingPeople.Substitute <Resource>("ImportContactsHeader"); importUsers.Controls.Add(LoadControl(ImportUsers.Location)); }
public AjaxResponse SendJoinInviteMail(string email) { email = (email ?? "").Trim(); var resp = new AjaxResponse { rs1 = "0" }; try { if (String.IsNullOrEmpty(email)) { resp.rs2 = Resources.Resource.ErrorNotCorrectEmail; return(resp); } if (!email.TestEmailRegex()) { resp.rs2 = Resources.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 <Resources.Resource>("ErrorEmailAlreadyExists").HtmlEncode(); return(resp); } var tenant = CoreContext.TenantManager.GetCurrentTenant(); var trustedDomainSettings = SettingsManager.Instance.LoadSettings <StudioTrustedDomainSettings>(TenantProvider.CurrentTenantID); var emplType = trustedDomainSettings.InviteUsersAsVisitors ? EmployeeType.Visitor : EmployeeType.User; var enableInviteUsers = TenantStatisticsProvider.GetUsersCount() < TenantExtra.GetTenantQuota().ActiveUsers; if (!enableInviteUsers) { emplType = EmployeeType.Visitor; } if (tenant.TrustedDomainsType == TenantTrustedDomainsType.Custom) { var address = new MailAddress(email); foreach (var d in tenant.TrustedDomains) { if (address.Address.EndsWith("@" + d, StringComparison.InvariantCultureIgnoreCase)) { StudioNotifyService.Instance.InviteUsers(email, "", true, emplType); resp.rs1 = "1"; resp.rs2 = Resources.Resource.FinishInviteJoinEmailMessage; return(resp); } } } else if (tenant.TrustedDomainsType == TenantTrustedDomainsType.All) { StudioNotifyService.Instance.InviteUsers(email, "", true, emplType); resp.rs1 = "1"; resp.rs2 = Resources.Resource.FinishInviteJoinEmailMessage; return(resp); } resp.rs2 = Resources.Resource.ErrorNotCorrectEmail; } catch (FormatException) { resp.rs2 = Resources.Resource.ErrorNotCorrectEmail; } catch (Exception e) { resp.rs2 = HttpUtility.HtmlEncode(e.Message); } return(resp); }
public string SendEmailChangeInstructions(Guid userID, string email) { if (userID == Guid.Empty) { throw new ArgumentNullException("userID"); } if (String.IsNullOrEmpty(email)) { throw new Exception(Resources.Resource.ErrorEmailEmpty); } if (!email.TestEmailRegex()) { throw new Exception(Resources.Resource.ErrorNotCorrectEmail); } try { var viewer = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); var user = CoreContext.UserManager.GetUsers(userID); if (user == null) { throw new UserNotFoundException(Resources.Resource.ErrorUserNotFound); } if (viewer == null || (user.IsOwner() && viewer.ID != user.ID)) { throw new AccessDeniedException(Resources.Resource.ErrorAccessDenied); } var existentUser = CoreContext.UserManager.GetUserByEmail(email); if (existentUser.ID != ASC.Core.Users.Constants.LostUser.ID) { throw new InputException(CustomNamingPeople.Substitute <Resources.Resource>("ErrorEmailAlreadyExists")); } if (!viewer.IsAdmin()) { StudioNotifyService.Instance.SendEmailChangeInstructions(user, email); } else { if (email == user.Email) { throw new InputException(Resources.Resource.ErrorEmailsAreTheSame); } user.Email = email; user.ActivationStatus = EmployeeActivationStatus.NotActivated; CoreContext.UserManager.SaveUserInfo(user); StudioNotifyService.Instance.SendEmailActivationInstructions(user, email); } MessageService.Send(HttpContext.Current.Request, MessageAction.UserSentEmailChangeInstructions, user.DisplayUserName(false)); return(String.Format(Resources.Resource.MessageEmailChangeInstuctionsSentOnEmail, "<b>" + email + "</b>")); } catch (AccessDeniedException) { throw; } catch (UserNotFoundException) { throw; } catch (InputException) { throw; } catch (Exception) { throw new Exception(Resources.Resource.UnknownError); } }
public string InitManagersDdl() { var sb = new StringBuilder().AppendFormat("<option value='-1' id='ddlUser-1'>{0}</option>", CustomNamingPeople.Substitute <CRMCommonResource>("AllUsers")); CoreContext.UserManager.GetUsers() .Where(u => string.IsNullOrEmpty(u.Department)) .OrderBy(u => u, UserInfoComparer.Default) .ToList() .ForEach(u => sb.AppendFormat("<option value='{0}' id='ddlUser{0}'>{1}</option>", u.ID, u.DisplayUserName())); foreach (var g in CoreContext.GroupManager.GetGroups().OrderBy(g => g.Name)) { sb.AppendFormat("<optgroup label=\"{0}\">", g.Name.HtmlEncode()); foreach (var u in CoreContext.UserManager.GetUsersByGroup(g.ID).OrderBy(u => u, UserInfoComparer.Default)) { sb.AppendFormat("<option value='{0}' id='ddlUser{0}'>{1}</option>", u.ID, u.DisplayUserName()); } } return(sb.ToString()); }
protected void Page_Load(object sender, EventArgs e) { if (CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).IsVisitor()) // Redirect to home page if user hasn't permissions or not authenticated. { Response.Redirect("/"); } Accounts = GetAccounts(); MailAccountData defaultAccount; List <MailAccountData> commonAccounts; List <MailAccountData> serverAccounts; List <MailAccountData> aliases; List <MailAccountData> groups; Accounts.GetNeededAccounts(out defaultAccount, out commonAccounts, out serverAccounts, out aliases, out groups); DefaultAccount = defaultAccount; CommonAccounts = commonAccounts; ServerAccounts = serverAccounts; Aliases = aliases; Groups = groups; _manageFieldPopup.Options.IsPopup = true; _commonPopup.Options.IsPopup = true; Page.Title = HeaderStringHelper.GetPageTitle(Resources.MailResource.MailTitle); ProductEntryPoint.ConfigurePortal(); loaderHolder.Controls.Add(LoadControl(LoaderPage.Location)); MailSidePanelContainer.Controls.Add(LoadControl(TagBox.Location)); MailControlContainer.Controls.Add(LoadControl(MailBox.Location)); var help_center = (HelpCenter)LoadControl(HelpCenter.Location); help_center.IsSideBar = true; sideHelpCenter.Controls.Add(help_center); SupportHolder.Controls.Add(LoadControl(Support.Location)); VideoGuides.Controls.Add(LoadControl(VideoGuidesControl.Location)); UserForumHolder.Controls.Add(LoadControl(UserForum.Location)); InviteUserHolder.Controls.Add(LoadControl(InviteLink.Location)); PeopleGroupLocalize.Text = CustomNamingPeople.Substitute <Resources.MailResource>("FilterByGroup"); // If user doesn't have any mailboxes this will showed. var mail_box_manager = new ASC.Mail.Aggregator.MailBoxManager(); if (!mail_box_manager.HasMailboxes(TenantProvider.CurrentTenantID, SecurityContext.CurrentAccount.ID.ToString())) { BlankModalPH.Controls.Add(LoadControl(BlankModal.Location)); } if (!IsCrmAvailable()) { crmContactsContainer.Visible = false; } if (!IsPeopleAvailable()) { tlContactsContainer.Visible = false; } Page.RegisterBodyScripts(LoadControl(VirtualPathUtility.ToAbsolute("~/addons/mail/masters/BodyScripts.ascx"))); Page.RegisterStyleControl(LoadControl(VirtualPathUtility.ToAbsolute("~/addons/mail/masters/Styles.ascx"))); Page.RegisterClientLocalizationScript(typeof(Masters.ClientScripts.ClientLocalizationResources)); Page.RegisterClientLocalizationScript(typeof(Masters.ClientScripts.ClientTemplateResources)); Master.DisabledHelpTour = true; Page.RegisterInlineScript(BuildErrorConstants()); Page.RegisterInlineScript(BuildAlertTypes()); }
protected override IEnumerable <KeyValuePair <string, object> > GetClientVariables(HttpContext context) { return(new List <KeyValuePair <string, object> >(10) { RegisterResourceSet("ProjectsJSResource", ProjectsJSResource.ResourceManager), RegisterResourceSet("ProjectsFilterResource", ProjectsFilterResource.ResourceManager), RegisterResourceSet("ImportResource", ImportResource.ResourceManager), RegisterResourceSet("TasksResource", TaskResource.ResourceManager), RegisterResourceSet("CommonResource", ProjectsCommonResource.ResourceManager), RegisterResourceSet("TimeTrackingResource", TimeTrackingResource.ResourceManager), RegisterResourceSet("MessageResource", MessageResource.ResourceManager), RegisterResourceSet("ProjectResource", ProjectResource.ResourceManager), RegisterResourceSet("MilestoneResource", MilestoneResource.ResourceManager), RegisterResourceSet("ProjectTemplatesResource", ProjectTemplatesResource.ResourceManager), RegisterResourceSet("ProjectsFileResource", ProjectsFileResource.ResourceManager), RegisterResourceSet("ReportResource", ReportResource.ResourceManager), RegisterObject( new { ViewByDepartments = CustomNamingPeople.Substitute <ReportResource>("ViewByDepartments").HtmlEncode(), ViewByUsers = CustomNamingPeople.Substitute <ReportResource>("ViewByUsers").HtmlEncode(), AllDepartments = CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments").HtmlEncode(), AllUsers = CustomNamingPeople.Substitute <ProjectsCommonResource>("AllUsers").HtmlEncode(), PaymentStatus = new { NotChargeable = ResourceEnumConverter.ConvertToString(PaymentStatus.NotChargeable), NotBilled = ResourceEnumConverter.ConvertToString(PaymentStatus.NotBilled), Billed = ResourceEnumConverter.ConvertToString(PaymentStatus.Billed) }, GrammaticalResource.DayGenitiveSingular, GrammaticalResource.MonthNominative, GrammaticalResource.MonthGenitiveSingular, GrammaticalResource.MonthGenitivePlural, ProjectStatus = new[] { new { id = ProjectStatus.Open, title = ProjectsJSResource.StatusOpenProject }, new { id = ProjectStatus.Paused, title = ProjectsJSResource.StatusSuspendProject }, new { id = ProjectStatus.Closed, title = ProjectsJSResource.StatusClosedProject } }, StartModules = new[] { StartModule.TaskModule, StartModule.ProjectsModule, StartModule.DiscussionModule, StartModule.TimeTrackingModule }.Select(r => new { r.Page, r.StartModuleType, Title = r.Title() }), Statuses = CustomTaskStatus.GetDefaults().Select(r => new { id = r.Id, image = r.Image, imageType = r.ImageType, title = r.Title, description = r.Description, color = r.Color, statusType = r.StatusType, isDefault = r.IsDefault, available = r.Available, canChangeAvailable = r.CanChangeAvailable }) }) }); }
public string SendEmailActivationInstructions(Guid userID, string email) { if (userID == null) { throw new ArgumentNullException("userID"); } if (String.IsNullOrEmpty(email)) { throw new ArgumentNullException(Resources.Resource.ErrorEmailEmpty); } if (!email.TestEmailRegex()) { throw new InvalidEmailException(Resources.Resource.ErrorNotCorrectEmail); } try { UserInfo viewer = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); UserInfo user = CoreContext.UserManager.GetUsers(userID); if (user == null) { throw new UserNotFoundException(Resources.Resource.ErrorUserNotFound); } if (viewer == null) { throw new AccessDeniedException(Resources.Resource.ErrorAccessDenied); } if (viewer.IsAdmin() || viewer.ID == user.ID) { var existentUser = CoreContext.UserManager.GetUserByEmail(email); if (existentUser.ID != ASC.Core.Users.Constants.LostUser.ID && existentUser.ID != userID) { throw new InputException(CustomNamingPeople.Substitute <Resources.Resource>("ErrorEmailAlreadyExists")); } user.Email = email; if (user.ActivationStatus == EmployeeActivationStatus.Activated) { user.ActivationStatus = EmployeeActivationStatus.NotActivated; } CoreContext.UserManager.SaveUserInfo(user); if (viewer.ID == user.ID) { string newCookie = SecurityContext.AuthenticateMe(user.ID); CookiesManager.SetCookies(CookiesType.AuthKey, newCookie); } } else { email = user.Email; } if (user.ActivationStatus == EmployeeActivationStatus.Pending) { if (user.IsVisitor()) { StudioNotifyService.Instance.GuestInfoActivation(user); } else { StudioNotifyService.Instance.UserInfoActivation(user); } } else { StudioNotifyService.Instance.SendEmailActivationInstructions(user, email); } return(String.Format(Resources.Resource.MessageEmailActivationInstuctionsSentOnEmail, CreateEmailLink(email))); } catch (UserNotFoundException) { throw; } catch (AccessDeniedException) { throw; } catch (InputException) { throw; } catch (Exception) { throw new Exception(Resources.Resource.UnknownError); } }
protected void Page_Load(object sender, EventArgs e) { Page.RegisterBodyScripts("~/usercontrols/management/confirminviteactivation/js/confirm_invite_activation.js"); Page.RegisterStyle("~/usercontrols/management/confirminviteactivation/css/confirm_invite_activation.less"); var uid = Guid.Empty; try { uid = new Guid(Request["uid"]); } catch { } var email = GetEmailAddress(); if (_type != ConfirmType.Activation && AccountLinkControl.IsNotEmpty && !CoreContext.Configuration.Personal) { var thrd = (AccountLinkControl)LoadControl(AccountLinkControl.Location); thrd.InviteView = true; thrd.ClientCallback = "loginJoinCallback"; thrdParty.Visible = true; thrdParty.Controls.Add(thrd); } Page.Title = HeaderStringHelper.GetPageTitle(Resource.Authorization); UserInfo user; try { SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem); user = CoreContext.UserManager.GetUserByEmail(email); var usr = CoreContext.UserManager.GetUsers(uid); if (usr.ID.Equals(ASC.Core.Users.Constants.LostUser.ID) || usr.ID.Equals(ASC.Core.Configuration.Constants.Guest.ID)) { usr = CoreContext.UserManager.GetUsers(CoreContext.TenantManager.GetCurrentTenant().OwnerId); } _userAvatar = usr.GetMediumPhotoURL(); _userName = usr.DisplayUserName(true); _userPost = (usr.Title ?? "").HtmlEncode(); } finally { SecurityContext.Logout(); } if (_type == ConfirmType.LinkInvite || _type == ConfirmType.EmpInvite) { if (TenantStatisticsProvider.GetUsersCount() >= TenantExtra.GetTenantQuota().ActiveUsers&& _employeeType == EmployeeType.User) { ShowError(UserControlsCommonResource.TariffUserLimitReason); return; } if (!user.ID.Equals(ASC.Core.Users.Constants.LostUser.ID)) { ShowError(CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists")); return; } } else if (_type == ConfirmType.Activation) { if (user.IsActive) { ShowError(Resource.ErrorConfirmURLError); return; } if (user.ID.Equals(ASC.Core.Users.Constants.LostUser.ID) || user.Status == EmployeeStatus.Terminated) { ShowError(string.Format(Resource.ErrorUserNotFoundByEmail, email)); return; } } var tenant = CoreContext.TenantManager.GetCurrentTenant(); if (tenant != null) { var settings = SettingsManager.Instance.LoadSettings <IPRestrictionsSettings>(tenant.TenantId); if (settings.Enable && !IPSecurity.IPSecurity.Verify(tenant.TenantId)) { ShowError(Resource.ErrorAccessRestricted); return; } } if (!IsPostBack) { return; } var firstName = GetFirstName(); var lastName = GetLastName(); var pwd = (Request["pwdInput"] ?? "").Trim(); var mustChangePassword = false; LoginProfile thirdPartyProfile; //thirdPartyLogin confirmInvite if (Request["__EVENTTARGET"] == "thirdPartyLogin") { var valueRequest = Request["__EVENTARGUMENT"]; thirdPartyProfile = new LoginProfile(valueRequest); if (!string.IsNullOrEmpty(thirdPartyProfile.AuthorizationError)) { // ignore cancellation if (thirdPartyProfile.AuthorizationError != "Canceled at provider") { ShowError(HttpUtility.HtmlEncode(thirdPartyProfile.AuthorizationError)); } return; } if (string.IsNullOrEmpty(thirdPartyProfile.EMail)) { ShowError(HttpUtility.HtmlEncode(Resource.ErrorNotCorrectEmail)); return; } } if (Request["__EVENTTARGET"] == "confirmInvite") { if (String.IsNullOrEmpty(email)) { _errorMessage = Resource.ErrorEmptyUserEmail; return; } if (!email.TestEmailRegex()) { _errorMessage = Resource.ErrorNotCorrectEmail; return; } if (String.IsNullOrEmpty(firstName)) { _errorMessage = Resource.ErrorEmptyUserFirstName; return; } if (String.IsNullOrEmpty(lastName)) { _errorMessage = Resource.ErrorEmptyUserLastName; return; } var checkPassResult = CheckPassword(pwd); if (!String.IsNullOrEmpty(checkPassResult)) { _errorMessage = checkPassResult; return; } } var userID = Guid.Empty; try { SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem); if (_type == ConfirmType.EmpInvite || _type == ConfirmType.LinkInvite) { if (TenantStatisticsProvider.GetUsersCount() >= TenantExtra.GetTenantQuota().ActiveUsers&& _employeeType == EmployeeType.User) { ShowError(UserControlsCommonResource.TariffUserLimitReason); return; } UserInfo newUser; if (Request["__EVENTTARGET"] == "confirmInvite") { var fromInviteLink = _type == ConfirmType.LinkInvite; newUser = CreateNewUser(firstName, lastName, email, pwd, _employeeType, fromInviteLink); var messageAction = _employeeType == EmployeeType.User ? MessageAction.UserCreatedViaInvite : MessageAction.GuestCreatedViaInvite; MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, messageAction, newUser.DisplayUserName(false)); userID = newUser.ID; } if (Request["__EVENTTARGET"] == "thirdPartyLogin") { if (!String.IsNullOrEmpty(CheckPassword(pwd))) { pwd = UserManagerWrapper.GeneratePassword(); mustChangePassword = true; } var valueRequest = Request["__EVENTARGUMENT"]; thirdPartyProfile = new LoginProfile(valueRequest); newUser = CreateNewUser(GetFirstName(thirdPartyProfile), GetLastName(thirdPartyProfile), GetEmailAddress(thirdPartyProfile), pwd, _employeeType, false); var messageAction = _employeeType == EmployeeType.User ? MessageAction.UserCreatedViaInvite : MessageAction.GuestCreatedViaInvite; MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, messageAction, newUser.DisplayUserName(false)); userID = newUser.ID; if (!String.IsNullOrEmpty(thirdPartyProfile.Avatar)) { SaveContactImage(userID, thirdPartyProfile.Avatar); } var linker = new AccountLinker("webstudio"); linker.AddLink(userID.ToString(), thirdPartyProfile); } } else if (_type == ConfirmType.Activation) { user.ActivationStatus = EmployeeActivationStatus.Activated; user.FirstName = firstName; user.LastName = lastName; CoreContext.UserManager.SaveUserInfo(user); SecurityContext.SetUserPassword(user.ID, pwd); userID = user.ID; //notify if (user.IsVisitor()) { StudioNotifyService.Instance.GuestInfoAddedAfterInvite(user, pwd); MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, MessageAction.GuestActivated, user.DisplayUserName(false)); } else { StudioNotifyService.Instance.UserInfoAddedAfterInvite(user, pwd); MessageService.Send(HttpContext.Current.Request, MessageInitiator.System, MessageAction.UserActivated, user.DisplayUserName(false)); } } } catch (Exception exception) { _errorMessage = HttpUtility.HtmlEncode(exception.Message); return; } finally { SecurityContext.Logout(); } user = CoreContext.UserManager.GetUsers(userID); try { var cookiesKey = SecurityContext.AuthenticateMe(user.Email, pwd); CookiesManager.SetCookies(CookiesType.AuthKey, cookiesKey); MessageService.Send(HttpContext.Current.Request, MessageAction.LoginSuccess); StudioNotifyService.Instance.UserHasJoin(); if (mustChangePassword) { StudioNotifyService.Instance.UserPasswordChange(user); } } catch (Exception exception) { (Page as Confirm).ErrorMessage = HttpUtility.HtmlEncode(exception.Message); return; } UserHelpTourHelper.IsNewUser = true; if (CoreContext.Configuration.Personal) { PersonalSettings.IsNewUser = true; } Response.Redirect("~/"); }
protected void Page_PreLoad(object sender, EventArgs e) { if (!(this.Master is IStudioMaster)) { return; } var master = this.Master as IStudioMaster; //top navigator if (this.Master is StudioTemplate) { (this.Master as StudioTemplate).TopNavigationPanel.CustomTitle = CustomNamingPeople.Substitute <Resources.Resource>("Employees"); (this.Master as StudioTemplate).TopNavigationPanel.CustomTitleURL = CommonLinkUtility.GetEmployees(); (this.Master as StudioTemplate).TopNavigationPanel.CustomTitleIconURL = WebImageSupplier.GetAbsoluteWebPath("home.png"); } #region define profile type if (!String.IsNullOrEmpty(Request["type"])) { try { } catch { } } #endregion _userID = SecurityContext.CurrentAccount.ID; _productID = GetProductID(); #region find request user _userInfo = CoreContext.UserManager.GetUserByUserName(Request[CommonLinkUtility.ParamName_UserUserName]); if (_userInfo == null || _userInfo == Constants.LostUser) { if (!String.IsNullOrEmpty(Request["uid"])) { try { _userID = new Guid(Request["uid"]); } catch { _userID = SecurityContext.CurrentAccount.ID; } } if (!CoreContext.UserManager.UserExists(_userID)) { //user not found Response.Redirect(CommonLinkUtility.GetEmployees(_productID)); return; } else { _userInfo = CoreContext.UserManager.GetUsers(_userID); } } else { _userID = _userInfo.ID; } #endregion var self = SecurityContext.CurrentAccount.ID.Equals(_userID); var container = new Container { Body = new PlaceHolder(), Header = new PlaceHolder() }; master.ContentHolder.Controls.Add(container); container.BreadCrumbs.Add(new BreadCrumb { Caption = CustomNamingPeople.Substitute <Resources.Resource>("Employees"), NavigationUrl = CommonLinkUtility.GetEmployees(_productID) }); container.BreadCrumbs.Add(new BreadCrumb { Caption = (self ? Resources.Resource.MyProfile : (_userInfo.DisplayUserName(false))), NavigationUrl = CommonLinkUtility.GetEmployees(_productID) }); Title = HeaderStringHelper.GetPageTitle(CustomNamingPeople.Substitute <Resources.Resource>("Employees"), container.BreadCrumbs); //user card var userCard = (UserProfileControl)LoadControl(UserProfileControl.Location); userCard.UserInfo = _userInfo; container.Body.Controls.Add(new Literal { Text = "<div class=\"headerBase borderBase\" style=\"padding: 0px 0px 5px 15px; border-top:none; border-right:none; border-left:none;\">" + Resources.Resource.PersonalInfo + "</div><div style=\"padding:15px 0px 0px 0px\">" }); container.Body.Controls.Add(userCard); container.Body.Controls.Add(new Literal { Text = "</div><div style=height:20px;> </div>" }); var product = ProductManager.Instance[_productID]; if (product != null && product.Context != null && product.Context.UserActivityControlLoader != null) { container.Body.Controls.Add(product.Context.UserActivityControlLoader.LoadControl(_userID)); container.Body.Controls.Add(new Literal { Text = "<div style=height:20px;> </div>" }); } else { var isFirst = true; foreach (var prod in WebItemManager.Instance.GetItems(Web.Core.WebZones.WebZoneType.All).OfType <IProduct>()) { if (prod.Context == null || prod.Context.UserActivityControlLoader == null) { continue; } var sb = new StringBuilder(); sb.Append("<div id='studio_product_activityBox_" + prod.ID + "' class='borderBase tintMedium clearFix' style='border-left:none; border-right:none; margin-top:-1px; padding:10px;'>"); sb.Append("<div class='headerBase' style='float:left; cursor:pointer;' onclick=\"StudioManager.ToggleProductActivity('" + prod.ID + "');\">"); var logoURL = prod.GetIconAbsoluteURL(); if (!String.IsNullOrEmpty(logoURL)) { sb.Append("<img alt='' style='margin-right:5px;' align='absmiddle' src='" + logoURL + "'/>"); } sb.Append(prod.Name.HtmlEncode()); sb.Append("<img alt='' align='absmiddle' id='studio_activityProductState_" + prod.ID + "' style='margin-left:15px;' src='" + WebImageSupplier.GetAbsoluteWebPath(isFirst ? "collapse_down_dark.png" : "collapse_right_dark.png") + "'/>"); sb.Append("</div>"); sb.Append("</div>"); sb.Append("<div id=\"studio_product_activity_" + prod.ID + "\" style=\"padding-left:40px; " + (isFirst ? "" : "display:none;") + " padding-top:20px;\">"); container.Body.Controls.Add(new Literal { Text = sb.ToString() }); var activityControl = prod.Context.UserActivityControlLoader.LoadControl(_userID); container.Body.Controls.Add(activityControl); sb = new StringBuilder(); sb.Append("</div>"); container.Body.Controls.Add(new Literal { Text = sb.ToString() }); isFirst = false; } } Employee.WriteEmployeeActions(this); if (SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser)) { master.SideHolder.Controls.Add(Employee.GetEmployeeNavigation()); } var sideControl = (CompanyNavigation)LoadControl(CompanyNavigation.Location); master.SideHolder.Controls.Add(sideControl); }
public AjaxResponse SendEmailActivationInstructionsOnChange(string newEmail, string queryString) { const string StatusSuccess = "success"; const string StatusError = "error"; const string StatusFatalError = "fatalerror"; var response = new AjaxResponse { status = StatusSuccess }; if (String.IsNullOrEmpty(queryString)) { response.status = StatusFatalError; response.message = Resource.ErrorConfirmURLError; return(response); } if (String.IsNullOrEmpty(newEmail)) { response.status = StatusError; response.message = Resource.ErrorEmailEmpty; return(response); } try { var result = CheckValidationKey(queryString.Substring(1)); if (result != EmailValidationKeyProvider.ValidationResult.Ok) { response.status = StatusFatalError; switch (result) { case EmailValidationKeyProvider.ValidationResult.Invalid: response.message = Resource.ErrorInvalidActivationLink; break; case EmailValidationKeyProvider.ValidationResult.Expired: response.message = Resource.ErrorExpiredActivationLink; break; default: response.message = Resource.ErrorConfirmURLError; break; } return(response); } var user = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); if (user == null) { response.status = StatusFatalError; response.message = Resource.ErrorUserNotFound; return(response); } var existentUser = CoreContext.UserManager.GetUserByEmail(newEmail); if (existentUser != null && existentUser.ID == user.ID) { response.status = StatusError; response.message = Resource.ErrorEmailsAreTheSame; return(response); } if (existentUser != null && existentUser.ID != Constants.LostUser.ID) { response.status = StatusError; response.message = CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists"); return(response); } user.Email = newEmail; user.ActivationStatus = EmployeeActivationStatus.NotActivated; CoreContext.UserManager.SaveUserInfo(user); StudioNotifyService.Instance.SendEmailActivationInstructions(user, newEmail); MessageService.Send(Request, MessageAction.UserSentActivationInstructions, MessageTarget.Create(user.ID), user.DisplayUserName(false)); response.message = String.Format(Resource.MessageEmailActivationInstuctionsSentOnEmail, "<b>" + newEmail + "</b>"); return(response); } catch (Exception) { response.status = StatusFatalError; response.message = Resource.UnknownError; return(response); } }
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.Replace("*", ""), 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() }); } }
[Create(@"register", false)] //NOTE: this method doesn't requires auth!!! public string RegisterUserOnPersonal(string email, string lang, bool spam, bool analytics) { if (!CoreContext.Configuration.Personal) { throw new MethodAccessException("Method is only available on personal.onlyoffice.com"); } try { if (CoreContext.Configuration.CustomMode) { lang = "ru-RU"; } var cultureInfo = SetupInfo.EnabledCultures.Find(c => String.Equals(c.TwoLetterISOLanguageName, lang, StringComparison.InvariantCultureIgnoreCase)); if (cultureInfo != null) { Thread.CurrentThread.CurrentUICulture = cultureInfo; } email.ThrowIfNull(new ArgumentException(Resource.ErrorEmailEmpty, "email")); if (!email.TestEmailRegex()) { throw new ArgumentException(Resource.ErrorNotCorrectEmail, "email"); } var newUserInfo = CoreContext.UserManager.GetUserByEmail(email); if (CoreContext.UserManager.UserExists(newUserInfo.ID)) { if (!SetupInfo.IsSecretEmail(email) || SecurityContext.IsAuthenticated) { throw new Exception(CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists")); } try { SecurityContext.AuthenticateMe(Constants.CoreSystem); CoreContext.UserManager.DeleteUser(newUserInfo.ID); } finally { SecurityContext.Logout(); } } if (!spam) { try { const string _databaseID = "com"; using (var db = DbManager.FromHttpContext(_databaseID)) { db.ExecuteNonQuery(new SqlInsert("template_unsubscribe", false) .InColumnValue("email", email.ToLowerInvariant()) .InColumnValue("reason", "personal") ); LogManager.GetLogger("ASC.Web").Debug(String.Format("Write to template_unsubscribe {0}", email.ToLowerInvariant())); } } catch (Exception ex) { LogManager.GetLogger("ASC.Web").Debug(String.Format("ERROR write to template_unsubscribe {0}, email:{1}", ex.Message, email.ToLowerInvariant())); } } StudioNotifyService.Instance.SendInvitePersonal(email, String.Empty, analytics); } catch (Exception ex) { return(ex.Message); } return(string.Empty); }
protected void RenderHeader() { var topNavigationPanel = (TopNavigationPanel)LoadControl(TopNavigationPanel.Location); topNavigationPanel.SingleSearchHandlerType = typeof(SearchHandler); var absolutePathWithoutQuery = Request.Url.AbsolutePath.Substring(0, Request.Url.AbsolutePath.IndexOf(".aspx")); var sysName = absolutePathWithoutQuery.Substring(absolutePathWithoutQuery.LastIndexOf('/') + 1); var project = RequestContext.GetCurrentProject(false); var projectID = -1; if (RequestContext.IsInConcreteProject()) { projectID = project.ID; var rigthItems = new List <NavigationItem>(); foreach (var webitem in WebItemManager.Instance.GetSubItems(ProductEntryPoint.ID)) { var module = webitem as IModule; var navigationItem = new NavigationItem() { URL = String.Format(webitem.StartURL, projectID), Name = webitem.Name, Description = webitem.Description, Selected = String.Compare(sysName, module.ModuleSysName, true) == 0 }; var added = false; if (String.Compare(module.ModuleSysName, "History", true) == 0 || String.Compare(module.ModuleSysName, "ProjectAction", true) == 0 || String.Compare(module.ModuleSysName, "ProjectTeam", true) == 0) { navigationItem.RightAlign = true; rigthItems.Add(navigationItem); added = true; } //hide in private projects if (String.Compare(module.ModuleSysName, "Messages", true) == 0 && !ProjectSecurity.CanReadMessages(RequestContext.GetCurrentProject())) { continue; } if (String.Compare(module.ModuleSysName, "TMDocs", true) == 0 && !ProjectSecurity.CanReadFiles(RequestContext.GetCurrentProject())) { continue; } if (String.Compare(module.ModuleSysName, "TMDocs", true) == 0) { navigationItem.Selected = String.Compare(sysName, "tmdocs", true) == 0; navigationItem.Name = ProjectsFileResource.Documents; navigationItem.URL = PathProvider.BaseAbsolutePath + "tmdocs.aspx?prjID=" + projectID; } if (!added) { topNavigationPanel.NavigationItems.Add(navigationItem); } } rigthItems.Reverse(); topNavigationPanel.NavigationItems.AddRange(rigthItems); } else { topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "default.aspx"), Name = ProjectsCommonResource.Dashboard, Description = "", Selected = String.Compare(sysName, "Default", true) == 0 }); topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "projects.aspx"), Name = ProjectResource.Projects, Description = "", Selected = String.Compare(sysName, "Projects", true) == 0 || String.Compare(sysName, "ProjectAction", true) == 0 }); topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "milestones.aspx"), Name = MilestoneResource.Milestones, Description = "", Selected = String.Compare(sysName, "milestones", true) == 0 }); topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "tasks.aspx"), Name = TaskResource.Tasks, Description = "", Selected = String.Compare(sysName, "tasks", true) == 0 }); topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "messages.aspx"), Name = MessageResource.Messages, Description = "", Selected = String.Compare(sysName, "messages", true) == 0 }); topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "reports.aspx"), Name = ReportResource.Reports, Description = "", Selected = String.Compare(sysName, "Reports", true) == 0 || String.Compare(sysName, "Templates", true) == 0 }); topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "history.aspx"), Name = ProjectsCommonResource.History, Description = "", Selected = String.Compare(sysName, "History", true) == 0 }); if (ProjectSecurity.IsAdministrator(SecurityContext.CurrentAccount.ID)) { topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = String.Concat(PathProvider.BaseAbsolutePath, "projectTemplates.aspx"), Name = ProjectResource.ProjectTemplates, Description = "", Selected = String.Compare(sysName, "ProjectTemplates", true) == 0, RightAlign = true }); } topNavigationPanel.NavigationItems.Add(new NavigationItem { URL = CommonLinkUtility.GetEmployees(ProductEntryPoint.ID), Name = CustomNamingPeople.Substitute <ProjectsCommonResource>("Employees"), Description = "", Selected = UserOnlineManager.Instance.IsEmployeesPage() || UserOnlineManager.Instance.IsUserProfilePage(), RightAlign = true }); } if (RequestContext.HasAnyProjects()) { var pageName = "default"; switch (sysName) { case "userprofile": case "default": case "reports": case "projectTemplates": case "createprojectfromtemplate": case "editprojecttemplate": pageName = "projects"; break; case "settings": pageName = "projectAction"; break; case "employee": pageName = "projectTeam"; break; default: pageName = sysName; break; } topNavigationPanel.CustomInfoHTML = RenderAllProjectsBlock(projectID, pageName); } _topNavigationPanelPlaceHolder.Controls.Add(topNavigationPanel); }
public string InitDepartmentsDdl() { var sb = new StringBuilder().AppendFormat("<option value='-1' id='ddlDepartment-1'>{0}</option>", CustomNamingPeople.Substitute <ProjectsCommonResource>("AllDepartments").HtmlEncode()); CoreContext.UserManager .GetDepartments() .OrderBy(g => g.Name) .ToList() .ForEach(g => sb.AppendFormat("<option value='{0}' id='ddlDepartment{0}' {2}>{1}</option>", g.ID, g.Name.HtmlEncode(), g.ID == Report.Filter.DepartmentId ? "selected='selected'" : "")); return(sb.ToString()); }
public string SendEmailActivationInstructions(Guid userID, string email) { if (userID == Guid.Empty) { throw new ArgumentNullException("userID"); } email = (email ?? "").Trim(); if (String.IsNullOrEmpty(email)) { throw new ArgumentNullException(Resource.ErrorEmailEmpty); } if (!email.TestEmailRegex()) { throw new InvalidEmailException(Resource.ErrorNotCorrectEmail); } try { var viewer = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID); var user = CoreContext.UserManager.GetUsers(userID); if (user == null) { throw new UserNotFoundException(Resource.ErrorUserNotFound); } if (viewer == null) { throw new AccessDeniedException(Resource.ErrorAccessDenied); } if (viewer.IsAdmin() || viewer.ID == user.ID) { var existentUser = CoreContext.UserManager.GetUserByEmail(email); if (existentUser.ID != ASC.Core.Users.Constants.LostUser.ID && existentUser.ID != userID) { throw new InputException(CustomNamingPeople.Substitute <Resource>("ErrorEmailAlreadyExists")); } user.Email = email; if (user.ActivationStatus == EmployeeActivationStatus.Activated) { user.ActivationStatus = EmployeeActivationStatus.NotActivated; } if (user.ActivationStatus == (EmployeeActivationStatus.AutoGenerated | EmployeeActivationStatus.Activated)) { user.ActivationStatus = EmployeeActivationStatus.AutoGenerated; } CoreContext.UserManager.SaveUserInfo(user, syncCardDav: true); } else { email = user.Email; } if (user.ActivationStatus == EmployeeActivationStatus.Pending && !user.IsLDAP()) { if (user.IsVisitor()) { StudioNotifyService.Instance.GuestInfoActivation(user); } else { StudioNotifyService.Instance.UserInfoActivation(user); } } else { StudioNotifyService.Instance.SendEmailActivationInstructions(user, email); } MessageService.Send(HttpContext.Current.Request, MessageAction.UserSentActivationInstructions, user.DisplayUserName(false)); return(String.Format(Resource.MessageEmailActivationInstuctionsSentOnEmail, "<b>" + email + "</b>")); } catch (UserNotFoundException) { throw; } catch (AccessDeniedException) { throw; } catch (InputException) { throw; } catch (Exception) { throw new Exception(Resource.UnknownError); } }
protected void Page_Load(object sender, EventArgs e) { LinkText = CustomNamingPeople.Substitute <Resources.Resource>("InviteUsersToPortalLink").HtmlEncode(); }
protected void Page_Load(object sender, EventArgs e) { Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "confirm_invite_activation_style", "<link rel=\"stylesheet\" type=\"text/css\" href=\"" + WebSkin.GetUserSkin().GetAbsoluteWebPath("usercontrols/management/confirminviteactivation/css/<theme_folder>/confirm_invite_activation.css") + "\">", false); Page.ClientScript.RegisterClientScriptInclude(typeof(string), "confirm_invite_activation_script", WebPath.GetPath("usercontrols/management/confirminviteactivation/js/confirm_invite_activation.js")); _tenantInfoSettings = SettingsManager.Instance.LoadSettings <TenantInfoSettings>(TenantProvider.CurrentTenantID); Guid uid = Guid.Empty; try { uid = new Guid(Request["uid"]); } catch { } var type = typeof(ConfirmType).TryParseEnum(Request["type"] ?? "", ConfirmType.EmpInvite); var email = GetEmailAddress(); var key = Request["key"] ?? ""; var fap = Request["fap"] ?? ""; //if (!string.IsNullOrEmpty(_email)) //{ //var thrd = LoadControl(AccountLinkControl.Location) as AccountLinkControl; //thrd.InviteView = true; //thrd.ClientCallback = "loginJoinCallback"; //thrdParty.Controls.Add(thrd); //} Page.Title = HeaderStringHelper.GetPageTitle(Resources.Resource.Authorization, null, null); UserInfo user; try { SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem); user = CoreContext.UserManager.GetUserByEmail(email); var usr = CoreContext.UserManager.GetUsers(uid); if (usr.ID.Equals(ASC.Core.Users.Constants.LostUser.ID) || usr.ID.Equals(ASC.Core.Configuration.Constants.Guest.ID)) { usr = CoreContext.UserManager.GetUsers(CoreContext.TenantManager.GetCurrentTenant().OwnerId); } _userAvatar = usr.GetMediumPhotoURL(); _userName = usr.DisplayUserName(true); _userPost = (usr.Title ?? "").HtmlEncode(); } finally { SecurityContext.Logout(); } if (type == ConfirmType.LinkInvite || type == ConfirmType.EmpInvite) { if (!user.ID.Equals(ASC.Core.Users.Constants.LostUser.ID)) { ShowError(CustomNamingPeople.Substitute <Resources.Resource>("ErrorEmailAlreadyExists")); return; } } else if (type == ConfirmType.Activation) { if (user.IsActive) { ShowError(Resources.Resource.ErrorConfirmURLError); return; } if (user.ID.Equals(ASC.Core.Users.Constants.LostUser.ID)) { ShowError(string.Format(Resources.Resource.ErrorUserNotFoundByEmail, email)); return; } } if (!IsPostBack) { return; } var firstName = GetFirstName(); var lastName = GetLastName(); var pwd = (Request["pwdInput"] ?? "").Trim(); var repwd = (Request["repwdInput"] ?? "").Trim(); LoginProfile thirdPartyProfile; //thirdPartyLogin confirmInvite if (Request["__EVENTTARGET"] == "thirdPartyLogin") { var valueRequest = Request["__EVENTARGUMENT"]; thirdPartyProfile = new LoginProfile(valueRequest); if (!string.IsNullOrEmpty(thirdPartyProfile.AuthorizationError)) { // ignore cancellation if (thirdPartyProfile.AuthorizationError != "Canceled at provider") { ShowError(HttpUtility.HtmlEncode(thirdPartyProfile.AuthorizationError)); } return; } if (string.IsNullOrEmpty(thirdPartyProfile.EMail)) { ShowError(HttpUtility.HtmlEncode(Resources.Resource.ErrorNotCorrectEmail)); return; } } if (Request["__EVENTTARGET"] == "confirmInvite") { if (String.IsNullOrEmpty(email)) { _errorMessage = Resources.Resource.ErrorEmptyUserEmail; return; } if (!email.TestEmailRegex()) { _errorMessage = Resources.Resource.ErrorNotCorrectEmail; return; } if (String.IsNullOrEmpty(firstName)) { _errorMessage = Resources.Resource.ErrorEmptyUserFirstName; return; } if (String.IsNullOrEmpty(lastName)) { _errorMessage = Resources.Resource.ErrorEmptyUserLastName; return; } var checkPassResult = CheckPassword(pwd, repwd); if (!String.IsNullOrEmpty(checkPassResult)) { _errorMessage = checkPassResult; return; } } var userID = Guid.Empty; try { SecurityContext.AuthenticateMe(ASC.Core.Configuration.Constants.CoreSystem); if (type == ConfirmType.EmpInvite || type == ConfirmType.LinkInvite) { UserInfo newUser; if (Request["__EVENTTARGET"] == "confirmInvite") { newUser = CreateNewUser(firstName, lastName, email, pwd); userID = newUser.ID; } if (Request["__EVENTTARGET"] == "thirdPartyLogin") { if (!String.IsNullOrEmpty(CheckPassword(pwd, repwd))) { pwd = UserManagerWrapper.GeneratePassword(); } var valueRequest = Request["__EVENTARGUMENT"]; thirdPartyProfile = new LoginProfile(valueRequest); newUser = CreateNewUser(GetFirstName(thirdPartyProfile), GetLastName(thirdPartyProfile), GetEmailAddress(thirdPartyProfile), pwd); userID = newUser.ID; var linker = new AccountLinker(WebConfigurationManager.ConnectionStrings["webstudio"]); linker.AddLink(userID.ToString(), thirdPartyProfile); } #region Department try { var deptID = new Guid((Request["deptID"] ?? "").Trim()); CoreContext.UserManager.AddUserIntoGroup(userID, deptID); } catch { } #endregion } else if (type == ConfirmType.Activation) { user.ActivationStatus = EmployeeActivationStatus.Activated; user.FirstName = firstName; user.LastName = lastName; CoreContext.UserManager.SaveUserInfo(user); SecurityContext.SetUserPassword(user.ID, pwd); userID = user.ID; //notify StudioNotifyService.Instance.UserInfoAddedAfterInvite(user, pwd); } if (String.Equals(fap, "1")) { CoreContext.UserManager.AddUserIntoGroup(userID, ASC.Core.Users.Constants.GroupAdmin.ID); } } catch (Exception exception) { (Page as confirm).ErrorMessage = HttpUtility.HtmlEncode(exception.Message); return; } finally { SecurityContext.Logout(); } try { var cookiesKey = SecurityContext.AuthenticateMe(userID.ToString(), pwd); CookiesManager.SetCookies(CookiesType.UserID, userID.ToString()); CookiesManager.SetCookies(CookiesType.AuthKey, cookiesKey); StudioNotifyService.Instance.UserHasJoin(); } catch (Exception exception) { (Page as confirm).ErrorMessage = HttpUtility.HtmlEncode(exception.Message); return; } UserOnlineManager.Instance.RegistryOnlineUser(SecurityContext.CurrentAccount.ID); WebItemManager.Instance.ItemGlobalHandlers.Login(SecurityContext.CurrentAccount.ID); var smsAuthSettings = SettingsManager.Instance.LoadSettings <StudioSmsNotificationSettings>(TenantProvider.CurrentTenantID); if (smsAuthSettings.Enable) { var uData = new UserTransferData(); var usr = CoreContext.UserManager.GetUsers(userID); uData.Login = usr.Email; uData.UserId = userID; Session["UserTransferData"] = uData; } Response.Redirect("~/"); }