コード例 #1
0
        public override FileUploadResult ProcessUpload(HttpContext context)
        {
            if (context.Request.Files.Count == 0)
            {
                return(Error("No files."));
            }

            if (!TenantExtra.GetTenantQuota().HasBackup)
            {
                return(Error("Backup not allowed."));
            }

            if (!SecurityContext.CheckPermissions(SecutiryConstants.EditPortalSettings))
            {
                return(Error("Access denied."));
            }

            HttpPostedFile file = context.Request.Files[0];

            if (file.ContentLength <= 0 || file.ContentLength > MaxBackupFileSize)
            {
                return(Error("File size must be greater than 0 and less than {0} bytes", MaxBackupFileSize));
            }

            var filePath = GetFilePath();

            file.SaveAs(filePath);

            return(Success(filePath));
        }
コード例 #2
0
        public string SendNotificationToChange(string userId)
        {
            var user = CoreContext.UserManager.GetUsers(
                string.IsNullOrEmpty(userId)
                    ? SecurityContext.CurrentAccount.ID
                    : new Guid(userId));

            var canChange =
                user.IsMe() ||
                SecurityContext.CheckPermissions(new UserSecurityProvider(user.ID), ASC.Core.Users.Constants.Action_EditUser);

            if (!canChange)
            {
                throw new SecurityAccessDeniedException(Resource.ErrorAccessDenied);
            }

            user.MobilePhoneActivationStatus = MobilePhoneActivationStatus.NotActivated;
            CoreContext.UserManager.SaveUserInfo(user);

            if (user.IsMe())
            {
                return(CommonLinkUtility.GetConfirmationUrl(user.Email, ConfirmType.PhoneActivation));
            }

            StudioNotifyService.Instance.SendMsgMobilePhoneChange(user);
            return(string.Empty);
        }
コード例 #3
0
        private void AddStudioItems()
        {
            if (SecurityContext.IsAuthenticated && !(Page is Wizard) && !(Page is confirm))
            {
                //all products
                this.NavigationItems.Add(new NavigationItem()
                {
                    Name = Resources.UserControlsCommonResource.AllProductsTitle,
                    URL  = CommonLinkUtility.GetDefault(),
                    //Selected = Page is ASC.Web.Studio._Default
                });

                //settings
                if (SecurityContext.CheckPermissions(ASC.Core.Users.Constants.Action_AddRemoveUser,
                                                     ASC.Core.Users.Constants.Action_EditUser,
                                                     ASC.Core.Users.Constants.Action_EditGroups))
                {
                    this.NavigationItems.Add(new NavigationItem()
                    {
                        //Selected = UserOnlineManager.Instance.IsAdministrationPage(),
                        URL  = CommonLinkUtility.GetAdministration(ManagementType.General),
                        Name = Resources.Resource.Administration
                    });
                }
            }
        }
コード例 #4
0
ファイル: EmployeeApi.cs プロジェクト: Wifisoft/teamlab.v6.5
 private static void UpdateDepartments(IEnumerable <Guid> department, UserInfo user)
 {
     if (SecurityContext.CheckPermissions(Core.Users.Constants.Action_EditGroups))
     {
         if (department != null)
         {
             var groups = CoreContext.UserManager.GetUserGroups(user.ID);
             foreach (var groupInfo in groups)
             {
                 CoreContext.UserManager.RemoveUserFromGroup(user.ID, groupInfo.ID);
                 user.Department = "";
             }
             foreach (var guid in department)
             {
                 var userDepartment = CoreContext.GroupManager.GetGroupInfo(guid);
                 if (userDepartment != Core.Users.Constants.LostGroupInfo)
                 {
                     user.Department = userDepartment.Name;
                     user.Title      = "";
                     CoreContext.UserManager.AddUserIntoGroup(user.ID, guid);
                 }
             }
         }
     }
 }
