예제 #1
0
 public virtual bool VisibleFor(Feed feed, object data, Guid userId)
 {
     return(WebItemSecurity.IsAvailableForUser(ProductID.ToString(), userId));
 }
예제 #2
0
 public static bool IsPeopleAvailable()
 {
     return(WebItemSecurity.IsAvailableForUser(WebItemManager.PeopleProductID.ToString(), SecurityContext.CurrentAccount.ID));
 }
예제 #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            CurrentUser = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID);

            Page.RegisterStyle("~/skins/page_default.less");

            var defaultPageSettings = StudioDefaultPageSettings.Load();

            if (defaultPageSettings != null && defaultPageSettings.DefaultProductID != Guid.Empty)
            {
                if (defaultPageSettings.DefaultProductID == defaultPageSettings.FeedModuleID && !CurrentUser.IsOutsider())
                {
                    Response.Redirect("feed.aspx", true);
                }

                var products = WebItemManager.Instance.GetItemsAll <IProduct>();
                foreach (var p in products)
                {
                    if (p.ID.Equals(defaultPageSettings.DefaultProductID))
                    {
                        var productInfo = WebItemSecurity.GetSecurityInfo(p.ID.ToString());
                        if (productInfo.Enabled && WebItemSecurity.IsAvailableForUser(p.ID.ToString(), CurrentUser.ID))
                        {
                            var url = p.StartURL;
                            if (Request.DesktopApp())
                            {
                                url += "?desktop=true";
                                if (!string.IsNullOrEmpty(Request["first"]))
                                {
                                    url += "&first=true";
                                }
                            }
                            Response.Redirect(url, true);
                        }
                    }
                }
            }

            Master.DisabledSidePanel = true;

            Title = Resource.MainPageTitle;
            defaultListProducts = WebItemManager.Instance.GetItems(Web.Core.WebZones.WebZoneType.StartProductList);
            _showDocs           = (Product)defaultListProducts.Find(r => r.ID == WebItemManager.DocumentsProductID);
            if (_showDocs != null)
            {
                defaultListProducts.RemoveAll(r => r.ID == _showDocs.ProductID);
            }

            var mailProduct = WebItemManager.Instance[WebItemManager.MailProductID];

            if (mailProduct != null && !mailProduct.IsDisabled())
            {
                defaultListProducts.Add(mailProduct);
            }

            var calendarProduct = WebItemManager.Instance[WebItemManager.CalendarProductID];

            if (calendarProduct != null && !calendarProduct.IsDisabled())
            {
                defaultListProducts.Add(calendarProduct);
            }

            var talkProduct = WebItemManager.Instance[WebItemManager.TalkProductID];

            if (talkProduct != null && !talkProduct.IsDisabled())
            {
                defaultListProducts.Add(talkProduct);
            }

            var priority = GetStartProductsPriority();

            defaultListProducts = defaultListProducts
                                  .Where(p => priority.Keys.Contains(p.ID))
                                  .OrderBy(p => priority[p.ID])
                                  .ToList();

            CustomNavigationItems = CustomNavigationSettings.Load().Items.Where(x => x.ShowOnHomePage);

            ProductsCount = defaultListProducts.Count() + CustomNavigationItems.Count() + (TenantExtra.EnableControlPanel ? 1 : 0);
        }
        private static void NotifyClientRegisterCallback(Context context, INotifyClient client)
        {
            #region url correction

            var absoluteUrl = new SendInterceptorSkeleton(
                "Web.UrlAbsoluter",
                InterceptorPlace.MessageSend,
                InterceptorLifetime.Global,
                (r, p) =>
            {
                if (r != null && r.CurrentMessage != null && r.CurrentMessage.ContentType == Pattern.HTMLContentType)
                {
                    var body = r.CurrentMessage.Body;

                    body = urlReplacer.Replace(body, m =>
                    {
                        var url = m.Groups["url"].Value;
                        var ind = m.Groups["url"].Index - m.Index;
                        return(string.IsNullOrEmpty(url) && ind > 0 ?
                               m.Value.Insert(ind, CommonLinkUtility.GetFullAbsolutePath(string.Empty)) :
                               m.Value.Replace(url, CommonLinkUtility.GetFullAbsolutePath(url)));
                    });

                    body = textileLinkReplacer.Replace(body, m =>
                    {
                        var url = m.Groups["link"].Value;
                        var ind = m.Groups["link"].Index - m.Index;
                        return(string.IsNullOrEmpty(url) && ind > 0 ?
                               m.Value.Insert(ind, CommonLinkUtility.GetFullAbsolutePath(string.Empty)) :
                               m.Value.Replace(url, CommonLinkUtility.GetFullAbsolutePath(url)));
                    });

                    r.CurrentMessage.Body = body;
                }
                return(false);
            });
            client.AddInterceptor(absoluteUrl);

            #endregion

            #region security and culture

            var securityAndCulture = new SendInterceptorSkeleton(
                "ProductSecurityInterceptor",
                InterceptorPlace.DirectSend,
                InterceptorLifetime.Global,
                (r, p) =>
            {
                try
                {
                    // culture
                    var u = ASC.Core.Users.Constants.LostUser;

                    if (32 <= r.Recipient.ID.Length)
                    {
                        var guid = default(Guid);
                        try
                        {
                            guid = new Guid(r.Recipient.ID);
                        }
                        catch (FormatException) { }
                        catch (OverflowException) { }

                        if (guid != default(Guid))
                        {
                            u = CoreContext.UserManager.GetUsers(guid);
                        }
                    }

                    if (ASC.Core.Users.Constants.LostUser.Equals(u))
                    {
                        u = CoreContext.UserManager.GetUserByEmail(r.Recipient.ID);
                    }

                    if (ASC.Core.Users.Constants.LostUser.Equals(u))
                    {
                        u = CoreContext.UserManager.GetUserByUserName(r.Recipient.ID);
                    }

                    if (!ASC.Core.Users.Constants.LostUser.Equals(u))
                    {
                        var culture = !string.IsNullOrEmpty(u.CultureName) ? u.GetCulture() : CoreContext.TenantManager.GetCurrentTenant().GetCulture();
                        Thread.CurrentThread.CurrentCulture   = culture;
                        Thread.CurrentThread.CurrentUICulture = culture;

                        // security
                        var tag       = r.Arguments.Find(a => a.Tag == CommonTags.ModuleID);
                        var productId = tag != null ? (Guid)tag.Value : Guid.Empty;
                        if (productId == Guid.Empty)
                        {
                            tag       = r.Arguments.Find(a => a.Tag == CommonTags.ProductID);
                            productId = tag != null ? (Guid)tag.Value : Guid.Empty;
                        }
                        if (productId == Guid.Empty)
                        {
                            productId = (Guid)(CallContext.GetData("asc.web.product_id") ?? Guid.Empty);
                        }
                        if (productId != Guid.Empty && productId != new Guid("f4d98afdd336433287783c6945c81ea0") /* ignore people product */)
                        {
                            return(!WebItemSecurity.IsAvailableForUser(productId.ToString(), u.ID));
                        }
                    }

                    var tagCulture = r.Arguments.FirstOrDefault(a => a.Tag == CommonTags.Culture);
                    if (tagCulture != null)
                    {
                        var culture = CultureInfo.GetCultureInfo((string)tagCulture.Value);
                        Thread.CurrentThread.CurrentCulture   = culture;
                        Thread.CurrentThread.CurrentUICulture = culture;
                    }
                }
                catch (Exception error)
                {
                    LogManager.GetLogger(typeof(NotifyConfiguration)).Error(error);
                }
                return(false);
            });
            client.AddInterceptor(securityAndCulture);

            #endregion

            #region white label correction

            var whiteLabel = new SendInterceptorSkeleton(
                "WhiteLabelInterceptor",
                InterceptorPlace.MessageSend,
                InterceptorLifetime.Global,
                (r, p) =>
            {
                try
                {
                    var tags = r.Arguments;

                    var logoTextTag = tags.FirstOrDefault(a => a.Tag == Constants.LetterLogoText);
                    var logoText    = logoTextTag != null ? (String)logoTextTag.Value : string.Empty;

                    if (!string.IsNullOrEmpty(logoText))
                    {
                        var body = r.CurrentMessage.Body
                                   .Replace(string.Format("${{{0}}}", Constants.LetterLogoTextTM), logoText)
                                   .Replace(string.Format("${{{0}}}", Constants.LetterLogoText), logoText);
                        r.CurrentMessage.Body = body;
                    }
                }
                catch (Exception error)
                {
                    LogManager.GetLogger(typeof(NotifyConfiguration)).Error(error);
                }
                return(false);
            });
            client.AddInterceptor(whiteLabel);

            #endregion
        }
        public override void PreMethodCall(IApiMethodCall method, ApiContext context, IEnumerable <object> arguments)
        {
            if (context.RequestContext.RouteData.DataTokens.ContainsKey(DataTokenConstants.CheckPayment) &&
                !(bool)context.RequestContext.RouteData.DataTokens[DataTokenConstants.CheckPayment])
            {
                log.Debug("Payment is not required");
            }
            else
            {
                var  header = context.RequestContext.HttpContext.Request.Headers["Payment-Info"];
                bool flag;
                if (string.IsNullOrEmpty(header) || (bool.TryParse(header, out flag) && flag))
                {
                    var tenant = CoreContext.TenantManager.GetCurrentTenant(false);
                    if (tenant == null)
                    {
                        var hostname = string.Empty;
                        try
                        {
                            hostname = HttpContext.Current.Request.GetUrlRewriter().Host;
                        }
                        catch
                        {
                        }
                        throw new System.Security.SecurityException(string.Format("Portal {0} not found.", hostname));
                    }

                    var tenantStatus = tenant.Status;
                    if (tenantStatus == TenantStatus.Transfering)
                    {
                        context.RequestContext.HttpContext.Response.StatusCode        = (int)HttpStatusCode.ServiceUnavailable;
                        context.RequestContext.HttpContext.Response.StatusDescription = HttpStatusCode.ServiceUnavailable.ToString();
                        log.Warn("Portal {0} is transfering to another region", context.RequestContext.HttpContext.Request.Url);
                    }

                    var tariff = CoreContext.PaymentManager.GetTariff(tenant.TenantId);
                    if (tenantStatus != TenantStatus.Active || tariff.State >= TariffState.NotPaid)
                    {
                        context.RequestContext.HttpContext.Response.StatusCode        = (int)HttpStatusCode.PaymentRequired;
                        context.RequestContext.HttpContext.Response.StatusDescription = HttpStatusCode.PaymentRequired.ToString();
                        log.Warn("Payment Required {0}.", context.RequestContext.HttpContext.Request.Url);
                    }
                }
            }

            if (!SecurityContext.IsAuthenticated)
            {
                return;
            }

            var pid = FindProduct(method);

            if (pid != Guid.Empty)
            {
                if (CallContext.GetData("asc.web.product_id") == null)
                {
                    CallContext.SetData("asc.web.product_id", pid);
                }
                if (!WebItemSecurity.IsAvailableForUser(pid.ToString(), SecurityContext.CurrentAccount.ID))
                {
                    context.RequestContext.HttpContext.Response.StatusCode        = (int)HttpStatusCode.Forbidden;
                    context.RequestContext.HttpContext.Response.StatusDescription = HttpStatusCode.Forbidden.ToString();
                    log.Warn("Product {0} denied for user {1}", method.Name, SecurityContext.CurrentAccount);
                }
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            CurrentUser = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID);

            Page.RegisterStyle("~/skins/page_default.less");

            var defaultPageSettings = SettingsManager.Instance.LoadSettings <StudioDefaultPageSettings>(TenantProvider.CurrentTenantID);

            if (defaultPageSettings != null && defaultPageSettings.DefaultProductID != Guid.Empty)
            {
                if (defaultPageSettings.DefaultProductID == defaultPageSettings.FeedModuleID && !CurrentUser.IsOutsider())
                {
                    Context.Response.Redirect("feed.aspx");
                }

                var products = WebItemManager.Instance.GetItemsAll <IProduct>();
                foreach (var p in products)
                {
                    if (p.ID.Equals(defaultPageSettings.DefaultProductID))
                    {
                        var productInfo = WebItemSecurity.GetSecurityInfo(p.ID.ToString());
                        if (productInfo.Enabled && WebItemSecurity.IsAvailableForUser(p.ID.ToString(), CurrentUser.ID))
                        {
                            Context.Response.Redirect(p.StartURL);
                        }
                    }
                }
            }

            Master.DisabledSidePanel = true;

            Title = Resources.Resource.MainPageTitle.HtmlEncode();
            defaultListProducts = WebItemManager.Instance.GetItems(Web.Core.WebZones.WebZoneType.StartProductList);
            _showDocs           = (Product)defaultListProducts.Find(r => r.ID == WebItemManager.DocumentsProductID);
            if (_showDocs != null)
            {
                defaultListProducts.RemoveAll(r => r.ID == _showDocs.ProductID);
            }


            var mailProduct = WebItemManager.Instance[WebItemManager.MailProductID];

            if (mailProduct != null && !mailProduct.IsDisabled())
            {
                mailProduct.Context.LargeIconFileName = "product_logolarge.png";
                defaultListProducts.Add(mailProduct);
            }

            var priority = new Dictionary <Guid, Int32>()
            {
                { WebItemManager.ProjectsProductID, 0 },
                { WebItemManager.CRMProductID, 1 },
                { WebItemManager.MailProductID, 2 },
                { WebItemManager.PeopleProductID, 3 },
                { WebItemManager.CommunityProductID, 4 }
            };

            defaultListProducts = defaultListProducts.OrderBy(p => (priority.Keys.Contains(p.ID) ? priority[p.ID] : 10)).ToList();

            if (CoreContext.Configuration.PartnerHosted)
            {
                IsAutorizePartner = false;
                var partner = CoreContext.PaymentManager.GetApprovedPartner();
                if (partner != null)
                {
                    IsAutorizePartner = !string.IsNullOrEmpty(partner.AuthorizedKey);
                    Partner           = partner;
                }
            }
        }
        public List <MailTag> GetTagsList(int id_tenant, string id_user, bool mail_only)
        {
            var tags = new Dictionary <int, MailTag>();

            using (var db = GetDb())
            {
                db.ExecuteList(new SqlQuery(MAIL_TAG)
                               .Select(TagFields.id, TagFields.name, TagFields.style, TagFields.addresses, TagFields.count, TagFields.crm_id)
                               .Where(GetUserWhere(id_user, id_tenant)))
                .ForEach(r =>
                         tags.Add(0 < Convert.ToInt32(r[5]) ? -Convert.ToInt32(r[5]) : Convert.ToInt32(r[0]),
                                  new MailTag((0 < Convert.ToInt32(r[5]) && !mail_only) ? -Convert.ToInt32(r[5]) : Convert.ToInt32(r[0])
                                              , (string)r[1]
                                              , !string.IsNullOrEmpty(r[3].ToString()) ? r[3].ToString().Split(';').ToList() : new List <string>()
                                              , ConvertToString(r[2])
                                              , Convert.ToInt32(r[4])))
                         );
            }

            if (mail_only)
            {
                return(tags.Values.Where(p => p.Name != "").OrderByDescending(p => p.Id).ToList());
            }

            #region Set up connection to CRM sequrity
            CoreContext.TenantManager.SetCurrentTenant(id_tenant);
            SecurityContext.AuthenticateMe(CoreContext.Authentication.GetAccountByID(new Guid(id_user)));

            if (!WebItemSecurity.IsAvailableForUser(WebItemManager.CRMProductID.ToString(),
                                                    SecurityContext.CurrentAccount.ID))
            {
                return(tags.Values.Where(p => p.Name != "").OrderByDescending(p => p.Id).ToList());
            }

            #endregion

            using (var db = new DbManager("crm"))
            {
                var q = new SqlQuery(CRM_TAG + " t")
                        .Select("t." + CrmTagFields.id, "t." + CrmTagFields.title)
                        .Where(Exp.Eq("t." + CrmTagFields.tenant_id, id_tenant))
                        .Where(Exp.Eq("t." + CrmTagFields.entity_type, CRM_CONTACT_ENTITY_TYPE));

                var crm_tags = db.ExecuteList(q)
                               .ConvertAll(r =>
                                           new MailTag(-Convert.ToInt32(r[0])
                                                       , (string)r[1]
                                                       , new List <string>()
                                                       , ""
                                                       , 0));

                foreach (var tag in crm_tags)
                {
                    if (tags.ContainsKey(tag.Id))
                    {
                        tags[tag.Id].Name = tag.Name;
                    }
                    else
                    {
                        tags.Add(tag.Id, tag);
                    }
                }
            }

            return(tags.Values.Where(t => t.Name != "").OrderByDescending(p => p.Id).ToList());
        }
        public List <MailTag> GetTags(int tenant, string user, bool mailOnly)
        {
            var tags = new Dictionary <int, MailTag>();

            using (var db = GetDb())
            {
                db.ExecuteList(new SqlQuery(TagTable.name)
                               .Select(TagTable.Columns.id, TagTable.Columns.name, TagTable.Columns.style,
                                       TagTable.Columns.addresses, TagTable.Columns.count, TagTable.Columns.crm_id)
                               .Where(GetUserWhere(user, tenant)))
                .ForEach(r =>
                         tags.Add(0 < Convert.ToInt32(r[5]) ? -Convert.ToInt32(r[5]) : Convert.ToInt32(r[0]),
                                  new MailTag(
                                      (0 < Convert.ToInt32(r[5]) && !mailOnly)
                                            ? -Convert.ToInt32(r[5])
                                            : Convert.ToInt32(r[0])
                                      , (string)r[1]
                                      ,
                                      !string.IsNullOrEmpty(r[3].ToString())
                                            ? r[3].ToString().Split(';').ToList()
                                            : new List <string>()
                                      , ConvertToString(r[2])
                                      , Convert.ToInt32(r[4])))
                         );
            }

            if (mailOnly)
            {
                return(tags.Values.Where(p => p.Name != "").OrderByDescending(p => p.Id).ToList());
            }

            //TODO: Move to crm api

            if (!WebItemSecurity.IsAvailableForUser(WebItemManager.CRMProductID.ToString(),
                                                    SecurityContext.CurrentAccount.ID))
            {
                return(tags.Values.Where(p => p.Name != "").OrderByDescending(p => p.Id).ToList());
            }

            const string crm_tag_alias = "t";

            using (var db = new DbManager("crm"))
            {
                var q = new SqlQuery(CrmTagTable.name.Alias(crm_tag_alias))
                        .Select(CrmTagTable.Columns.id.Prefix(crm_tag_alias), CrmTagTable.Columns.title.Prefix(crm_tag_alias))
                        .Where(CrmTagTable.Columns.tenant_id.Prefix(crm_tag_alias), tenant)
                        .Where(CrmTagTable.Columns.entity_type.Prefix(crm_tag_alias), CRM_CONTACT_ENTITY_TYPE);

                var crmTags = db.ExecuteList(q)
                              .ConvertAll(r =>
                                          new MailTag(-Convert.ToInt32(r[0])
                                                      , (string)r[1]
                                                      , new List <string>()
                                                      , ""
                                                      , 0));

                foreach (var tag in crmTags)
                {
                    if (tags.ContainsKey(tag.Id))
                    {
                        tags[tag.Id].Name = tag.Name;
                    }
                    else
                    {
                        tags.Add(tag.Id, tag);
                    }
                }
            }

            return(tags.Values.Where(t => t.Name != "").OrderByDescending(p => p.Id).ToList());
        }
