finished documentation for installation, database usage and authentication

This commit is contained in:
2024-11-21 16:55:56 +01:00
parent 986c5cebde
commit eef03c152d
6 changed files with 138 additions and 3 deletions

42
docs/Authentication.md Normal file
View File

@@ -0,0 +1,42 @@
# HopFrame Authentication
With the provided HopFrame services, you can secure your endpoints and blazor pages so that only logged-in users or users with the right permissions can access the endpoint/page
## Usage
### Secure your endpoints
You can secure your endpoints by adding the `Authorized` attribute.
```csharp
// Everyone can access this endpoint
[HttpGet("hello")]
public ActionResult<string> HelloWorld() {
return "Hello, World!";
}
// Only logged-in users can access this endpoint
[HttpGet("hello"), Authorized]
public ActionResult<string> HelloWorld() {
return "Hello, World!";
}
// Only logged-in users with the specified permissions can access this endpoint
[HttpGet("hello"), Authorized("test.permission", "test.permission.another")]
public ActionResult<string> HelloWorld() {
return "Hello, World!";
}
```
### Secure your Blazor pages
You can secure your Blazor pages by using the `AuthorizedView` component.
Everything placed inside this component will only be displayed if the authorization was successful.
You can also redirect the user if the authorization fails by specifying a `RedirectIfUnauthorized` url.
```htmlinblazor
<!-- You can either specify one 'Permission', multiple 'Permissions' or none if the user only needs to be logged-in -->
<AuthorizedView Permission="test.permission">
<p>This paragraph is only visible if the user is logged-in and has the required permission</p>
</AuthorizedView>
<!-- This component will redirect the user to the login page if the user is unauthorized -->
<AuthorizedView RedirectIfUnauthorized="/login" />
```

View File

@@ -1,9 +1,9 @@
# HopFrame Documentation # HopFrame Documentation
- [x] In code documentation - [x] In code documentation
- [ ] Installation - [x] Installation
- [ ] Database usage - [x] Database usage
- [ ] Authentication usage - [x] Authentication usage
- [ ] LogicResult usage - [ ] LogicResult usage
- [ ] Repositories usage - [ ] Repositories usage
- [ ] AuthService usage - [ ] AuthService usage

View File

@@ -0,0 +1,37 @@
## How to use the Blazor API
This Installation adds all HopFrame [pages](../pages) and [services](../services) to the application.
1. Add the HopFrame.Web library to your project
```
dotnet add package HopFrame.Web
```
2. Create a [DbContext](./Database.md) that inherits the ``HopDbContext`` and add a data source
<p>&nbsp;</p>
3. Add the HopFrame services to your application, provide the previously created `DatabaseContext` that inherits from `HopDbContextBase`
```csharp
builder.Services.AddHopFrame<DatabaseContext>();
```
4. **Optional:** You can also add your [AdminContext](../admin)
```csharp
builder.Services.AddAdminContext<AdminContext>();
```
5. Add the authentication middleware to your app
```csharp
app.UseMiddleware<AuthMiddleware>();
```
6. Add the HopFrame pages to your Razor components
```csharp
app.MapRazorComponents<App>()
.AddHopFrameAdminPages()
.AddInteractiveServerRenderMode();
```

View File

@@ -0,0 +1,37 @@
# Database initialization
You also need to initialize the data source with the tables from HopFrame
## Create a DbContext
1. Create a c# class that inherits from the `HopDbContextBase` and add a data source (In the example Sqlite is used)
```csharp
public class DatabaseContext : HopDbContextBase {
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
base.OnConfiguring(optionsBuilder);
optionsBuilder.UseSqlite("...");
}
}
```
**IMPORTANT:** You need to leave the `base.OnConfiguring(optionsBuilder)` in place so the HopFrame model relations are set correctly.
<p>&nbsp;</p>
2. Register the `DatabaseContext` as a service
```csharp
builder.Services.AddDbContext<DatabaseContext>();
```
3. Create a database migration
```bash
dotnet ef migrations add Initial
```
4. Apply the migration to the data source
```bash
dotnet ef database update
```

View File

@@ -0,0 +1,2 @@
# HopFrame Usage
There are two different versions of HopFrame, either the [Web API](./WebAPI.md) version or the full [Blazor web version](./Blazor.md).

View File

@@ -0,0 +1,17 @@
# Ho to use the Web API version
This Installation adds all HopFrame [endpoints](../endpoints) and [services](../services) to the application.
1. Add the HopFrame.Api library to your project:
```
dotnet add package HopFrame.Api
```
2. Create a [DbContext](./Database.md) that inherits the ``HopDbContext`` and add a data source
<p>&nbsp;</p>
3. Add the HopFrame services to your application, provide the previously created `DatabaseContext` that inherits from `HopDbContextBase`
```csharp
builder.Services.AddHopFrame<DatabaseContext>();
```