Exemplo n.º 1
0
        // Ensure all overriden implementations of FromInternal cover all newly added properties.
        internal virtual void FromInternal(Security securityConfiguration)
        {
            this.AzureActiveDirectory  = securityConfiguration.AzureActiveDirectory;
            this.ClusterCredentialType = securityConfiguration.ClusterCredentialType;
            this.ServerCredentialType  = securityConfiguration.ServerCredentialType;

            if (securityConfiguration.CertificateInformation != null)
            {
                this.CertificateInformation = new X509GA();
                this.CertificateInformation.FromInternal(securityConfiguration.CertificateInformation);
            }
        }
Exemplo n.º 2
0
        public FileResult Index(Guid?Id)
        {
            if (Id == null)
            {
                return(AccessDenied());
            }

            RemoteCalendarAccessManager manager = new RemoteCalendarAccessManager();

            BLM.RemoteCalendarAccess remoteCalendarAccess = manager.GetRemoteCalendarAccess(Id.Value);

            if (remoteCalendarAccess == null)
            {
                return(AccessDenied());
            }

            AzureActiveDirectory azureAD = new AzureActiveDirectory();

            IUser user = null;

            try
            {
                user = azureAD.GetUser(remoteCalendarAccess.UserId).Result;
            }
            catch (AggregateException e)
            {
                if (!e.InnerExceptions.Any(i => i.Message == "User " + remoteCalendarAccess.UserId + " not found."))
                {
                    throw;
                }
            }

            if (user == null || user.AccountEnabled == false)
            {
                return(AccessDenied());
            }

            manager.UpdateLastAccessTime(remoteCalendarAccess);

            Uri           uri           = new Uri(remoteCalendarAccess.SiteAddress);
            string        realm         = TokenHelper.GetRealmFromTargetUrl(uri);
            var           token         = TokenHelper.GetAppOnlyAccessToken("00000003-0000-0ff1-ce00-000000000000", uri.Authority, realm);
            ClientContext clientContext = TokenHelper.GetClientContextWithAccessToken(uri.ToString(), token.AccessToken);

            clientContext.Load(clientContext.Web.Lists);
            clientContext.ExecuteQuery();

            List list = clientContext.Web.Lists.Where(l => l.Id == remoteCalendarAccess.CalendarId).First();

            if (list == null)
            {
                return(AccessDenied());
            }

            ListItemCollection items = list.GetItems(CamlQuery.CreateAllItemsQuery());

            clientContext.Load(items);

            clientContext.Load(clientContext.Web);
            clientContext.Load(clientContext.Web.RegionalSettings);
            clientContext.Load(clientContext.Web.RegionalSettings.TimeZone);
            clientContext.Load(clientContext.Web, w => w.Title);

            clientContext.ExecuteQuery();

            Calendar calendar = new Calendar();

            calendar.Title    = clientContext.Web.Title + " - " + list.Title;
            calendar.Timezone = Timezone.Parse(clientContext.Web.RegionalSettings.TimeZone.Description);
            calendar.Events   = items.Select(i => Event.Parse(i)).ToList <Event>();

            FileContentResult result = File(System.Text.Encoding.Default.GetBytes(calendar.ToString()), "text/calendar", "calendar.ics");

            return(result);
        }