예제 #9
0
        /// <summary>
        /// Search emails in Accounts, Mail, CRM, Peaople Contact System
        /// </summary>
        /// <param name="tenant">Tenant id</param>
        /// <param name="userName">User id</param>
        /// <param name="term">Search word</param>
        /// <param name="maxCountPerSystem">limit result per Contact System</param>
        /// <param name="timeout">Timeout in milliseconds</param>
        /// <param name="httpContextScheme"></param>
        /// <returns></returns>
        public List <string> SearchEmails(int tenant, string userName, string term, int maxCountPerSystem, string httpContextScheme, int timeout = -1)
        {
            var equality = new ContactEqualityComparer();
            var contacts = new List <string>();
            var userGuid = new Guid(userName);

            var watch = new Stopwatch();

            watch.Start();

            var apiHelper = new ApiHelper(httpContextScheme);

            var taskList = new List <Task <List <string> > >()
            {
                Task.Run(() =>
                {
                    CoreContext.TenantManager.SetCurrentTenant(tenant);
                    SecurityContext.AuthenticateMe(userGuid);

                    return(SearchMailContacts(tenant, userName, term, maxCountPerSystem).ToList());
                }),

                Task.Run(() =>
                {
                    CoreContext.TenantManager.SetCurrentTenant(tenant);
                    SecurityContext.AuthenticateMe(userGuid);

                    return(SearchAccountEmails(tenant, userName, term));
                }),

                Task.Run(() =>
                {
                    CoreContext.TenantManager.SetCurrentTenant(tenant);
                    SecurityContext.AuthenticateMe(userGuid);

                    return(WebItemSecurity.IsAvailableForUser(WebItemManager.CRMProductID.ToString(),
                                                              SecurityContext.CurrentAccount.ID)
                        ? apiHelper.SearchCrmEmails(term, maxCountPerSystem)
                        : new List <string>());
                }),

                Task.Run(() =>
                {
                    CoreContext.TenantManager.SetCurrentTenant(tenant);
                    SecurityContext.AuthenticateMe(userGuid);

                    return(WebItemSecurity.IsAvailableForUser(WebItemManager.PeopleProductID.ToString(),
                                                              SecurityContext.CurrentAccount.ID)
                        ? apiHelper.SearchPeopleEmails(term, 0, maxCountPerSystem)
                        : new List <string>());
                })
            };

            try
            {
                var taskArray = taskList.ToArray <Task>();

                Task.WaitAll(taskArray, timeout);

                watch.Stop();
            }
            catch (AggregateException e)
            {
                watch.Stop();

                var errorText =
                    new StringBuilder("SearchEmails: \nThe following exceptions have been thrown by WaitAll():");

                foreach (var t in e.InnerExceptions)
                {
                    errorText
                    .AppendFormat("\n-------------------------------------------------\n{0}", t);
                }

                _log.Error(errorText.ToString());
            }

            contacts =
                taskList.Aggregate(contacts,
                                   (current, task) => !task.IsFaulted &&
                                   task.IsCompleted &&
                                   !task.IsCanceled
                        ? current.Concat(task.Result).ToList()
                        : current)
                .Distinct(equality)
                .ToList();

            _log.Debug("SearchEmails (term = '{0}'): {1} sec / {2} items", term, watch.Elapsed.TotalSeconds, contacts.Count);

            return(contacts);
        }
