Woof.Settings.Protected
7.0.0
Prefix Reserved
dotnet add package Woof.Settings.Protected --version 7.0.0
NuGet\Install-Package Woof.Settings.Protected -Version 7.0.0
<PackageReference Include="Woof.Settings.Protected" Version="7.0.0" />
paket add Woof.Settings.Protected --version 7.0.0
#r "nuget: Woof.Settings.Protected, 7.0.0"
// Install Woof.Settings.Protected as a Cake Addin #addin nuget:?package=Woof.Settings.Protected&version=7.0.0 // Install Woof.Settings.Protected as a Cake Tool #tool nuget:?package=Woof.Settings.Protected&version=7.0.0
Woof.Settings.Protected
A part of the Woof Tookit by CodeDog.
Distributed under MIT License. (c)2022 by CodeDog, All rights reserved.
About
The package adds a data protection to the Woof.Settings
settings files.
The JsonSettingsProtected
class has one additional method - Protect()
.
When it's called the settings file gets encrypted and the file is only
readable to the user who first executed the application, or for all users on
the same computer. The original, unencrypted settings file is deleeted.
If the settings is already protected - call to Protect()
is ignored.
To use this package on Linux
additional dependency of
Woof.DataProtection.Linux
is required.
Also, using DataProtectionScope.LocalMachine
on Linux requires root permissions.
In order for the protection to work, the settings directory must be
writeable to the user. If the user doesn't have write permission to the
settings directory or the original file can't be deleted, the Protect()
call will throw UnauthorizedAccessException
.
Usage
To create singleton (configured for the current user):
class Settings : JsonSettingsProtected<Settings> {
public static Settings Default { get; } = new();
private Settings() : JsonSettingsProtected(DataProtectionScope.CurrentUser) { }
// Settings properties go here...
}
To load and protect the settings:
Settings.Default.Load().Protect();
or
await (await Settings.Default.LoadAsync()).ProtectAsync();
Chaining the asynchronous methods looks not great, but still works.
As for the main JsonSettings
module, it will not throw when the settings
file doesn't exist. The properties would just have their default values.
It is the user's code responsibility either to provide sane defaults or just test whether they are set with the settings file.
For more details use the XML documentation, read the documentation for the
Woof.DataProtection
, Woof.DataProtectionLinux
packages, check the package
source code, tests and examples.
Disclaimer
Woof Toolkit is a work in progress in constant development, however it's carefully maintained with production code quality.
PLEASE report all issues on GitHub!
Describe how to reproduce an issue. Also feel free to suggest new features or improvements.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net7.0
- Woof.DataProtection (>= 7.0.0)
- Woof.Settings (>= 7.0.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Woof.Settings.Protected:
Package | Downloads |
---|---|
Woof.Settings.AKV
Provides application settings in a JSON file with Azure Key Vault secrets access. |
GitHub repositories
This package is not used by any popular GitHub repositories.
.NET7 target.