コード例 #5
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser))
            {
                Response.Redirect(CommonLinkUtility.GetDefault());
            }

            var tariff = (ASC.Web.Studio.UserControls.Management.TariffLimitExceed)LoadControl(Studio.UserControls.Management.TariffLimitExceed.Location);

            Tariff.Controls.Add(tariff);
            var quota = TenantExtra.GetTenantQuota();

            PeopleLimit = Math.Min(quota.ActiveUsers - TenantStatisticsProvider.GetUsersCount(), 0);
            FreeTariff  = (quota.Free || quota.NonProfit || quota.Trial) && !quota.Open;
            HelpLink    = CommonLinkUtility.GetHelpLink();

            icon.Options.IsPopup = true;
            icon.Options.PopupContainerCssClass = "okcss popupContainerClass";
            icon.Options.OnCancelButtonClick    = "ASC.People.Import.hideInfoWindow('okcss');";

            limitPanel.Options.IsPopup             = true;
            limitPanel.Options.OnCancelButtonClick = "ASC.People.Import.hideImportUserLimitPanel();";

            Utility.RegisterTypeForAjax(GetType());

            RegisterScript();
        }
コード例 #6
0
 public static bool CheckPermissions(ISecurityObjectId objectId, ISecurityObjectProvider securityObjProvider, params IAction[] actions)
 {
     if (IsAdministrator())
     {
         return(true);
     }
     return(SecurityContext.CheckPermissions(objectId, securityObjProvider, actions));
 }
コード例 #7
0
        public AllowedActions(UserInfo userInfo)
        {
            var isOwner = userInfo.IsOwner();
            var isMe    = userInfo.IsMe();

            AllowAddOrDelete = SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser) && (!isOwner || isMe);
            AllowEdit        = SecurityContext.CheckPermissions(new UserSecurityProvider(userInfo.ID), Constants.Action_EditUser) && (!isOwner || isMe);
        }
コード例 #8
0
 public bool CheckPermissions(Guid shortcutID, string currentUrl)
 {
     if (shortcutID.Equals(new Guid("499FCB8B-F715-45b2-A112-E99826F4B401")))            //News
     {
         return(SecurityContext.CheckPermissions(NewsConst.Action_Edit));
     }
     return(true);
 }
コード例 #9
0
        private void InitUserTypeSelector()
        {
            var canAddUser = TenantStatisticsProvider.GetUsersCount() < TenantExtra.GetTenantQuota().ActiveUsers;

            var canEditType = SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser) &&
                              (!(ProfileIsAdmin || ProfileIsAnyModuleAdmin) || !IsPageEditProfileFlag);

            var isVisitorType = (ProfileIsMe && !IsPageEditProfileFlag) ? Request["type"] == "guest" : ProfileIsVisitor;

            if (canAddUser)
            {
                if (isVisitorType && !canEditType)
                {
                    UserTypeSelectorClass          = "disabled";
                    UserTypeSelectorGuestItemClass = "active";
                    UserTypeSelectorUserItemClass  = "disabled";
                }
                else
                {
                    if (canEditType)
                    {
                        UserTypeSelectorClass          = "";
                        UserTypeSelectorGuestItemClass = isVisitorType ? "active" : "";
                        UserTypeSelectorUserItemClass  = isVisitorType ? "" : "active";
                    }
                    else
                    {
                        UserTypeSelectorClass          = "disabled";
                        UserTypeSelectorGuestItemClass = "disabled";
                        UserTypeSelectorUserItemClass  = "active";
                    }
                }
            }
            else
            {
                if (isVisitorType || !IsPageEditProfileFlag)
                {
                    UserTypeSelectorClass          = canEditType ? "" : "disabled";
                    UserTypeSelectorGuestItemClass = "active";
                    UserTypeSelectorUserItemClass  = "disabled";
                }
                else
                {
                    if (canEditType)
                    {
                        UserTypeSelectorClass          = "";
                        UserTypeSelectorGuestItemClass = isVisitorType ? "active" : "";
                        UserTypeSelectorUserItemClass  = isVisitorType ? "" : "active";
                    }
                    else
                    {
                        UserTypeSelectorClass          = "disabled";
                        UserTypeSelectorGuestItemClass = "disabled";
                        UserTypeSelectorUserItemClass  = "active";
                    }
                }
            }
        }