예제 #10
0
        public FileUploadResult ProcessUpload(HttpContext context)
        {
            if (!WebItemSecurity.IsAvailableForUser(ProductEntryPoint.ID.ToString(), SecurityContext.CurrentAccount.ID))
            {
                throw CRMSecurity.CreateSecurityException();
            }

            var     contactId = Convert.ToInt32(context.Request["contactID"]);
            Contact contact   = null;

            if (contactId != 0)
            {
                using (var scope = DIHelper.Resolve())
                {
                    contact = scope.Resolve <DaoFactory>().ContactDao.GetByID(contactId);
                    if (!CRMSecurity.CanEdit(contact))
                    {
                        throw CRMSecurity.CreateSecurityException();
                    }
                }
            }

            var fileUploadResult = new FileUploadResult();

            if (!FileToUpload.HasFilesToUpload(context))
            {
                return(fileUploadResult);
            }

            var file = new FileToUpload(context);

            if (String.IsNullOrEmpty(file.FileName) || file.ContentLength == 0)
            {
                throw new InvalidOperationException(CRMErrorsResource.InvalidFile);
            }

            if (0 < SetupInfo.MaxImageUploadSize && SetupInfo.MaxImageUploadSize < file.ContentLength)
            {
                fileUploadResult.Success = false;
                fileUploadResult.Message = FileSizeComment.GetFileImageSizeNote(CRMCommonResource.ErrorMessage_UploadFileSize, false).HtmlEncode();
                return(fileUploadResult);
            }

            if (FileUtility.GetFileTypeByFileName(file.FileName) != FileType.Image)
            {
                fileUploadResult.Success = false;
                fileUploadResult.Message = CRMJSResource.ErrorMessage_NotImageSupportFormat.HtmlEncode();
                return(fileUploadResult);
            }

            var uploadOnly = Convert.ToBoolean(context.Request["uploadOnly"]);
            var tmpDirName = Convert.ToString(context.Request["tmpDirName"]);

            try
            {
                ContactPhotoManager.PhotoData photoData;
                if (contactId != 0)
                {
                    photoData = ContactPhotoManager.UploadPhoto(file.InputStream, contactId, uploadOnly);
                }
                else
                {
                    if (String.IsNullOrEmpty(tmpDirName) || tmpDirName == "null")
                    {
                        tmpDirName = Guid.NewGuid().ToString();
                    }
                    photoData = ContactPhotoManager.UploadPhotoToTemp(file.InputStream, tmpDirName);
                }

                fileUploadResult.Success = true;
                fileUploadResult.Data    = photoData;
            }
            catch (Exception e)
            {
                fileUploadResult.Success = false;
                fileUploadResult.Message = e.Message.HtmlEncode();
                return(fileUploadResult);
            }

            if (contact != null)
            {
                var messageAction = contact is Company ? MessageAction.CompanyUpdatedPhoto : MessageAction.PersonUpdatedPhoto;
                MessageService.Send(context.Request, messageAction, MessageTarget.Create(contact.ID), contact.GetTitle());
            }

            return(fileUploadResult);
        }
