finished documentation for installation, database usage and authentication
This commit is contained in:
42
docs/Authentication.md
Normal file
42
docs/Authentication.md
Normal 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" />
|
||||
```
|
||||
@@ -1,9 +1,9 @@
|
||||
# HopFrame Documentation
|
||||
|
||||
- [x] In code documentation
|
||||
- [ ] Installation
|
||||
- [ ] Database usage
|
||||
- [ ] Authentication usage
|
||||
- [x] Installation
|
||||
- [x] Database usage
|
||||
- [x] Authentication usage
|
||||
- [ ] LogicResult usage
|
||||
- [ ] Repositories usage
|
||||
- [ ] AuthService usage
|
||||
|
||||
37
docs/installation/Blazor.md
Normal file
37
docs/installation/Blazor.md
Normal 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> </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();
|
||||
```
|
||||
37
docs/installation/Database.md
Normal file
37
docs/installation/Database.md
Normal 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> </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
|
||||
```
|
||||
2
docs/installation/README.md
Normal file
2
docs/installation/README.md
Normal 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).
|
||||
17
docs/installation/WebAPI.md
Normal file
17
docs/installation/WebAPI.md
Normal 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> </p>
|
||||
|
||||
3. Add the HopFrame services to your application, provide the previously created `DatabaseContext` that inherits from `HopDbContextBase`
|
||||
|
||||
```csharp
|
||||
builder.Services.AddHopFrame<DatabaseContext>();
|
||||
```
|
||||
Reference in New Issue
Block a user