コード例 #10
0
        protected void Page_Load(object sender, EventArgs e)
        {
            IsPageEditProfileFlag = (Request["action"] == "edit");

            ProfileHelper = new ProfileHelper(Request["user"]);
            UserInfo      = ProfileHelper.UserInfo;

            if ((IsPageEditProfileFlag && !(UserInfo.IsMe() || CanEdit())) || (!IsPageEditProfileFlag && !IsAdmin()))
            {
                Response.Redirect("~/products/people/", true);
            }

            Page.RegisterBodyScripts("~/usercontrols/users/userprofile/js/userprofileeditcontrol.js");
            Page.RegisterStyle("~/usercontrols/users/userprofile/css/profileeditcontrol_style.less");

            CanAddUser = TenantStatisticsProvider.GetUsersCount() < TenantExtra.GetTenantQuota().ActiveUsers;

            CanEditType = SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser) &&
                          (!(UserInfo.IsAdmin() || IsModuleAdmin()) || !IsPageEditProfileFlag);

            if (IsPageEditProfileFlag)
            {
                Phone         = UserInfo.MobilePhone.HtmlEncode();
                ProfileGender = UserInfo.Sex.HasValue ? UserInfo.Sex.Value ? "1" : "0" : "-1";
                Departments   = CoreContext.UserManager.GetUserGroups(UserInfo.ID);
                SocContacts   = ProfileHelper.Contacts;
                OtherContacts = new List <MyContact>();
                OtherContacts.AddRange(ProfileHelper.Emails);
                OtherContacts.AddRange(ProfileHelper.Messengers);
                OtherContacts.AddRange(ProfileHelper.Phones);
                var deps = Departments.ToList();

                var script =
                    String.Format(
                        @"<script type='text/javascript'>
                                    var departmentsList = {0};
                                    var socContacts = {1};
                                    var otherContacts = {2};
                                    var userId= {3};
                                  
                </script>",
                        JsonConvert.SerializeObject(deps.ConvertAll(item => new
                {
                    id    = item.ID,
                    title = item.Name.HtmlEncode()
                })),
                        JsonConvert.SerializeObject(SocContacts),
                        JsonConvert.SerializeObject(OtherContacts),
                        JsonConvert.SerializeObject(UserInfo.ID));
                Page.ClientScript.RegisterStartupScript(GetType(), Guid.NewGuid().ToString(), script);
            }

            var photoControl = (LoadPhotoControl)LoadControl(LoadPhotoControl.Location);

            loadPhotoWindow.Controls.Add(photoControl);

            Page.Title = HeaderStringHelper.GetPageTitle(GetTitle());
        }
コード例 #11
0
        public static string GetCreateContentPageUrl()
        {
            if (SecurityContext.CheckPermissions(NewsConst.Action_Add))
            {
                return(FeedUrls.EditNewsUrl);
            }

            return(null);
        }
コード例 #12
0
        public static string GetCreateContentPageUrl()
        {
            if (SecurityContext.CheckPermissions(new PersonalBlogSecObject(CoreContext.UserManager.GetUsers(
                                                                               SecurityContext.CurrentAccount.ID)), Constants.Action_AddPost))
            {
                return(VirtualPathUtility.ToAbsolute(Constants.BaseVirtualPath + "AddBlog.aspx"));
            }

            return(null);
        }
コード例 #13
0
        protected override void OnPreInit(EventArgs e)
        {
            base.OnPreInit(e);

            if (!SecurityContext.CheckPermissions(SecutiryConstants.EditPortalSettings))
            {
                Response.Redirect(VirtualPathUtility.ToAbsolute("~/"));
                return;
            }
        }
コード例 #14
0
        public bool CheckPermissions(Guid shortcutID, string currentUrl)
        {
            if (shortcutID.Equals(new Guid("98DB8D88-EDF2-4f82-B3AF-B95E87E3EE5C")) ||
                shortcutID.Equals(new Guid("20673DF0-665E-4fc8-9B44-D48B2A783508")))
            {
                return(SecurityContext.CheckPermissions(new PersonalBlogSecObject(CoreContext.UserManager.GetUsers(
                                                                                      SecurityContext.CurrentAccount.ID)), Constants.Action_AddPost));
            }

            return(false);
        }
コード例 #15
0
 //new user
 private static void WriteNewUserAction(SideActions actionsControl)
 {
     if (SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser))
     {
         actionsControl.Controls.Add(new NavigationItem
         {
             Name    = CustomNamingPeople.Substitute <Resources.Resource>("RegistryNewEmployeeButton"),
             URL     = "javascript:StudioUserMaker.ShowNewUserDialog();",
             IsPromo = (SetupInfo.WorkMode == WorkMode.Promo)
         });
     }
 }
