Exemplo n.º 1
0
        private void RegisterClientScript()
        {
            Page.RegisterBodyScripts(ResolveUrl("~/usercontrols/management/accessrights/js/accessrights.js"));
            Page.RegisterStyleControl(VirtualPathUtility.ToAbsolute("~/usercontrols/management/accessrights/css/accessrights.less"));

            var curTenant    = CoreContext.TenantManager.GetCurrentTenant();
            var currentOwner = CoreContext.UserManager.GetUsers(curTenant.OwnerId);
            var admins       = WebItemSecurity.GetProductAdministrators(Guid.Empty).Where(admin => admin.ID != currentOwner.ID).SortByUserName();

            var sb = new StringBuilder();

            sb.AppendFormat("ownerId = {0};", JavaScriptSerializer.Serialize(curTenant.OwnerId));

            sb.AppendFormat("adminList = {0};",
                            JavaScriptSerializer.Serialize(admins.ConvertAll(u => new
            {
                id           = u.ID,
                smallFotoUrl = u.GetSmallPhotoURL(),
                displayName  = u.DisplayUserName(),
                title        = u.Title.HtmlEncode(),
                userUrl      = CommonLinkUtility.GetUserProfile(u.ID),
                accessList   = GetAccessList(u.ID)
            }))
                            );
            sb.AppendFormat("ASC.Settings.AccessRights.init({0},\"{1}\");",
                            JavaScriptSerializer.Serialize(Products.Select(p => p.GetSysName()).ToArray()),
                            CustomNamingPeople.Substitute <Resource>("AccessRightsAddGroup").HtmlEncode()
                            );

            Page.RegisterInlineScript(sb.ToString());
        }
Exemplo n.º 2
0
        private void RegisterClientScript()
        {
            Page.ClientScript.RegisterClientScriptInclude(
                typeof(string),
                "accessrights_script",
                WebPath.GetPath("usercontrols/management/accessrights/js/accessrights.js")
                );

            Page.ClientScript.RegisterClientScriptBlock(
                GetType(),
                "accessrights_style",
                "<link rel=\"stylesheet\" type=\"text/css\" href=\"" + WebSkin.GetUserSkin().GetAbsoluteWebPath("usercontrols/management/accessrights/css/<theme_folder>/accessrights.css") + "\">",
                false);

            var curTenant    = CoreContext.TenantManager.GetCurrentTenant();
            var currentOwner = CoreContext.UserManager.GetUsers(curTenant.OwnerId);
            var admins       = WebItemSecurity.GetProductAdministrators(Guid.Empty).Where(admin => admin.ID != currentOwner.ID).SortByUserName();

            Page.ClientScript.RegisterClientScriptBlock(
                typeof(AccessRights),
                "54F36EE2-0595-4e01-82BD-35E140D94F5D",
                "adminList = " + JavaScriptSerializer.Serialize(admins.ConvertAll(u => new
            {
                id           = u.ID,
                smallFotoUrl = u.GetSmallPhotoURL(),
                displayName  = u.DisplayUserName(),
                title        = u.Title.HtmlEncode(),
                userUrl      = CommonLinkUtility.GetUserProfile(u.ID, new Guid()),
                accessList   = GetAccessList(u.ID)
            }))
                + "; ", true);
        }
Exemplo n.º 3
0
        protected override IEnumerable <KeyValuePair <string, object> > GetClientVariables(HttpContext context)
        {
            var admins = CoreContext.UserManager.GetUsersByGroup(Constants.GroupAdmin.ID).ToList <UserInfo>();

            admins.AddRange(WebItemSecurity.GetProductAdministrators(ProductEntryPoint.ID).ToList());
            admins = admins.Distinct().ToList();
            admins = admins.SortByUserName();

            var taskCategories = Global.DaoFactory.GetListItemDao().GetItems(ListType.TaskCategory);

            yield return(RegisterObject("adminList",
                                        admins.ConvertAll(item => new
            {
                avatarSmall = item.GetSmallPhotoURL(),
                displayName = item.DisplayUserName(),
                id = item.ID,
                title = item.Title.HtmlEncode()
            })));

            yield return(RegisterObject("taskActionViewCategories",
                                        taskCategories.ConvertAll(item => new
            {
                id = item.ID,
                title = item.Title.HtmlEncode(),
                cssClass = "task_category " + item.AdditionalParams.Split('.').FirstOrDefault()
            })));
        }
