Esempio n. 1
0
        protected override IConfigurable PrepareDataObject()
        {
            OrgApp orgApp = (OrgApp)base.PrepareDataObject();

            if (base.Fields.IsModified("Enabled"))
            {
                orgApp.Enabled = this.Enabled;
            }
            if (base.Fields.IsModified("DefaultStateForUser"))
            {
                orgApp.DefaultStateForUser = new DefaultStateForUser?(this.DefaultStateForUser);
            }
            if (base.Fields.IsModified("ProvidedTo"))
            {
                orgApp.ProvidedTo = this.ProvidedTo;
            }
            if (base.Fields.IsModified("UserList"))
            {
                if (this.UserList != null && this.UserList.Count > 1000)
                {
                    base.WriteError(new LocalizedException(Strings.ErrorTooManyUsersInUserList(1000)), ErrorCategory.InvalidArgument, null);
                }
                orgApp.UserList = OrgApp.ConvertUserListToPresentationFormat(this, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADRecipient>), this.UserList);
            }
            return(orgApp);
        }
Esempio n. 2
0
        internal override ExtensionData GetExtensionDataForInstall(IRecipientSession adRecipientSession)
        {
            ExtensionData extensionDataForInstall = base.GetExtensionDataForInstall(adRecipientSession);

            extensionDataForInstall.IsMandatory        = (base.DefaultStateForUser == Microsoft.Exchange.Management.Extension.DefaultStateForUser.AlwaysEnabled);
            extensionDataForInstall.IsEnabledByDefault = (base.DefaultStateForUser == Microsoft.Exchange.Management.Extension.DefaultStateForUser.Enabled);
            extensionDataForInstall.ProvidedTo         = this.ProvidedTo;
            extensionDataForInstall.SpecificUsers      = OrgApp.ConvertPresentationFormatToWireUserList(adRecipientSession, this.UserList);
            return(extensionDataForInstall);
        }
        private App ConvertStoreObjectToPresentationObject(ExtensionData extensionData)
        {
            DefaultStateForUser?defaultStateForUser = new DefaultStateForUser?(extensionData.IsMandatory ? DefaultStateForUser.AlwaysEnabled : (extensionData.IsEnabledByDefault ? DefaultStateForUser.Enabled : DefaultStateForUser.Disabled));
            Uri iconURL = extensionData.IconURL;

            if (this.isUserScope)
            {
                return(new App((ExtensionInstallScope.User == extensionData.Scope.GetValueOrDefault()) ? null : defaultStateForUser, extensionData.MarketplaceAssetID, extensionData.MarketplaceContentMarket, extensionData.ProviderName, iconURL, extensionData.ExtensionId, extensionData.VersionAsString, extensionData.Type, extensionData.Scope, extensionData.RequestedCapabilities, extensionData.DisplayName, extensionData.Description, extensionData.Enabled, extensionData.Manifest.OuterXml, new ADObjectId(), extensionData.Etoken, extensionData.EtokenData, extensionData.AppStatus));
            }
            return(new OrgApp(defaultStateForUser, extensionData.ProvidedTo, OrgApp.ConvertWireUserListToPresentationFormat(this.adRecipientSession, extensionData.SpecificUsers), extensionData.MarketplaceAssetID, extensionData.MarketplaceContentMarket, extensionData.ProviderName, iconURL, extensionData.ExtensionId, extensionData.VersionAsString, extensionData.Type, extensionData.Scope, extensionData.RequestedCapabilities, extensionData.DisplayName, extensionData.Description, extensionData.Enabled, extensionData.Manifest.OuterXml, extensionData.Etoken, extensionData.EtokenData, extensionData.AppStatus, new ADObjectId()));
        }
Esempio n. 4
0
        private App ConvertStoreObjectToPresentationObject(ExtensionData extensionData)
        {
            DefaultStateForUser?defaultStateForUser = new DefaultStateForUser?(extensionData.IsMandatory ? DefaultStateForUser.AlwaysEnabled : (extensionData.IsEnabledByDefault ? DefaultStateForUser.Enabled : DefaultStateForUser.Disabled));
            Uri       uri = extensionData.IconURL;
            string    uriString;
            Exception ex;

            if (null != uri && ExtensionInstallScope.Default == extensionData.Scope.GetValueOrDefault() && DefaultExtensionTable.TryConvertToCompleteUrl(base.MailboxSession.MailboxOwner, uri.OriginalString, extensionData.ExtensionId, out uriString, out ex))
            {
                uri = new Uri(uriString, UriKind.RelativeOrAbsolute);
            }
            if (this.isUserScope)
            {
                return(new App((ExtensionInstallScope.User == extensionData.Scope.GetValueOrDefault()) ? null : defaultStateForUser, extensionData.MarketplaceAssetID, extensionData.MarketplaceContentMarket, extensionData.ProviderName, uri, extensionData.ExtensionId, extensionData.VersionAsString, extensionData.Type, extensionData.Scope, extensionData.RequestedCapabilities, extensionData.DisplayName, extensionData.Description, extensionData.Enabled, extensionData.Manifest.OuterXml, base.MailboxOwner.ObjectId, extensionData.Etoken, extensionData.EtokenData, extensionData.AppStatus));
            }
            return(new OrgApp(defaultStateForUser, extensionData.ProvidedTo, OrgApp.ConvertWireUserListToPresentationFormat(this.adRecipientSession, extensionData.SpecificUsers), extensionData.MarketplaceAssetID, extensionData.MarketplaceContentMarket, extensionData.ProviderName, uri, extensionData.ExtensionId, extensionData.VersionAsString, extensionData.Type, extensionData.Scope, extensionData.RequestedCapabilities, extensionData.DisplayName, extensionData.Description, extensionData.Enabled, extensionData.Manifest.OuterXml, extensionData.Etoken, extensionData.EtokenData, extensionData.AppStatus, base.MailboxOwner.ObjectId));
        }