コード例 #16
0
        protected override void OnPreInit(EventArgs e)
        {
            base.OnPreInit(e);
            if (CoreContext.Configuration.YourDocs)
            {
                Context.Response.Redirect(CommonLinkUtility.FilesBaseAbsolutePath);
            }

            if (!SecurityContext.CheckPermissions(SecutiryConstants.EditPortalSettings))
            {
                Response.Redirect(VirtualPathUtility.ToAbsolute("~/"));
            }
        }
コード例 #17
0
        protected override void OnPreInit(EventArgs e)
        {
            base.OnPreInit(e);
            if (CoreContext.Configuration.Personal)
            {
                Context.Response.Redirect(FilesLinkUtility.FilesBaseAbsolutePath);
            }

            if (!SecurityContext.CheckPermissions(SecutiryConstants.EditPortalSettings))
            {
                Response.Redirect(CommonLinkUtility.GetDefault());
            }

            TenantAccess = TenantAccessSettings.Load();
        }
コード例 #18
0
 //new department
 private static void WriteAddDepartmentAction(Page page, SideActions actionsControl)
 {
     if (SecurityContext.CheckPermissions(ASC.Core.Users.Constants.Action_EditGroups))
     {
         var depAddControl = (DepartmentAdd)page.LoadControl(DepartmentAdd.Location);
         depAddControl.ProductID = CommonLinkUtility.GetProductID();
         actionsControl.Controls.Add(depAddControl);
         actionsControl.Controls.Add(new NavigationItem()
         {
             Name    = CustomNamingPeople.Substitute <Resources.Resource>("RegistryNewDepartmentButton"),
             URL     = "javascript:StudioManagement.AddDepartmentOpenDialog();",
             IsPromo = (SetupInfo.WorkMode == WorkMode.Promo)
         });
     }
 }
コード例 #19
0
        //user import
        private static void WriteAddEmployeesAction(Page page, SideActions actionsControl)
        {
            if (SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser))
            {
                actionsControl.Controls.Add(new ImportUsersWebControl());

                const string onclickJavascript = "ImportUsersManager.ShowImportControl();";

                var importUsersHtml = String.Format(@"<a href='javascript:void(0);' class='linkAction{0}' onclick=""{2} return false;"">{1}</a>",
                                                    (SetupInfo.WorkMode == WorkMode.Promo) ? " promoAction" : string.Empty,
                                                    CustomNamingPeople.Substitute <Resources.Resource>("AddEmployeesButton").HtmlEncode(),
                                                    onclickJavascript);

                actionsControl.Controls.Add(new HtmlMenuItem(importUsersHtml));
            }
        }
コード例 #20
0
        public FileUploadResult ProcessUpload(HttpContext context)
        {
            var result = new FileUploadResult();

            try
            {
                SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser);

                if (context.Request.Files.Count != 0)
                {
                    var logo = context.Request.Files[0];
                    var ext  = FileUtility.GetFileExtension(logo.FileName);

                    if (ext != ".csv")
                    {
                        result.Success = false;
                        result.Message = Resource.ErrorEmptyUploadFileSelected;
                        return(result);
                    }

                    IUserImporter importer = context.Request["obj"] == "txt"
                                                 ? new TextFileUserImporter(logo.InputStream)
                    {
                        DefaultHeader = "Email;FirstName;LastName",
                    }
                                                 : new OutlookCSVUserImporter(logo.InputStream);

                    var users = importer.GetDiscoveredUsers();

                    result.Success = true;
                    result.Message = JsonContacts(users);
                }
                else
                {
                    result.Success = false;
                    result.Message = Resource.ErrorEmptyUploadFileSelected;
                }
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Message = ex.Message.HtmlEncode();
            }

            return(result);
        }
コード例 #21
0
        private bool CheckPermissions(ISecurityObject securityObj, ASC.Common.Security.Authorizing.Action action, bool silent)
        {
            if (securityObj == null)
            {
                throw new Exception(Resources.CalendarApiResource.ErrorItemNotFound);
            }

            if (silent)
            {
                return(SecurityContext.CheckPermissions(securityObj, action));
            }
            else
            {
                SecurityContext.DemandPermissions(securityObj, action);
            }

            return(true);
        }