Exemplo n.º 4
0
        private void initUserSelectorListView()
        {
            List <Guid> users = null;

            switch (TargetEntityType)
            {
            case EntityType.Contact:
                var contact = Global.DaoFactory.GetContactDao().GetByID(TargetContactID);
                if (contact.IsShared == false)
                {
                    users = CRMSecurity.GetAccessSubjectGuidsTo(contact);
                }
                break;

            case EntityType.Opportunity:
                var deal = Global.DaoFactory.GetDealDao().GetByID(TargetEntityID);
                if (CRMSecurity.IsPrivate(deal))
                {
                    users = CRMSecurity.GetAccessSubjectGuidsTo(deal);
                }
                break;

            case EntityType.Case:
                var caseItem = Global.DaoFactory.GetCasesDao().GetByID(TargetEntityID);
                if (CRMSecurity.IsPrivate(caseItem))
                {
                    users = CRMSecurity.GetAccessSubjectGuidsTo(caseItem);
                }
                break;
            }



            //init userSelectorListView
            if (users == null)
            {
                RegisterClientScriptHelper.DataHistoryView(Page, null);
            }
            else
            {
                List <UserInfo> UserList     = null;
                List <Guid>     UserListGuid = new List <Guid>();

                //with admins
                var admins = CoreContext.UserManager.GetUsersByGroup(Constants.GroupAdmin.ID).ToList();
                admins.AddRange(WebItemSecurity.GetProductAdministrators(ProductEntryPoint.ID).ToList());
                admins = admins.Distinct().ToList();

                admins.AddRange(from u in users
                                where !CoreContext.UserManager.IsUserInGroup(u, Constants.GroupAdmin.ID) && !WebItemSecurity.IsProductAdministrator(ProductEntryPoint.ID, u)
                                select CoreContext.UserManager.GetUsers(u));

                UserList     = admins.SortByUserName();
                UserListGuid = UserList.ConvertAll(n => n.ID).Where(g => g != SecurityContext.CurrentAccount.ID).ToList();

                RegisterClientScriptHelper.DataHistoryView(Page, UserListGuid);
            }
        }
Exemplo n.º 5
0
        protected override IEnumerable <KeyValuePair <string, object> > GetClientVariables(HttpContext context)
        {
            var admins = CoreContext.UserManager.GetUsersByGroup(Constants.GroupAdmin.ID).ToList();

            admins.AddRange(WebItemSecurity.GetProductAdministrators(ProductEntryPoint.ID).ToList());

            var securityInfo = WebItemSecurity.GetSecurityInfo(ProductEntryPoint.ID.ToString());
            var crmAvailable = securityInfo.Users.ToList();

            foreach (var group in securityInfo.Groups)
            {
                crmAvailable.AddRange(CoreContext.UserManager.GetUsersByGroup(group.ID));
            }

            var crmAvailableWithAdmins = new List <UserInfo>();

            crmAvailableWithAdmins.AddRange(crmAvailable);
            crmAvailableWithAdmins.AddRange(admins);
            crmAvailableWithAdmins = crmAvailableWithAdmins.Distinct().SortByUserName().ToList();

            using (var scope = DIHelper.Resolve())
            {
                var taskCategories = scope.Resolve <DaoFactory>().ListItemDao.GetItems(ListType.TaskCategory);
                Converter <UserInfo, object> converter = item =>
                                                         new
                {
                    avatarSmall = item.GetSmallPhotoURL(),
                    displayName = item.DisplayUserName(),
                    id          = item.ID,
                    title       = item.Title.HtmlEncode()
                };

                var categoryConverter = GetCategoryConverter("task_category");

                return(new List <KeyValuePair <string, object> >(1)
                {
                    RegisterObject(
                        new
                    {
                        crmAdminList = admins.ConvertAll(converter),
                        isCrmAvailableForAllUsers = crmAvailable.Count == 0,
                        crmAvailableWithAdminList = crmAvailableWithAdmins.ConvertAll(converter),
                        smtpSettings = Global.TenantSettings.SMTPServerSetting,
                        taskCategories = taskCategories.ConvertAll(categoryConverter)
                    })
                });
            }
        }
Exemplo n.º 6
0
 public IEnumerable <EmployeeWraper> GetProductAdministrators(Guid productid)
 {
     return(WebItemSecurity.GetProductAdministrators(productid)
            .Select(EmployeeWraper.Get)
            .ToList());
 }