예제 #11
0
        protected void Page_Load(object sender, EventArgs e)
        {
            Page.RegisterStyleControl(VirtualPathUtility.ToAbsolute("~/skins/page_default.less"));

            var defaultPageSettings = SettingsManager.Instance.LoadSettings <StudioDefaultPageSettings>(TenantProvider.CurrentTenantID);

            if (defaultPageSettings != null && defaultPageSettings.DefaultProductID != Guid.Empty)
            {
                if (defaultPageSettings.DefaultProductID == defaultPageSettings.FeedModuleID)
                {
                    Context.Response.Redirect("feed.aspx");
                }

                var products = WebItemManager.Instance.GetItemsAll <IProduct>();
                foreach (var p in products)
                {
                    if (p.ID.Equals(defaultPageSettings.DefaultProductID))
                    {
                        var productInfo = WebItemSecurity.GetSecurityInfo(p.ID.ToString());
                        if (productInfo.Enabled && WebItemSecurity.IsAvailableForUser(p.ID.ToString(), SecurityContext.CurrentAccount.ID))
                        {
                            Context.Response.Redirect(p.StartURL);
                        }
                    }
                }
            }

            Master.DisabledSidePanel = true;
            Master.TopStudioPanel.DisableProductNavigation = true;

            Title = Resources.Resource.MainPageTitle;
            var items = WebItemManager.Instance.GetItems(Web.Core.WebZones.WebZoneType.StartProductList);

            _showDocs = (Product)items.Find(r => r.ID == WebItemManager.DocumentsProductID);
            if (_showDocs != null)
            {
                items.RemoveAll(r => r.ID == _showDocs.ProductID);
            }
            _productRepeater.DataSource = items;
            _productRepeater.DataBind();



            _welcomeBoxContainer.Options.IsPopup = true;
            var showWelcomePopup = ((Request["first"] ?? "") == "1");

            if (showWelcomePopup && Session["first"] == null)
            {
                Session["first"] = new object();
            }
            else
            {
                showWelcomePopup = false;
            }

            _afterRegistryWelcomePopupBoxHolder.Visible = showWelcomePopup;

            var isVisitor = CoreContext.UserManager.GetUsers(SecurityContext.CurrentAccount.ID).IsVisitor();
            var collaboratorPopupSettings = SettingsManager.Instance.LoadSettingsFor <CollaboratorSettings>(SecurityContext.CurrentAccount.ID);

            if (showWelcomePopup)
            {
                Page.RegisterInlineScript("StudioBlockUIManager.blockUI('#studio_welcomeMessageBox', 400, 300, 0);");
            }

            if (isVisitor && collaboratorPopupSettings.FirstVisit)
            {
                AjaxPro.Utility.RegisterTypeForAjax(GetType());

                ShowWelcomePopupForCollaborator               = true;
                _welcomePopupForCollaborators.Visible         = true;
                _welcomeCollaboratorContainer.Options.IsPopup = true;

                Page.RegisterInlineScript("StudioBlockUIManager.blockUI('#studio_welcomeCollaboratorContainer', 500, 400, 0);");
            }
        }
예제 #12
0
 public static bool IsAvailableForUser(Guid userId)
 {
     return(WebItemSecurity.IsAvailableForUser(WebItemManager.CRMProductID, userId));
 }