Esempio n. 5
0
        protected override void InternalSave(ConfigurableObject instance)
        {
            if (instance == null)
            {
                throw new ArgumentNullException("instance");
            }
            App owaExtension = instance as App;

            if (owaExtension == null)
            {
                throw new NotSupportedException("Save: " + instance.GetType().FullName);
            }
            OWAExtensionDataProvider.RunAction(delegate
            {
                using (InstalledExtensionTable installedExtensionTable = InstalledExtensionTable.CreateInstalledExtensionTable(this.domain, this.isUserScope, null, this.MailboxSession))
                {
                    switch (owaExtension.ObjectState)
                    {
                    case ObjectState.New:
                        if (!owaExtension.IsDownloadOnly)
                        {
                            installedExtensionTable.InstallExtension(owaExtension.GetExtensionDataForInstall(this.adRecipientSession), false);
                        }
                        break;

                    case ObjectState.Changed:
                        if (this.isUserScope)
                        {
                            installedExtensionTable.ConfigureUserExtension(owaExtension.AppId, owaExtension.Enabled);
                        }
                        else
                        {
                            OrgApp orgApp = instance as OrgApp;
                            if (orgApp == null)
                            {
                                throw new NotSupportedException("Save: " + instance.GetType().FullName);
                            }
                            installedExtensionTable.ConfigureOrgExtension(orgApp.AppId, orgApp.Enabled, orgApp.DefaultStateForUser == DefaultStateForUser.AlwaysEnabled, orgApp.DefaultStateForUser == DefaultStateForUser.Enabled, orgApp.ProvidedTo, OrgApp.ConvertPresentationFormatToWireUserList(this.adRecipientSession, orgApp.UserList));
                        }
                        break;
                    }
                }
            });
        }
        protected void InternalSave(ConfigurableObject instance)
        {
            if (instance == null)
            {
                throw new ArgumentNullException("instance");
            }
            App owaExtension = instance as App;

            if (owaExtension == null)
            {
                throw new NotSupportedException("Save: " + instance.GetType().FullName);
            }
            OWAExtensionDataProvider.RunAction(delegate
            {
                switch (owaExtension.ObjectState)
                {
                case ObjectState.New:
                    if (!owaExtension.IsDownloadOnly)
                    {
                        OrgExtensionTable.SetOrgExtension(this.domain, 0, null, owaExtension.GetExtensionDataForInstall(this.adRecipientSession));
                        return;
                    }
                    break;

                case ObjectState.Unchanged:
                    break;

                case ObjectState.Changed:
                    {
                        OrgApp orgApp = instance as OrgApp;
                        if (orgApp == null)
                        {
                            throw new NotSupportedException("Save: " + instance.GetType().FullName);
                        }
                        OrgExtensionTable.ConfigureOrgExtension(this.domain, orgApp.AppId, orgApp.Enabled, orgApp.DefaultStateForUser == DefaultStateForUser.AlwaysEnabled, orgApp.DefaultStateForUser == DefaultStateForUser.Enabled, orgApp.ProvidedTo, OrgApp.ConvertPresentationFormatToWireUserList(this.adRecipientSession, orgApp.UserList));
                        break;
                    }

                default:
                    return;
                }
            });
        }
Esempio n. 7
0
        private IConfigurable ReadManifest(Stream source, ExtensionType extensionType)
        {
            ExtensionData extensionData = ExtensionData.ParseOsfManifest(source, this.MarketplaceAssetID, this.MarketplaceQueryMarket, extensionType, this.OrganizationApp ? ExtensionInstallScope.Organization : ExtensionInstallScope.User, true, DisableReasonType.NotDisabled, string.Empty, null);

            if (this.OrganizationApp)
            {
                return(new OrgApp(new DefaultStateForUser?(this.DefaultStateForUser), this.ProvidedTo, OrgApp.ConvertUserListToPresentationFormat(this, new DataAccessHelper.CategorizedGetDataObjectDelegate(base.GetDataObject <ADRecipient>), this.UserList), extensionData.MarketplaceAssetID, extensionData.MarketplaceContentMarket, extensionData.ProviderName, extensionData.IconURL, extensionData.ExtensionId, extensionData.VersionAsString, extensionData.Type, extensionData.Scope, extensionData.RequestedCapabilities, extensionData.DisplayName, extensionData.Description, this.Enabled, extensionData.Manifest.OuterXml, this.Etoken, null, extensionData.AppStatus, (this.adUser != null) ? this.adUser.Id : new ADObjectId())
                {
                    IsDownloadOnly = this.DownloadOnly
                });
            }
            if (!base.ExchangeRunspaceConfig.HasRoleOfType(RoleType.OrgMarketplaceApps) && !this.AllowReadWriteMailbox && RequestedCapabilities.ReadWriteMailbox == extensionData.RequestedCapabilities)
            {
                throw new OwaExtensionOperationException(Strings.ErrorReasonUserNotAllowedToInstallReadWriteMailbox);
            }
            return(new App(null, extensionData.MarketplaceAssetID, extensionData.MarketplaceContentMarket, extensionData.ProviderName, extensionData.IconURL, extensionData.ExtensionId, extensionData.VersionAsString, extensionData.Type, extensionData.Scope, extensionData.RequestedCapabilities, extensionData.DisplayName, extensionData.Description, this.Enabled, extensionData.Manifest.OuterXml, this.adUser.Id, this.Etoken, null, extensionData.AppStatus)
            {
                IsDownloadOnly = this.DownloadOnly
            });
        }