コード例 #22
0
        //resend invites to pending users
        private static void WriteResendInvitesAction(Page page, SideActions actionsControl)
        {
            if (SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser))
            {
                var users = new List <UserInfo>(CoreContext.UserManager.GetUsers()).FindAll(u => u.ActivationStatus == EmployeeActivationStatus.Pending);
                if (users.Count > 0)
                {
                    var control = page.LoadControl(ResendInvitesControl.Location);
                    actionsControl.Controls.Add(control);

                    actionsControl.Controls.Add(new NavigationItem
                    {
                        Name    = CustomNamingPeople.Substitute <Resources.Resource>("ResendInvitesToPendingUsersAction"),
                        URL     = ResendInvitesControl.GetHrefAction(),
                        IsPromo = (SetupInfo.WorkMode == WorkMode.Promo)
                    });
                }
            }
        }
コード例 #23
0
        private static void UpdateDepartments(IEnumerable <Guid> department, UserInfo user)
        {
            if (!SecurityContext.CheckPermissions(Core.Users.Constants.Action_EditGroups))
            {
                return;
            }
            if (department == null)
            {
                return;
            }

            var groups        = CoreContext.UserManager.GetUserGroups(user.ID);
            var managerGroups = new List <Guid>();

            foreach (var groupInfo in groups)
            {
                CoreContext.UserManager.RemoveUserFromGroup(user.ID, groupInfo.ID);
                var managerId = CoreContext.UserManager.GetDepartmentManager(groupInfo.ID);
                if (managerId == user.ID)
                {
                    managerGroups.Add(groupInfo.ID);
                    CoreContext.UserManager.SetDepartmentManager(groupInfo.ID, Guid.Empty);
                }
            }
            foreach (var guid in department)
            {
                var userDepartment = CoreContext.GroupManager.GetGroupInfo(guid);
                if (userDepartment != Core.Users.Constants.LostGroupInfo)
                {
                    CoreContext.UserManager.AddUserIntoGroup(user.ID, guid);
                    if (managerGroups.Contains(guid))
                    {
                        CoreContext.UserManager.SetDepartmentManager(guid, user.ID);
                    }
                }
            }
        }
コード例 #24
0
        public FileUploadResult ProcessUpload(HttpContext context)
        {
            if (context.Request.Files.Count == 0)
            {
                return(Error("No files."));
            }

            if (!SecurityContext.CheckPermissions(SecutiryConstants.EditPortalSettings))
            {
                return(Error("Access denied."));
            }

            HttpPostedFile file = context.Request.Files[0];

            if (file.ContentLength <= 0 || file.ContentLength > MaxBackupFileSize)
            {
                return(Error("File size must be greater than 0 and less than {0} bytes", MaxBackupFileSize));
            }

            try
            {
                var filePath = GetFilePath();

                if (File.Exists(filePath))
                {
                    File.Delete(filePath);
                }

                file.SaveAs(filePath);
                return(Success());
            }
            catch (Exception error)
            {
                return(Error(error.Message));
            }
        }
