Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        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
            });
        }
Exemplo n.º 3
0
        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());
        }
Exemplo n.º 4
0
 public override string GetReportFileName()
 {
     return(CustomNamingPeople.Substitute <ReportResource>("ReportEmployeesWithoutActiveTasks_Title").HtmlEncode());
 }
Exemplo n.º 5
0
        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;
        }
Exemplo n.º 6
0
        [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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 9
0
 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);
        }
Exemplo n.º 11
0
        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);
            }
        }
Exemplo n.º 12
0
        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());
        }
Exemplo n.º 13
0
        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
             })
         })
     });
 }
Exemplo n.º 15
0
        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);
            }
        }
Exemplo n.º 16
0
        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("~/");
        }
Exemplo n.º 17
0
        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;>&nbsp;</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;>&nbsp;</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);
        }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 21
0
        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);
        }
Exemplo n.º 22
0
        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());
        }
Exemplo n.º 23
0
        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);
            }
        }
Exemplo n.º 24
0
 protected void Page_Load(object sender, EventArgs e)
 {
     LinkText = CustomNamingPeople.Substitute <Resources.Resource>("InviteUsersToPortalLink").HtmlEncode();
 }
Exemplo n.º 25
0
        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("~/");
        }