Exemplo n.º 7
0
        private void RegisterClientScript()
        {
            var isRetina = TenantLogoManager.IsRetina(HttpContext.Current.Request);

            Page.RegisterBodyScripts("~/usercontrols/management/accessrights/js/accessrights.js")
            .RegisterStyle("~/usercontrols/management/accessrights/css/accessrights.less");

            var curTenant    = CoreContext.TenantManager.GetCurrentTenant();
            var currentOwner = CoreContext.UserManager.GetUsers(curTenant.OwnerId);

            var admins = WebItemSecurity.GetProductAdministrators(Guid.Empty).ToList();

            admins = admins
                     .GroupBy(admin => admin.ID)
                     .Select(group => group.First())
                     .Where(admin => admin.ID != currentOwner.ID)
                     .SortByUserName();

            InitLdapRights();

            var sb = new StringBuilder();

            sb.AppendFormat("ownerId = \"{0}\";", curTenant.OwnerId);

            sb.AppendFormat("adminList = {0};", JsonConvert.SerializeObject(admins.ConvertAll(u => new
            {
                id           = u.ID,
                smallFotoUrl = u.GetSmallPhotoURL(),
                bigFotoUrl   = isRetina ? u.GetBigPhotoURL() : "",
                displayName  = u.DisplayUserName(),
                title        = u.Title.HtmlEncode(),
                userUrl      = CommonLinkUtility.GetUserProfile(u.ID),
                accessList   = GetAccessList(u.ID, WebItemSecurity.IsProductAdministrator(Guid.Empty, u.ID)),
                ldap         = LdapRights.Contains(u.ID.ToString())
            })));

            sb.AppendFormat("imageHelper = {0};", JsonConvert.SerializeObject(new
            {
                PeopleImgSrc  = WebImageSupplier.GetAbsoluteWebPath("user_12.png"),
                GroupImgSrc   = WebImageSupplier.GetAbsoluteWebPath("group_12.png"),
                TrashImgSrc   = WebImageSupplier.GetAbsoluteWebPath("trash_12.png"),
                TrashImgTitle = Resource.DeleteButton
            }));

            var managementPage = Page as Studio.Management;
            var tenantAccess   = managementPage != null ? managementPage.TenantAccess : TenantAccessSettings.Load();

            if (!tenantAccess.Anyone)
            {
                var productItemList = GetProductItemListForSerialization();

                foreach (var productItem in productItemList.Where(productItem => !productItem.CanNotBeDisabled))
                {
                    sb.AppendFormat("ASC.Settings.AccessRights.initProduct('{0}');", Convert.ToBase64String(
                                        Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(productItem))));
                }
            }

            sb.AppendFormat("ASC.Settings.AccessRights.init({0});",
                            JsonConvert.SerializeObject(Products.Select(p => p.GetSysName()).ToArray()));

            Page.RegisterInlineScript(sb.ToString());
        }