コード例 #25
0
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            if (this.Master is IStudioMaster)
            {
                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");
                }

                WriteEmployeeActions(this);

                if (SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser))
                {
                    master.SideHolder.Controls.Add(GetEmployeeNavigation());
                }

                var contentControl = (EmployeeViewer)LoadControl(EmployeeViewer.Location);
                master.ContentHolder.Controls.Add(contentControl);

                master.SideHolder.Controls.Add(LoadControl(CompanyNavigation.Location));

                if (contentControl.WhatView == EmployeeViewer.ViewType.Departments)
                {
                    var ceoSelector = (SimpleUserSelector)LoadControl(SimpleUserSelector.Location);
                    ceoSelector.Title        = CustomNamingPeople.Substitute <Resources.Resource>("CeoNameEditCaption");
                    ceoSelector.SelectTitle  = CustomNamingPeople.Substitute <Resources.Resource>("CEO");
                    ceoSelector.AdditionalID = "ceo";
                    var ceo = CoreContext.UserManager.GetCompanyCEO();
                    ceoSelector.UserID           = ceo != null ? ceo.ID : Guid.Empty;
                    ceoSelector.SelectJSCallback = "function(id) { EmployeeService.ChangeCEO(id); window.location.reload(); }";
                    master.ContentHolder.Controls.Add(ceoSelector);
                }
                else if (contentControl.WhatView == EmployeeViewer.ViewType.Department)
                {
                    var managerSelector = (SimpleUserSelector)LoadControl(SimpleUserSelector.Location);
                    managerSelector.Title            = CustomNamingPeople.Substitute <Resources.Resource>("DepEditMaster");
                    managerSelector.SelectTitle      = CustomNamingPeople.Substitute <Resources.Resource>("DepartmentMaster");
                    managerSelector.AdditionalID     = "dep_manager";
                    managerSelector.UserID           = CoreContext.UserManager.GetDepartmentManager(contentControl.DepartmentId);
                    managerSelector.SelectJSCallback = "function(id) { EmployeeService.ChangeDepartmentManager(id,'" + contentControl.DepartmentId + "'); window.location.reload(); }";
                    master.ContentHolder.Controls.Add(managerSelector);

                    var depNameControl = (Confirm)LoadControl(Confirm.Location);
                    depNameControl.Title        = CustomNamingPeople.Substitute <Resources.Resource>("DepartmentTitle");
                    depNameControl.AdditionalID = "depname";
                    depNameControl.SelectTitle  = Resources.Resource.NewTitle;
                    depNameControl.Value        = contentControl.Department != null?HttpUtility.HtmlEncode(contentControl.Department.Name) : "";

                    depNameControl.SelectJSCallback =
                        @"function(name) { 
    
    AjaxPro.onLoading = function(b){
            if(b)
                jq('#studio_confirmDialogdepname').block();
            else
                jq('#studio_confirmDialogdepname').unblock();
        };  

    EmployeeService.ChangeDepartmentName('" + contentControl.DepartmentId + @"',name,function(result){
       if(result.value.rs1 == '0')
            jq('#studio_confirmMessage').html('<div class=\'errorBox\'>'+result.value.rs2+'</div>');
       else{
            window.location.reload(true);
            jq.unblockUI();
       }              
    }); 
}";
                    master.ContentHolder.Controls.Add(depNameControl);
                }
            }
        }
コード例 #26
0
        public FileUploadResult ProcessUpload(HttpContext context)
        {
            var result = new ContactsUploaderResult();

            try
            {
                SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser);

                if (context.Request.Files.Count == 0)
                {
                    result.Success = false;
                    result.Message = Resource.ErrorEmptyUploadFileSelected;
                    return(result);
                }

                var file = context.Request.Files[0];

                const int maxFileSize = 512000;
                if (file.ContentLength > maxFileSize)
                {
                    result.Success = false;
                    result.Message = String.Format(Resource.ImportContactsFromFileErrorTooLarge, (maxFileSize / 1024));
                    return(result);
                }

                var ext = FileUtility.GetFileExtension(file.FileName);
                if (ext != ".csv")
                {
                    result.Success = false;
                    result.Message = Resource.ErrorEmptyUploadFileSelected;
                    return(result);
                }

                var param = new FileParameters
                {
                    Encode     = Convert.ToInt32(context.Request["enc"]),
                    Separator  = Convert.ToInt32(context.Request["sep"]),
                    Delimiter  = Convert.ToInt32(context.Request["del"]),
                    Position   = Convert.ToInt32(context.Request["pos"]),
                    IsRaw      = Convert.ToBoolean(context.Request["raw"]),
                    UserHeader = context.Request["head"]
                };

                IUserImporter importer = new TextFileUserImporter(file.InputStream, param);

                var users = (param.IsRaw)
                                ? (IEnumerable)importer.GetRawUsers()
                                : importer.GetDiscoveredUsers();

                result.Message = JsonConvert.SerializeObject(users);
                result.Columns = JsonConvert.SerializeObject(ContactInfo.GetColumns());
                result.Success = true;
            }
            catch (Exception ex)
            {
                result.Success = false;
                result.Message = ex.Message.HtmlEncode();
            }

            return(result);
        }
