eXpandFramework / eXpand

DevExpress XAF (eXpressApp) extension framework. 𝗹𝗶𝗻𝗸𝗲𝗱𝗶𝗻.𝗲𝘅𝗽𝗮𝗻𝗱𝗳𝗿𝗮𝗺𝗲𝘄𝗼𝗿𝗸.𝗰𝗼𝗺, 𝘆𝗼𝘂𝘁𝘂𝗯𝗲.𝗲𝘅𝗽𝗮𝗻𝗱𝗳𝗿𝗮𝗺𝗲𝘄𝗼𝗿𝗸.𝗰𝗼𝗺 and 𝘁𝘄𝗶𝘁𝘁𝗲𝗿 @𝗲𝘅𝗽𝗮𝗻𝗱𝗳𝗿𝗮𝗺𝗲𝘄𝗼𝗿𝗸 and or simply 𝗦𝘁𝗮𝗿/𝘄𝗮𝘁𝗰𝗵 this repository and get notified from 𝗚𝗶𝘁𝗛𝘂𝗯
http://expand.expandframework.com
Microsoft Public License
222 stars 115 forks source link

New StoreToDisk package #944

Closed apobekiaris closed 9 months ago

apobekiaris commented 2 years ago

A working implementation existis in Reactive module, create a standalone package from it.

it is common practice when developing with Xaf to drop the database on each major change and let Xaf recreate from scratch. What if you want to add initial secured data?

You could use the updater and somehome code it there e.g. Azure Vaults or Enviromental Variables that point to a file exist only locally etc. But there are many problems with this approach. Think for example that your objects maybe created later and not in the Updater by parsing the results of a web service.

To save your self from such headaches and have your objects initialized correctly you can use the StoreToDisk package.

apobekiaris commented 2 years ago

The pre-release 4.221.3.0 in the Reactive.XAF lab branch includes commits that relate to this task:

To minimize version conflicts we recommend that you use the Xpand.XAF.Core.All, Xpand.XAF.Win.All, Xpand.XAF.Web.All packages. Doing so, all packages will be at your disposal and .NET will add a dependecy only to those packages that you actually use and not to all (see the Modules installation-registrations youtube video).

Released packages: Xpand.Extensions v.4.221.3
Xpand.Extensions.Blazor v.4.221.3
Xpand.Extensions.Mono.Cecil v.4.221.3
Xpand.Extensions.Office.Cloud v.4.221.3
Xpand.Extensions.Office.Cloud.Google.Blazor v.4.221.3
Xpand.Extensions.Reactive v.4.221.3
Xpand.Extensions.XAF v.4.221.3
Xpand.Extensions.XAF.Xpo v.4.221.3
Xpand.TestsLib v.4.221.3
Xpand.TestsLib.Blazor v.4.221.3
Xpand.TestsLib.Common v.4.221.3
Xpand.TestsLib.EasyTest v.4.221.3
Xpand.VersionConverter v.4.221.3
Xpand.XAF.Core.All v.4.221.3
Xpand.XAF.Modules.AutoCommit v.4.221.3
Xpand.XAF.Modules.Blazor v.4.221.3
Xpand.XAF.Modules.BulkObjectUpdate v.4.221.3
Xpand.XAF.Modules.CloneMemberValue v.4.221.3
Xpand.XAF.Modules.CloneModelView v.4.221.3
Xpand.XAF.Modules.Email v.4.221.3
Xpand.XAF.Modules.GridListEditor v.4.221.3
Xpand.XAF.Modules.HideToolBar v.4.221.3
Xpand.XAF.Modules.JobScheduler.Hangfire v.4.221.3
Xpand.XAF.Modules.JobScheduler.Notification v.4.221.3
Xpand.XAF.Modules.MasterDetail v.4.221.3
Xpand.XAF.Modules.ModelMapper v.4.221.3
Xpand.XAF.Modules.ModelViewInheritance v.4.221.3
Xpand.XAF.Modules.Office.Cloud.Google v.4.221.3
Xpand.XAF.Modules.Office.Cloud.Google.Calendar v.4.221.3
Xpand.XAF.Modules.Office.Cloud.Google.Tasks v.4.221.3
Xpand.XAF.Modules.Office.Cloud.Microsoft v.4.221.3
Xpand.XAF.Modules.Office.Cloud.Microsoft.Calendar v.4.221.3
Xpand.XAF.Modules.Office.Cloud.Microsoft.Todo v.4.221.3
Xpand.XAF.Modules.Office.DocumentStyleManager v.4.221.3
Xpand.XAF.Modules.OneView v.4.221.3
Xpand.XAF.Modules.PositionInListView v.4.221.3
Xpand.XAF.Modules.ProgressBarViewItem v.4.221.3
Xpand.XAF.Modules.RazorView v.4.221.3
Xpand.XAF.Modules.Reactive v.4.221.3
Xpand.XAF.Modules.Reactive.Logger v.4.221.3
Xpand.XAF.Modules.Reactive.Logger.Client.Win v.4.221.3
Xpand.XAF.Modules.Reactive.Logger.Hub v.4.221.3
Xpand.XAF.Modules.Reactive.Rest v.4.221.3
Xpand.XAF.Modules.RefreshView v.4.221.3
Xpand.XAF.Modules.SequenceGenerator v.4.221.3
Xpand.XAF.Modules.SuppressConfirmation v.4.221.3
Xpand.XAF.Modules.TenantManager v.4.221.3
Xpand.XAF.Modules.ViewEditMode v.4.221.3
Xpand.XAF.Modules.ViewItemValue v.4.221.3
Xpand.XAF.Modules.ViewWizard v.4.221.3
Xpand.XAF.Modules.Windows v.4.221.3
Xpand.XAF.Web.All v.4.221.3
Xpand.XAF.Win.All v.4.221.3

Please update the related Nuget packages and test if issues is addressed. These are nightly nuget packages available only from our NugetServer.

If you do not use these packages directly but through a module of the main eXpandFramework project, please wait for the bot to notify you again when integration is finished or update the related packages manually.

Thanks a lot for your contribution.

apobekiaris commented 2 years ago

In the screencast:

  1. We create an Account that derives from BaseObject and already has a Guid Oid key. Additionaly we add a Name and a Secret property.
  2. We decorate with the StoreToDiskAttirbute to serialize the Secret
  3. We run the Windows app (Blazor is exactly the same), create a new Account and set its Name and Secret.
  4. We modify the app.config to use a new database and start the app again.
  5. We examine the json folder and we see that the data are protected for our Machine.
  6. We create a new Account and set only its Name.
  7. The StoreDisk detects the existing record from the name and assigns the Secret property

StoreToDisk

expand commented 9 months ago

Closing issue for age. Feel free to reopen it at any time.

.Thank you for your contribution.