예제 #1
0
        public iCalApiContentResponse GetCalendariCalStream(string calendarId, string signature)
        {
            iCalApiContentResponse resp = null;
            var userId = Signature.Read <Guid>(signature);

            if (CoreContext.UserManager.GetUsers(userId).ID != ASC.Core.Users.Constants.LostUser.ID)
            {
                var currentUserId = Guid.Empty;
                if (SecurityContext.IsAuthenticated)
                {
                    currentUserId = SecurityContext.CurrentAccount.ID;
                    SecurityContext.Logout();
                }
                try
                {
                    var pwd = CoreContext.Authentication.GetUserPasswordHash(userId);
                    SecurityContext.AuthenticateMe(userId.ToString(), pwd);

                    BaseCalendar icalendar;
                    int          calId;
                    if (int.TryParse(calendarId, out calId))
                    {
                        icalendar = _dataProvider.GetCalendarById(calId);
                    }
                    else
                    {
                        //external
                        icalendar = CalendarManager.Instance.GetCalendarForUser(SecurityContext.CurrentAccount.ID, calendarId);
                        if (icalendar != null)
                        {
                            var viewSettings = _dataProvider.GetUserViewSettings(SecurityContext.CurrentAccount.ID, new List <string> {
                                calendarId
                            });
                            icalendar = icalendar.GetUserCalendar(viewSettings.FirstOrDefault());
                        }
                    }

                    if (icalendar != null)
                    {
                        resp = new iCalApiContentResponse(new MemoryStream(Encoding.UTF8.GetBytes(icalendar.ToiCalFormat())), icalendar.Id + ".ics");
                    }
                }
                finally
                {
                    SecurityContext.Logout();
                    if (currentUserId != Guid.Empty)
                    {
                        var pwd = CoreContext.Authentication.GetUserPasswordHash(currentUserId);
                        SecurityContext.AuthenticateMe(currentUserId.ToString(), pwd);
                    }
                }
            }
            return(resp);
        }
예제 #2
0
        public iCalApiContentResponse GetCalendariCalStream(string calendarId, string signature)
        {
            iCalApiContentResponse resp = null;
            var userId = Signature.Read<Guid>(signature);
            if (CoreContext.UserManager.GetUsers(userId).ID != ASC.Core.Users.Constants.LostUser.ID)
            {
                var currentUserId = Guid.Empty;
                if (SecurityContext.IsAuthenticated)
                {
                    currentUserId = SecurityContext.CurrentAccount.ID;
                    SecurityContext.Logout();
                }
                try
                {
                    SecurityContext.AuthenticateMe(userId);

                    BaseCalendar icalendar;
                    int calId;
                    if (int.TryParse(calendarId, out calId))
                    {
                        icalendar = _dataProvider.GetCalendarById(calId);
                    }
                    else
                    {
                        //external                
                        icalendar = CalendarManager.Instance.GetCalendarForUser(SecurityContext.CurrentAccount.ID, calendarId);
                        if (icalendar != null)
                        {

                            var viewSettings = _dataProvider.GetUserViewSettings(SecurityContext.CurrentAccount.ID, new List<string> { calendarId });
                            icalendar = icalendar.GetUserCalendar(viewSettings.FirstOrDefault());
                        }
                    }

                    if (icalendar != null)
                        resp = new iCalApiContentResponse(new MemoryStream(Encoding.UTF8.GetBytes(icalendar.ToiCalFormat())), icalendar.Id + ".ics");
                }
                finally
                {

                    SecurityContext.Logout();
                    if (currentUserId != Guid.Empty)
                    {
                        SecurityContext.AuthenticateMe(currentUserId);
                    }
                }
            }
            return resp;
        }