コード例 #27
0
        public object SaveUsers(string userList, bool importUsersAsCollaborators)
        {
            if (!SecurityContext.CheckPermissions(Constants.Action_AddRemoveUser))
            {
                return new { Status = (int)Operation.Error, Message = Resources.Resource.ErrorAccessDenied }
            }
            ;

            var coll = new List <UserResults>();

            try
            {
                var jsSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();

                var ruleObj = jsSerializer.Deserialize <List <UserData> >(userList);
                var error   = 0;

                foreach (var userData in ruleObj)
                {
                    var validateEmail = UserManagerWrapper.ValidateEmail(userData.Email);
                    if (!validateEmail || String.IsNullOrEmpty(userData.FirstName) || String.IsNullOrEmpty(userData.LastName))
                    {
                        coll.Add(new UserResults
                        {
                            Email  = userData.Email,
                            Result = Resources.Resource.ImportContactsIncorrectFields,
                            Class  = !validateEmail ? "error3" : "error1"
                        });
                        error++;
                        continue;
                    }

                    var us = CoreContext.UserManager.GetUserByEmail(userData.Email);

                    if (us.ID != Constants.LostUser.ID)
                    {
                        coll.Add(new UserResults
                        {
                            Email  = userData.Email,
                            Result = Resources.Resource.ImportContactsAlreadyExists,
                            Class  = "error2"
                        });
                        error++;
                        continue;
                    }

                    if (error != 0)
                    {
                        continue;
                    }

                    if (!importUsersAsCollaborators && TenantStatisticsProvider.GetUsersCount() >= TenantExtra.GetTenantQuota().ActiveUsers)
                    {
                        importUsersAsCollaborators = true;
                    }

                    UserManagerWrapper.AddUser(new UserInfo
                    {
                        Email     = userData.Email,
                        FirstName = userData.FirstName,
                        LastName  = userData.LastName
                    }, UserManagerWrapper.GeneratePassword(), false, true, importUsersAsCollaborators);
                    coll.Add(new UserResults {
                        Email = userData.Email, Result = String.Empty
                    });
                }
                return(new { Status = (int)Operation.Success, Data = coll });
            }
            catch (Exception ex)
            {
                return(new { Status = (int)Operation.Error, Message = ex.Message });
            }
        }
コード例 #28
0
        public void RunJob()
        {
            Status = (int)Operation.Success;
            CoreContext.TenantManager.SetCurrentTenant((int)Id);
            SecurityContext.CurrentUser = 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, false, true, true);

                    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;
        }
コード例 #29
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;

                    var percentStep = 100.0 / ruleObj.Count;
                    foreach (var userData in ruleObj)
                    {
                        var validateEmail = UserManagerWrapper.ValidateEmail(userData.Email);
                        if (!validateEmail || String.IsNullOrEmpty(userData.FirstName) || String.IsNullOrEmpty(userData.LastName))
                        {
                            Data.Add(new UserResults
                            {
                                Email  = userData.Email,
                                Result = Resource.ImportContactsIncorrectFields,
                                Class  = !validateEmail ? "error3" : "error1"
                            });
                            error++;
                            Percentage += percentStep;
                            continue;
                        }

                        var us = CoreContext.UserManager.GetUserByEmail(userData.Email);

                        if (us.ID != Constants.LostUser.ID)
                        {
                            Data.Add(new UserResults
                            {
                                Email  = userData.Email,
                                Result = Resource.ImportContactsAlreadyExists,
                                Class  = "error2"
                            });
                            error++;
                            Percentage += percentStep;
                            continue;
                        }

                        if (!importUsersAsCollaborators && TenantStatisticsProvider.GetUsersCount() >= TenantExtra.GetTenantQuota().ActiveUsers)
                        {
                            importUsersAsCollaborators = true;
                        }

                        var userInfo = new UserInfo
                        {
                            Email     = userData.Email,
                            FirstName = userData.FirstName,
                            LastName  = userData.LastName
                        };
                        UserManagerWrapper.AddUser(userInfo, UserManagerWrapper.GeneratePassword(), false, true, importUsersAsCollaborators);

                        var messageAction = importUsersAsCollaborators ? MessageAction.GuestImported : MessageAction.UserImported;
                        MessageService.Send(httpHeaders, messageAction, userInfo.DisplayUserName(false));

                        Data.Add(new UserResults {
                            Email = userData.Email, Result = String.Empty
                        });
                        Percentage += percentStep;
                    }
                }
                catch (Exception ex)
                {
                    Status = (int)Operation.Error;
                    Error  = ex.Message;
                }

                IsCompleted = true;
            }