Exemplo n.º 8
0
        private bool CheckStartupEnabled(TenantQuota currentQuota, TenantQuota startupQuota, out string errorMessage)
        {
            errorMessage = string.Empty;

            if (!currentQuota.Trial)
            {
                errorMessage = UserControlsCommonResource.SaasTariffErrorTrial;
                return(false);
            }

            if (TenantStatisticsProvider.GetUsersCount() > startupQuota.ActiveUsers)
            {
                errorMessage = string.Format(UserControlsCommonResource.SaasTariffErrorUsers, startupQuota.ActiveUsers);
                return(false);
            }

            if (TenantStatisticsProvider.GetVisitorsCount() > 0)
            {
                errorMessage = string.Format(UserControlsCommonResource.SaasTariffErrorGuests, 0);
                return(false);
            }

            var currentTenant = CoreContext.TenantManager.GetCurrentTenant();

            var admins = WebItemSecurity.GetProductAdministrators(Guid.Empty);

            if (admins.Any(admin => admin.ID != currentTenant.OwnerId))
            {
                errorMessage = string.Format(UserControlsCommonResource.SaasTariffErrorAdmins, 1);
                return(false);
            }

            if (TenantStatisticsProvider.GetUsedSize() > startupQuota.MaxTotalSize)
            {
                errorMessage = string.Format(UserControlsCommonResource.SaasTariffErrorStorage, FileSizeComment.FilesSizeToString(startupQuota.MaxTotalSize));
                return(false);
            }

            var authServiceList = new AuthorizationKeys().AuthServiceList.Where(x => x.CanSet);

            foreach (var service in authServiceList)
            {
                if (service.Props.Any(r => !string.IsNullOrEmpty(r.Value)))
                {
                    errorMessage = UserControlsCommonResource.SaasTariffErrorThirparty;
                    return(false);
                }
            }

            if (!TenantWhiteLabelSettings.Load().IsDefault)
            {
                errorMessage = UserControlsCommonResource.SaasTariffErrorWhiteLabel;
                return(false);
            }

            if (!string.IsNullOrEmpty(currentTenant.MappedDomain))
            {
                errorMessage = UserControlsCommonResource.SaasTariffErrorDomain;
                return(false);
            }

            var accountLinker = new AccountLinker("webstudio");

            foreach (var user in CoreContext.UserManager.GetUsers(EmployeeStatus.All))
            {
                var linkedAccounts = accountLinker.GetLinkedProfiles(user.ID.ToString());

                if (linkedAccounts.Any())
                {
                    errorMessage = UserControlsCommonResource.SaasTariffErrorOauth;
                    return(false);
                }
            }

            if (SsoSettingsV2.Load().EnableSso)
            {
                errorMessage = UserControlsCommonResource.SaasTariffErrorSso;
                return(false);
            }

            if (ActiveDirectory.Base.Settings.LdapSettings.Load().EnableLdapAuthentication)
            {
                errorMessage = UserControlsCommonResource.SaasTariffErrorLdap;
                return(false);
            }

            using (var service = new BackupServiceClient())
            {
                var scheduleResponse = service.GetSchedule(currentTenant.TenantId);

                if (scheduleResponse != null)
                {
                    errorMessage = UserControlsCommonResource.SaasTariffErrorAutoBackup;
                    return(false);
                }
            }

            return(true);
        }
        private void RegisterClientScript()
        {
            Page.RegisterBodyScripts("~/usercontrols/management/accessrights/js/accessrights.js")
            .RegisterStyle("~/usercontrols/management/accessrights/css/accessrights.less");

            var curTenant    = CoreContext.TenantManager.GetCurrentTenant();
            var currentOwner = CoreContext.UserManager.GetUsers(curTenant.OwnerId);
            var admins       = WebItemSecurity.GetProductAdministrators(Guid.Empty).Where(admin => admin.ID != currentOwner.ID).SortByUserName();

            var sb = new StringBuilder();

            sb.AppendFormat("ownerId = {0};", JavaScriptSerializer.Serialize(curTenant.OwnerId));

            sb.AppendFormat("adminList = {0};",
                            JavaScriptSerializer.Serialize(admins.ConvertAll(u => new
            {
                id           = u.ID,
                smallFotoUrl = u.GetSmallPhotoURL(),
                displayName  = u.DisplayUserName(),
                title        = u.Title.HtmlEncode(),
                userUrl      = CommonLinkUtility.GetUserProfile(u.ID),
                accessList   = GetAccessList(u.ID, WebItemSecurity.IsProductAdministrator(Guid.Empty, u.ID))
            }))
                            );

            var managementPage = Page as Studio.Management;
            var tenantAccess   = managementPage != null ? managementPage.TenantAccess : TenantAccessSettings.Load();

            if (!tenantAccess.Anyone)
            {
                var productItemList = GetProductItemListForSerialization();

                foreach (var productItem in productItemList)
                {
                    var ids   = productItem.SelectedUsers.Select(i => i.ID).ToArray();
                    var names = productItem.SelectedUsers.Select(i => i.DisplayUserName()).ToArray();

                    sb.AppendFormat("SelectedUsers_{0} = {1};",
                                    productItem.ItemName,
                                    JavaScriptSerializer.Serialize(
                                        new
                    {
                        IDs           = ids,
                        Names         = names,
                        PeopleImgSrc  = PeopleImgSrc,
                        TrashImgSrc   = TrashImgSrc,
                        TrashImgTitle = Resource.DeleteButton,
                        CurrentUserID = SecurityContext.CurrentAccount.ID
                    })
                                    );

                    ids   = productItem.SelectedGroups.Select(i => i.ID).ToArray();
                    names = productItem.SelectedGroups.Select(i => i.Name.HtmlEncode()).ToArray();

                    sb.AppendFormat("SelectedGroups_{0} = {1};",
                                    productItem.ItemName,
                                    JavaScriptSerializer.Serialize(
                                        new
                    {
                        IDs           = ids,
                        Names         = names,
                        GroupImgSrc   = GroupImgSrc,
                        TrashImgSrc   = TrashImgSrc,
                        TrashImgTitle = Resource.DeleteButton
                    })
                                    );

                    if (!productItem.CanNotBeDisabled)
                    {
                        sb.AppendFormat("ASC.Settings.AccessRights.initProduct('{0}');",
                                        Convert.ToBase64String(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(productItem))));
                    }
                }
            }


            sb.AppendFormat("ASC.Settings.AccessRights.init({0});",
                            JavaScriptSerializer.Serialize(Products.Select(p => p.GetSysName()).ToArray())
                            );

            Page.RegisterInlineScript(sb.ToString());
        }
 public IEnumerable <EmployeeWraper> GetProductAdministrators(Guid productid)
 {
     return(WebItemSecurity.GetProductAdministrators(Tenant, productid)
            .Select(r => EmployeeWraper.Get(r, ApiContext))
            .ToList());
 }