Permissions & Authorization for Users #24
Initial Release; Includes Database and MVC refactoring
This commit is contained in:
@@ -48,13 +48,13 @@ namespace Disco.Services.Plugins.CommunityInterop
|
||||
|
||||
Status.UpdateStatus(1, "Updating Plugin Library Catalogue", "Building Request");
|
||||
|
||||
using (DiscoDataContext dbContext = new DiscoDataContext())
|
||||
using (DiscoDataContext database = new DiscoDataContext())
|
||||
{
|
||||
catalogueFile = Plugins.CatalogueFile(dbContext);
|
||||
catalogueFile = Plugins.CatalogueFile(database);
|
||||
|
||||
updateRequestBody = new PluginLibraryUpdateRequest()
|
||||
{
|
||||
DeploymentId = dbContext.DiscoConfiguration.DeploymentId,
|
||||
DeploymentId = database.DiscoConfiguration.DeploymentId,
|
||||
HostVersion = typeof(Plugins).Assembly.GetName().Version.ToString(4)
|
||||
};
|
||||
}
|
||||
@@ -111,13 +111,13 @@ namespace Disco.Services.Plugins.CommunityInterop
|
||||
|
||||
Status.UpdateStatus(50, "Updating Plugin Library Compatibility", "Building Request");
|
||||
|
||||
using (DiscoDataContext dbContext = new DiscoDataContext())
|
||||
using (DiscoDataContext database = new DiscoDataContext())
|
||||
{
|
||||
compatibilityFile = Plugins.CompatibilityFile(dbContext);
|
||||
compatibilityFile = Plugins.CompatibilityFile(database);
|
||||
|
||||
compatRequestBody = new PluginLibraryCompatibilityRequest()
|
||||
{
|
||||
DeploymentId = dbContext.DiscoConfiguration.DeploymentId,
|
||||
DeploymentId = database.DiscoConfiguration.DeploymentId,
|
||||
HostVersion = typeof(Plugins).Assembly.GetName().Version.ToString(4)
|
||||
};
|
||||
}
|
||||
@@ -200,7 +200,7 @@ namespace Disco.Services.Plugins.CommunityInterop
|
||||
}
|
||||
}
|
||||
|
||||
public override void InitalizeScheduledTask(DiscoDataContext dbContext)
|
||||
public override void InitalizeScheduledTask(DiscoDataContext Database)
|
||||
{
|
||||
// Random time between midday and midnight.
|
||||
var rnd = new Random();
|
||||
|
||||
@@ -13,6 +13,6 @@ namespace Disco.Services.Plugins.Features.CertificateProvider
|
||||
{
|
||||
// Certificate Plugin Requirements
|
||||
public abstract string CertificateProviderId { get; }
|
||||
public abstract Tuple<DeviceCertificate, List<string>> AllocateCertificate(DiscoDataContext dbContext, Device Device);
|
||||
public abstract Tuple<DeviceCertificate, List<string>> AllocateCertificate(DiscoDataContext Database, Device Device);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,14 +16,14 @@ namespace Disco.Services.Plugins.Features.WarrantyProvider
|
||||
// Warranty Plugin Requirements
|
||||
public abstract string WarrantyProviderId { get; }
|
||||
public abstract Type SubmitJobViewType { get; }
|
||||
public abstract dynamic SubmitJobViewModel(DiscoDataContext dbContext, Controller controller, Job Job, OrganisationAddress Address, User TechUser);
|
||||
public abstract Dictionary<string, string> SubmitJobParseProperties(DiscoDataContext dbContext, FormCollection form, Controller controller, Job Job, OrganisationAddress Address, User TechUser, string FaultDescription);
|
||||
public abstract Dictionary<string, string> SubmitJobDiscloseInfo(DiscoDataContext dbContext, Job Job, OrganisationAddress Address, User TechUser, string FaultDescription, Dictionary<string, string> WarrantyProviderProperties);
|
||||
public abstract string SubmitJob(DiscoDataContext dbContext, Job Job, OrganisationAddress Address, User TechUser, string FaultDescription, Dictionary<string, string> WarrantyProviderProperties);
|
||||
public abstract dynamic SubmitJobViewModel(DiscoDataContext Database, Controller controller, Job Job, OrganisationAddress Address, User TechUser);
|
||||
public abstract Dictionary<string, string> SubmitJobParseProperties(DiscoDataContext Database, FormCollection form, Controller controller, Job Job, OrganisationAddress Address, User TechUser, string FaultDescription);
|
||||
public abstract Dictionary<string, string> SubmitJobDiscloseInfo(DiscoDataContext Database, Job Job, OrganisationAddress Address, User TechUser, string FaultDescription, Dictionary<string, string> WarrantyProviderProperties);
|
||||
public abstract string SubmitJob(DiscoDataContext Database, Job Job, OrganisationAddress Address, User TechUser, string FaultDescription, Dictionary<string, string> WarrantyProviderProperties);
|
||||
|
||||
public abstract Type JobDetailsViewType { get; }
|
||||
public bool JobDetailsSupported { get { return this.JobDetailsViewType != null; } }
|
||||
public abstract dynamic JobDetailsViewModel(DiscoDataContext dbContext, Controller controller, Job Job);
|
||||
public abstract dynamic JobDetailsViewModel(DiscoDataContext Database, Controller controller, Job Job);
|
||||
|
||||
public static PluginFeatureManifest FindPluginFeature(string PluginIdOrWarrantyProviderId)
|
||||
{
|
||||
|
||||
@@ -95,12 +95,12 @@ namespace Disco.Services.Plugins
|
||||
if (Plugins.GetPlugins().FirstOrDefault(p => p.Id == packageManifest.Id) != null)
|
||||
throw new InvalidOperationException(string.Format("The '{0} [{1}]' Plugin is already installed, please uninstall any existing versions before trying again", packageManifest.Name, packageManifest.Id));
|
||||
|
||||
using (DiscoDataContext dbContext = new DiscoDataContext())
|
||||
using (DiscoDataContext database = new DiscoDataContext())
|
||||
{
|
||||
string packagePath = Path.Combine(dbContext.DiscoConfiguration.PluginsLocation, packageManifest.Id);
|
||||
string packagePath = Path.Combine(database.DiscoConfiguration.PluginsLocation, packageManifest.Id);
|
||||
|
||||
// Check for Compatibility
|
||||
var compatibilityData = Plugins.LoadCompatibilityData(dbContext);
|
||||
var compatibilityData = Plugins.LoadCompatibilityData(database);
|
||||
var pluginCompatibility = compatibilityData.Plugins.FirstOrDefault(i => i.Id.Equals(packageManifest.Id, StringComparison.InvariantCultureIgnoreCase) && packageManifest.Version == Version.Parse(i.Version));
|
||||
if (pluginCompatibility != null && !pluginCompatibility.Compatible)
|
||||
throw new InvalidOperationException(string.Format("The plugin [{0} v{1}] is not compatible: {2}", packageManifest.Id, packageManifest.VersionFormatted, pluginCompatibility.Reason));
|
||||
@@ -144,11 +144,11 @@ namespace Disco.Services.Plugins
|
||||
|
||||
// Install Plugin
|
||||
this.Status.UpdateStatus(80, "Initial Package Configuration");
|
||||
packageManifest.InstallPlugin(dbContext, this.Status);
|
||||
packageManifest.InstallPlugin(database, this.Status);
|
||||
|
||||
// Initialize Plugin
|
||||
this.Status.UpdateStatus(98, "Initializing Plugin for Use");
|
||||
packageManifest.InitializePlugin(dbContext);
|
||||
packageManifest.InitializePlugin(database);
|
||||
|
||||
// Add Plugin Manifest to Host Environment
|
||||
Plugins.AddPlugin(packageManifest);
|
||||
|
||||
@@ -14,10 +14,10 @@ namespace Disco.Services.Plugins
|
||||
|
||||
#region Lifecycle
|
||||
// Events/Triggers for Custom Plugin Initialization (Optional)
|
||||
public virtual void Install(DiscoDataContext dbContext, ScheduledTaskStatus Status) { return; }
|
||||
public virtual void Initialize(DiscoDataContext dbContext) { return; }
|
||||
public virtual void Uninstall(DiscoDataContext dbContext, bool UninstallData, ScheduledTaskStatus Status) { return; }
|
||||
public virtual void AfterUpdate(DiscoDataContext dbContext, PluginManifest PreviousManifest) { return; }
|
||||
public virtual void Install(DiscoDataContext Database, ScheduledTaskStatus Status) { return; }
|
||||
public virtual void Initialize(DiscoDataContext Database) { return; }
|
||||
public virtual void Uninstall(DiscoDataContext Database, bool UninstallData, ScheduledTaskStatus Status) { return; }
|
||||
public virtual void AfterUpdate(DiscoDataContext Database, PluginManifest PreviousManifest) { return; }
|
||||
#endregion
|
||||
|
||||
public virtual void Dispose()
|
||||
|
||||
@@ -12,8 +12,8 @@ namespace Disco.Services.Plugins
|
||||
{
|
||||
public PluginManifest Manifest { get; set; }
|
||||
|
||||
public abstract PluginConfigurationHandlerGetResponse Get(DiscoDataContext dbContext, Controller controller);
|
||||
public abstract bool Post(DiscoDataContext dbContext, FormCollection form, Controller controller);
|
||||
public abstract PluginConfigurationHandlerGetResponse Get(DiscoDataContext Database, Controller controller);
|
||||
public abstract bool Post(DiscoDataContext Database, FormCollection form, Controller controller);
|
||||
|
||||
public virtual void Dispose()
|
||||
{
|
||||
|
||||
@@ -12,7 +12,7 @@ namespace Disco.Services.Plugins
|
||||
public PluginFeatureManifest Manifest {get; internal set;}
|
||||
|
||||
// Allow Custom Initialization (Optional)
|
||||
public virtual void Initialize(DiscoDataContext dbContext) { return; }
|
||||
public virtual void Initialize(DiscoDataContext Database) { return; }
|
||||
|
||||
public virtual void Dispose()
|
||||
{
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace Disco.Services.Plugins
|
||||
[JsonIgnore]
|
||||
public Type CategoryType { get; private set; }
|
||||
|
||||
internal bool Initialize(DiscoDataContext dbContext, PluginManifest pluginManifest)
|
||||
internal bool Initialize(DiscoDataContext Database, PluginManifest pluginManifest)
|
||||
{
|
||||
this.PluginManifest = pluginManifest;
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Disco.Services.Plugins
|
||||
|
||||
using (var instance = this.CreateInstance())
|
||||
{
|
||||
instance.Initialize(dbContext);
|
||||
instance.Initialize(Database);
|
||||
}
|
||||
|
||||
PluginsLog.LogInitializedPluginFeature(this.PluginManifest, this);
|
||||
|
||||
@@ -284,7 +284,7 @@ namespace Disco.Services.Plugins
|
||||
{
|
||||
return JsonConvert.SerializeObject(this, Formatting.Indented, new VersionConverter());
|
||||
}
|
||||
private bool InitializePluginEnvironment(DiscoDataContext dbContext)
|
||||
private bool InitializePluginEnvironment(DiscoDataContext Database)
|
||||
{
|
||||
if (!environmentInitalized)
|
||||
{
|
||||
@@ -316,58 +316,58 @@ namespace Disco.Services.Plugins
|
||||
this.WebHandlerType = this.PluginAssembly.GetType(this.WebHandlerTypeName, true, true);
|
||||
|
||||
// Update non-static values
|
||||
this.StorageLocation = Path.Combine(dbContext.DiscoConfiguration.PluginStorageLocation, this.Id);
|
||||
this.StorageLocation = Path.Combine(Database.DiscoConfiguration.PluginStorageLocation, this.Id);
|
||||
|
||||
environmentInitalized = true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
internal bool AfterPluginUpdate(DiscoDataContext dbContext, PluginManifest PreviousManifest)
|
||||
internal bool AfterPluginUpdate(DiscoDataContext Database, PluginManifest PreviousManifest)
|
||||
{
|
||||
// Initialize Plugin
|
||||
InitializePluginEnvironment(dbContext);
|
||||
InitializePluginEnvironment(Database);
|
||||
|
||||
using (var pluginInstance = this.CreateInstance())
|
||||
{
|
||||
pluginInstance.AfterUpdate(dbContext, PreviousManifest);
|
||||
pluginInstance.AfterUpdate(Database, PreviousManifest);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
internal bool UninstallPlugin(DiscoDataContext dbContext, bool UninstallData, ScheduledTaskStatus Status)
|
||||
internal bool UninstallPlugin(DiscoDataContext Database, bool UninstallData, ScheduledTaskStatus Status)
|
||||
{
|
||||
// Initialize Plugin
|
||||
InitializePluginEnvironment(dbContext);
|
||||
InitializePluginEnvironment(Database);
|
||||
|
||||
using (var pluginInstance = this.CreateInstance())
|
||||
{
|
||||
pluginInstance.Uninstall(dbContext, UninstallData, Status);
|
||||
pluginInstance.Uninstall(Database, UninstallData, Status);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
internal bool InstallPlugin(DiscoDataContext dbContext, ScheduledTaskStatus Status)
|
||||
internal bool InstallPlugin(DiscoDataContext Database, ScheduledTaskStatus Status)
|
||||
{
|
||||
// Initialize Plugin
|
||||
InitializePluginEnvironment(dbContext);
|
||||
InitializePluginEnvironment(Database);
|
||||
|
||||
using (var pluginInstance = this.CreateInstance())
|
||||
{
|
||||
pluginInstance.Install(dbContext, Status);
|
||||
pluginInstance.Install(Database, Status);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
internal bool InitializePlugin(DiscoDataContext dbContext)
|
||||
internal bool InitializePlugin(DiscoDataContext Database)
|
||||
{
|
||||
// Initialize Plugin
|
||||
InitializePluginEnvironment(dbContext);
|
||||
InitializePluginEnvironment(Database);
|
||||
|
||||
// Initialize Plugin
|
||||
using (var pluginInstance = this.CreateInstance())
|
||||
{
|
||||
pluginInstance.Initialize(dbContext);
|
||||
pluginInstance.Initialize(Database);
|
||||
}
|
||||
PluginsLog.LogInitializedPlugin(this);
|
||||
|
||||
@@ -376,7 +376,7 @@ namespace Disco.Services.Plugins
|
||||
{
|
||||
foreach (var feature in Features)
|
||||
{
|
||||
feature.Initialize(dbContext, this);
|
||||
feature.Initialize(Database, this);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
@@ -250,18 +250,18 @@ namespace Disco.Services.Plugins
|
||||
throw new InvalidOperationException(string.Format("Unknown Plugin Feature Category Type: [{0}]", FeatureCategoryType.Name));
|
||||
}
|
||||
|
||||
public static string CatalogueFile(DiscoDataContext dbContext)
|
||||
public static string CatalogueFile(DiscoDataContext Database)
|
||||
{
|
||||
return Path.Combine(dbContext.DiscoConfiguration.PluginPackagesLocation, "Catalogue.json");
|
||||
return Path.Combine(Database.DiscoConfiguration.PluginPackagesLocation, "Catalogue.json");
|
||||
}
|
||||
public static string CompatibilityFile(DiscoDataContext dbContext)
|
||||
public static string CompatibilityFile(DiscoDataContext Database)
|
||||
{
|
||||
return Path.Combine(dbContext.DiscoConfiguration.PluginPackagesLocation, "Compatibility.json");
|
||||
return Path.Combine(Database.DiscoConfiguration.PluginPackagesLocation, "Compatibility.json");
|
||||
}
|
||||
|
||||
public static PluginLibraryUpdateResponse LoadCatalogue(DiscoDataContext dbContext)
|
||||
public static PluginLibraryUpdateResponse LoadCatalogue(DiscoDataContext Database)
|
||||
{
|
||||
var catalogueFile = CatalogueFile(dbContext);
|
||||
var catalogueFile = CatalogueFile(Database);
|
||||
|
||||
if (!File.Exists(catalogueFile))
|
||||
return null;
|
||||
@@ -269,13 +269,13 @@ namespace Disco.Services.Plugins
|
||||
return JsonConvert.DeserializeObject<PluginLibraryUpdateResponse>(File.ReadAllText(catalogueFile));
|
||||
}
|
||||
|
||||
public static PluginLibraryCompatibilityResponse LoadCompatibilityData(DiscoDataContext dbContext)
|
||||
public static PluginLibraryCompatibilityResponse LoadCompatibilityData(DiscoDataContext Database)
|
||||
{
|
||||
var pluginAssembly = typeof(Plugins).Assembly;
|
||||
Version hostVersion = pluginAssembly.GetName().Version;
|
||||
PluginLibraryCompatibilityResponse Data = null;
|
||||
var localCompatFile = Path.Combine(Path.GetDirectoryName(pluginAssembly.Location), "ReleasePluginCompatibility.json");
|
||||
var serverCompatFile = CompatibilityFile(dbContext);
|
||||
var serverCompatFile = CompatibilityFile(Database);
|
||||
|
||||
if (File.Exists(localCompatFile))
|
||||
{
|
||||
@@ -325,7 +325,7 @@ namespace Disco.Services.Plugins
|
||||
return Data;
|
||||
}
|
||||
|
||||
public static void InitalizePlugins(DiscoDataContext dbContext)
|
||||
public static void InitalizePlugins(DiscoDataContext Database)
|
||||
{
|
||||
if (_PluginManifests == null)
|
||||
{
|
||||
@@ -334,10 +334,10 @@ namespace Disco.Services.Plugins
|
||||
if (_PluginManifests == null)
|
||||
{
|
||||
Version hostVersion = typeof(Plugins).Assembly.GetName().Version;
|
||||
var compatibilityData = new Lazy<PluginLibraryCompatibilityResponse>(() => LoadCompatibilityData(dbContext));
|
||||
var compatibilityData = new Lazy<PluginLibraryCompatibilityResponse>(() => LoadCompatibilityData(Database));
|
||||
Dictionary<string, PluginManifest> loadedPlugins = new Dictionary<string, PluginManifest>();
|
||||
|
||||
PluginPath = dbContext.DiscoConfiguration.PluginsLocation;
|
||||
PluginPath = Database.DiscoConfiguration.PluginsLocation;
|
||||
|
||||
AppDomain appDomain = AppDomain.CurrentDomain;
|
||||
|
||||
@@ -367,7 +367,7 @@ namespace Disco.Services.Plugins
|
||||
if (File.Exists(updatePackagePath))
|
||||
{
|
||||
// Update Plugin
|
||||
pluginManifest = UpdatePlugin(dbContext, pluginManifest, updatePackagePath, compatibilityData.Value);
|
||||
pluginManifest = UpdatePlugin(Database, pluginManifest, updatePackagePath, compatibilityData.Value);
|
||||
}
|
||||
|
||||
if (pluginManifest != null)
|
||||
@@ -382,7 +382,7 @@ namespace Disco.Services.Plugins
|
||||
if (pluginManifest.HostVersionMax != null && pluginManifest.HostVersionMax < hostVersion)
|
||||
throw new InvalidOperationException(string.Format("The plugin [{0} v{1}] does not support this version of Disco (Support expired as of v{2})", pluginManifest.Id, pluginManifest.VersionFormatted, pluginManifest.HostVersionMax.ToString()));
|
||||
|
||||
pluginManifest.InitializePlugin(dbContext);
|
||||
pluginManifest.InitializePlugin(Database);
|
||||
loadedPlugins[pluginManifest.Id] = pluginManifest;
|
||||
}
|
||||
}
|
||||
@@ -414,7 +414,7 @@ namespace Disco.Services.Plugins
|
||||
|
||||
// Check for Data Removal
|
||||
bool DataUninstalled = false;
|
||||
string pluginStorageLocation = Path.Combine(dbContext.DiscoConfiguration.PluginStorageLocation, uninstallManifest.Id);
|
||||
string pluginStorageLocation = Path.Combine(Database.DiscoConfiguration.PluginStorageLocation, uninstallManifest.Id);
|
||||
|
||||
string pluginManifestUninstallDataFilename = Path.Combine(pluginStorageLocation, "manifest.uninstall.json");
|
||||
if (File.Exists(pluginManifestUninstallDataFilename))
|
||||
@@ -443,13 +443,13 @@ namespace Disco.Services.Plugins
|
||||
_PluginAssemblyManifests = _PluginManifests.Values.ToDictionary(p => p.PluginAssembly, p => p);
|
||||
}
|
||||
|
||||
public static PluginManifest UpdatePlugin(DiscoDataContext dbContext, PluginManifest ExistingManifest, String UpdatePluginPackageFilePath, PluginLibraryCompatibilityResponse CompatibilityData = null)
|
||||
public static PluginManifest UpdatePlugin(DiscoDataContext Database, PluginManifest ExistingManifest, String UpdatePluginPackageFilePath, PluginLibraryCompatibilityResponse CompatibilityData = null)
|
||||
{
|
||||
PluginManifest updatedManifest;
|
||||
|
||||
using (var packageStream = File.OpenRead(UpdatePluginPackageFilePath))
|
||||
{
|
||||
updatedManifest = UpdatePlugin(dbContext, ExistingManifest, packageStream, CompatibilityData);
|
||||
updatedManifest = UpdatePlugin(Database, ExistingManifest, packageStream, CompatibilityData);
|
||||
}
|
||||
|
||||
// Remove Update after processing
|
||||
@@ -458,7 +458,7 @@ namespace Disco.Services.Plugins
|
||||
return updatedManifest;
|
||||
}
|
||||
|
||||
public static PluginManifest UpdatePlugin(DiscoDataContext dbContext, PluginManifest ExistingManifest, Stream UpdatePluginPackage, PluginLibraryCompatibilityResponse CompatibilityData = null)
|
||||
public static PluginManifest UpdatePlugin(DiscoDataContext Database, PluginManifest ExistingManifest, Stream UpdatePluginPackage, PluginLibraryCompatibilityResponse CompatibilityData = null)
|
||||
{
|
||||
using (MemoryStream packageStream = new MemoryStream())
|
||||
{
|
||||
@@ -495,12 +495,12 @@ namespace Disco.Services.Plugins
|
||||
|
||||
// Check Compatibility
|
||||
if (CompatibilityData == null)
|
||||
CompatibilityData = LoadCompatibilityData(dbContext);
|
||||
CompatibilityData = LoadCompatibilityData(Database);
|
||||
var pluginCompatibility = CompatibilityData.Plugins.FirstOrDefault(i => i.Id.Equals(packageManifest.Id, StringComparison.InvariantCultureIgnoreCase) && packageManifest.Version == Version.Parse(i.Version));
|
||||
if (pluginCompatibility != null && !pluginCompatibility.Compatible)
|
||||
throw new InvalidOperationException(string.Format("The plugin [{0} v{1}] is not compatible: {2}", packageManifest.Id, packageManifest.VersionFormatted, pluginCompatibility.Reason));
|
||||
|
||||
string packagePath = Path.Combine(dbContext.DiscoConfiguration.PluginsLocation, packageManifest.Id);
|
||||
string packagePath = Path.Combine(Database.DiscoConfiguration.PluginsLocation, packageManifest.Id);
|
||||
|
||||
// Force Delete of Existing Folder
|
||||
if (Directory.Exists(packagePath))
|
||||
@@ -530,7 +530,7 @@ namespace Disco.Services.Plugins
|
||||
packageManifest = PluginManifest.FromPluginManifestFile(Path.Combine(packagePath, "manifest.json"));
|
||||
|
||||
// Trigger AfterPluginUpdate
|
||||
packageManifest.AfterPluginUpdate(dbContext, ExistingManifest);
|
||||
packageManifest.AfterPluginUpdate(Database, ExistingManifest);
|
||||
|
||||
PluginsLog.LogAfterUpdate(ExistingManifest, packageManifest);
|
||||
|
||||
|
||||
@@ -29,9 +29,9 @@ namespace Disco.Services.Plugins
|
||||
if (!File.Exists(manifestFileLocation))
|
||||
throw new FileNotFoundException("Plugin Manifest File Not Found", manifestFileLocation);
|
||||
|
||||
using (DiscoDataContext dbContext = new DiscoDataContext())
|
||||
using (DiscoDataContext database = new DiscoDataContext())
|
||||
{
|
||||
manifest.UninstallPlugin(dbContext, UninstallData, this.Status);
|
||||
manifest.UninstallPlugin(database, UninstallData, this.Status);
|
||||
}
|
||||
|
||||
string manifestUninstallFileLocation = Path.Combine(manifest.PluginLocation, "manifest.uninstall.json");
|
||||
|
||||
@@ -32,10 +32,10 @@ namespace Disco.Services.Plugins
|
||||
|
||||
List<Tuple<PluginManifest, string, PluginLibraryItem>> updatePlugins;
|
||||
|
||||
using (DiscoDataContext dbContext = new DiscoDataContext())
|
||||
using (DiscoDataContext database = new DiscoDataContext())
|
||||
{
|
||||
catalogue = Plugins.LoadCatalogue(dbContext);
|
||||
pluginPackagesLocation = dbContext.DiscoConfiguration.PluginPackagesLocation;
|
||||
catalogue = Plugins.LoadCatalogue(database);
|
||||
pluginPackagesLocation = database.DiscoConfiguration.PluginPackagesLocation;
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(pluginId))
|
||||
@@ -82,10 +82,10 @@ namespace Disco.Services.Plugins
|
||||
Plugins.RestartApp(1500);
|
||||
}
|
||||
|
||||
public static List<PluginManifest> OfflineInstalledPlugins(DiscoDataContext dbContext)
|
||||
public static List<PluginManifest> OfflineInstalledPlugins(DiscoDataContext Database)
|
||||
{
|
||||
string pluginsLocation = dbContext.DiscoConfiguration.PluginsLocation;
|
||||
string pluginsStorageLocation = dbContext.DiscoConfiguration.PluginStorageLocation;
|
||||
string pluginsLocation = Database.DiscoConfiguration.PluginsLocation;
|
||||
string pluginsStorageLocation = Database.DiscoConfiguration.PluginStorageLocation;
|
||||
|
||||
List<PluginManifest> installedPluginManifests = new List<PluginManifest>();
|
||||
|
||||
@@ -121,13 +121,13 @@ namespace Disco.Services.Plugins
|
||||
List<Tuple<PluginManifest, string, PluginLibraryItem>> updatePlugins = new List<Tuple<PluginManifest, string, PluginLibraryItem>>();
|
||||
|
||||
|
||||
using (DiscoDataContext dbContext = new DiscoDataContext())
|
||||
using (DiscoDataContext database = new DiscoDataContext())
|
||||
{
|
||||
pluginPackagesLocation = dbContext.DiscoConfiguration.PluginPackagesLocation;
|
||||
installedPluginManifests = OfflineInstalledPlugins(dbContext);
|
||||
pluginPackagesLocation = database.DiscoConfiguration.PluginPackagesLocation;
|
||||
installedPluginManifests = OfflineInstalledPlugins(database);
|
||||
|
||||
if (installedPluginManifests.Count > 0)
|
||||
pluginCatalogue = Plugins.LoadCatalogue(dbContext);
|
||||
pluginCatalogue = Plugins.LoadCatalogue(database);
|
||||
}
|
||||
|
||||
if (pluginCatalogue != null && installedPluginManifests.Count > 0)
|
||||
@@ -231,15 +231,15 @@ namespace Disco.Services.Plugins
|
||||
|
||||
Status.UpdateStatus(20, string.Format("{0} [{1} v{2}] by {3}", updateManifest.Name, updateManifest.Id, updateManifest.Version.ToString(4), updateManifest.Author), "Initializing Update Environment");
|
||||
|
||||
using (DiscoDataContext dbContext = new DiscoDataContext())
|
||||
using (DiscoDataContext database = new DiscoDataContext())
|
||||
{
|
||||
// Check for Compatibility
|
||||
var compatibilityData = Plugins.LoadCompatibilityData(dbContext);
|
||||
var compatibilityData = Plugins.LoadCompatibilityData(database);
|
||||
var pluginCompatibility = compatibilityData.Plugins.FirstOrDefault(i => i.Id.Equals(updateManifest.Id, StringComparison.InvariantCultureIgnoreCase) && updateManifest.Version == Version.Parse(i.Version));
|
||||
if (pluginCompatibility != null && !pluginCompatibility.Compatible)
|
||||
throw new InvalidOperationException(string.Format("The plugin [{0} v{1}] is not compatible: {2}", updateManifest.Id, updateManifest.VersionFormatted, pluginCompatibility.Reason));
|
||||
|
||||
var updatePluginPath = Path.Combine(dbContext.DiscoConfiguration.PluginsLocation, string.Format("{0}.discoPlugin", updateManifest.Id));
|
||||
var updatePluginPath = Path.Combine(database.DiscoConfiguration.PluginsLocation, string.Format("{0}.discoPlugin", updateManifest.Id));
|
||||
File.Move(packageTempFilePath, updatePluginPath);
|
||||
|
||||
if (existingManifest != null)
|
||||
|
||||
Reference in New Issue
Block a user