コード例 #30
0
        private String RenderContent()
        {
            var newUsers       = new List <UserInfo>();
            var widgetSettings = SettingsManager.Instance.LoadSettingsFor <NewEmployeeWidgetSettings>(SecurityContext.CurrentAccount.ID);

            var users = CoreContext.UserManager.GetUsers();

            foreach (var user in users)
            {
                //search new users
                if (user.WorkFromDate.HasValue && (newUsers.Find(u => u.ID.Equals(user.ID)) == null))
                {
                    if (newUsers.Count < widgetSettings.NewWorkerCount)
                    {
                        newUsers.Add(user);
                    }
                    else
                    {
                        newUsers.Sort(new UserInfoDateComparer(true));
                        for (int i = newUsers.Count - 1; i >= 0; i--)
                        {
                            var newUser = newUsers[i];
                            if (newUser.WorkFromDate.Value.CompareTo(user.WorkFromDate) < 0)
                            {
                                newUsers.Remove(newUser);
                                newUsers.Add(user);
                                break;
                            }
                        }
                    }
                }
            }

            newUsers.Sort(new UserInfoDateComparer(true));

            StringBuilder sb = new StringBuilder();

            if (newUsers.Count > 0)
            {
                foreach (var user in newUsers)
                {
                    sb.Append("<div style='margin-bottom:15px;'>");
                    var imageURL = user.GetSmallPhotoURL();
                    sb.Append("<table cellpadding=\"0\" cellspacing=\"0\"><tr valign='top'>");
                    sb.Append("<td style='width:30px;'><a href=\"" + CommonLinkUtility.GetUserProfile(user.ID, ProductID) + "\"><img class=\"borderBase\" border=0 alt=\"\" src='" + imageURL + "'/></a></td>");

                    sb.Append("<td style='padding-left:10px;'>");
                    sb.Append("<div style='margin-top:-3px;'>");
                    sb.Append("<a class='linkHeaderLightSmall' href=\"" + CommonLinkUtility.GetUserProfile(user.ID, ProductID) + "\">" + user.DisplayUserName() + "</a>");
                    sb.Append("</div>");

                    var dep = user.GetUserDepartment();
                    if (dep != null)
                    {
                        sb.Append("<div style='margin-top:4px;'>");
                        sb.Append("<a class='linkText' href='" + CommonLinkUtility.GetDepartment(ProductID, dep.ID) + "'>" + dep.Name.HtmlEncode() + "</a>");
                        sb.Append("</div>");
                    }

                    sb.Append("</td>");
                    sb.Append("</tr></table>");
                    sb.Append("</div>");
                }

                sb.Append("<div style='margin-top: 10px;'>");
                //all users
                sb.Append("<a href=\"" + CommonLinkUtility.GetEmployees(ProductID) + "&sort=InvAdmissionDate\">" + CustomNamingPeople.Substitute <Resources.Resource>("AllEmployees").HtmlEncode() + "</a>");
                sb.Append("</div>");
            }
            else
            {
                //check access rigths
                if (SecurityContext.CheckPermissions(ASC.Core.Users.Constants.Action_AddRemoveUser))
                {
                    sb.Append("<div class='empty-widget' style='padding:40px; text-align: center;'>");
                    var url = string.Format("<div style=\"padding-top:3px;\"><a class=\"promoAction\" href=\"javascript:ImportUsersManager.ShowImportControl();\">");
                    sb.Append(string.Format(CustomNamingPeople.Substitute <Resources.Resource>("InviteEmployeesWidgetTitle").HtmlEncode(), url, "</a></div>"));
                    sb.Append("</div>");
                }
                else
                {
                    sb.Append("<div class=\"empty-widget\" style=\"padding:40px; text-align: center;\">" + CustomNamingPeople.Substitute <Resources.Resource>("NoNewEmployees").HtmlEncode() + "</div>");
                }
            }


            return(sb.ToString());
        }