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); }
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; }