working on various components of the documentation
This commit is contained in:
@@ -4,7 +4,10 @@
|
||||
- [x] Installation
|
||||
- [x] Database usage
|
||||
- [x] Authorization usage
|
||||
- [ ] LogicResult usage
|
||||
- [ ] Repositories usage
|
||||
- [ ] AuthService usage
|
||||
- [x] LogicResult usage
|
||||
- [x] Repositories usage
|
||||
- [x] AuthService usage
|
||||
- [x] AuthMiddleware usage
|
||||
- [ ] AdminPages usage
|
||||
- [ ] Endpoints usage
|
||||
- [ ] Blazor pages usage
|
||||
|
||||
0
docs/api/endpoints.md
Normal file
0
docs/api/endpoints.md
Normal file
@@ -1,5 +1,5 @@
|
||||
# Ho to use the Web API version
|
||||
This Installation adds all HopFrame [endpoints](./endpoints.md) and [services](./services.md) to the application.
|
||||
This Installation adds all HopFrame [endpoints](./endpoints.md) and [repositories](../repositories.md) to the application.
|
||||
|
||||
1. Add the HopFrame.Api library to your project:
|
||||
|
||||
|
||||
33
docs/api/logicresults.md
Normal file
33
docs/api/logicresults.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# LogicResults
|
||||
LogicResults provide another layer of abstraction above the ActionResults.
|
||||
They help you sending the right `HttpStatusCode` with the right data.
|
||||
|
||||
## Usage
|
||||
1. Create an endpoint that returns an `ActionResult`:
|
||||
|
||||
```csharp
|
||||
[HttpGet("hello")]
|
||||
public ActionResult<string> Hello() {
|
||||
return new ActionResult<string>("Hello, World!");
|
||||
}
|
||||
```
|
||||
2. Now instead of directly returning the `ActionResult`, return a `LogicResult`
|
||||
|
||||
```csharp
|
||||
[HttpGet("hello")]
|
||||
public ActionResult<string> Hello() {
|
||||
return LogicResult<string>.Ok("Hello, World!");
|
||||
}
|
||||
```
|
||||
3. This allows you to very easily change the return type by simply calling the right function
|
||||
|
||||
```csharp
|
||||
[HttpGet("hello")]
|
||||
public ActionResult<string> Hello() {
|
||||
if (!Auth.IsLoggedIn)
|
||||
return LogicResult<string>.Forbidden();
|
||||
|
||||
return LogicResult<string>.Ok("Hello, World!");
|
||||
}
|
||||
```
|
||||
**Hint:** You can also provide an error message for status codes that are not in the 200 range.
|
||||
2
docs/blazor/admin.md
Normal file
2
docs/blazor/admin.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# HopFrame Admin Pages
|
||||
|
||||
20
docs/blazor/auth.md
Normal file
20
docs/blazor/auth.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Auth Service
|
||||
The `IAuthService` provides some useful methods to handle user authentication (login/register).
|
||||
|
||||
## Usage
|
||||
Simply define the `IAuthService` as a dependency
|
||||
|
||||
```csharp
|
||||
public interface IAuthService {
|
||||
Task Register(UserRegister register);
|
||||
Task<bool> Login(UserLogin login);
|
||||
Task Logout();
|
||||
|
||||
Task<Token> RefreshLogin();
|
||||
Task<bool> IsLoggedIn();
|
||||
}
|
||||
```
|
||||
## Automatically refresh user sessions
|
||||
1. Make sure you have implementented the `AuthMiddleware` how it's described in step 5 of the [installation](./installation.md).
|
||||
|
||||
2. After that, the access token of the user gets automatically refreshed as long as the refresh token is valid.
|
||||
@@ -1,5 +1,5 @@
|
||||
## How to use the Blazor API
|
||||
This Installation adds all HopFrame [pages](./pages.md) and [services](./services.md) to the application.
|
||||
This Installation adds all HopFrame [pages](./pages.md) and [repositories](../repositories.md) to the application.
|
||||
|
||||
1. Add the HopFrame.Web library to your project
|
||||
|
||||
|
||||
0
docs/blazor/pages.md
Normal file
0
docs/blazor/pages.md
Normal file
75
docs/repositories.md
Normal file
75
docs/repositories.md
Normal file
@@ -0,0 +1,75 @@
|
||||
# HopFrame Repositories
|
||||
The HopFrame provies repositories for the various build in database models as an abstraction around the `HopDbContext` to ensure, that the data is proccessed and saved correctly.
|
||||
|
||||
## Overview
|
||||
The repositories can also be used by simply defining them as a dependency in your service / controller.
|
||||
|
||||
### User Repository
|
||||
|
||||
```csharp
|
||||
public interface IUserRepository {
|
||||
Task<IList<User>> GetUsers();
|
||||
|
||||
Task<User> GetUser(Guid userId);
|
||||
|
||||
Task<User> GetUserByEmail(string email);
|
||||
|
||||
Task<User> GetUserByUsername(string username);
|
||||
|
||||
Task<User> AddUser(User user);
|
||||
|
||||
Task UpdateUser(User user);
|
||||
|
||||
Task DeleteUser(User user);
|
||||
|
||||
Task<bool> CheckUserPassword(User user, string password);
|
||||
|
||||
Task ChangePassword(User user, string password);
|
||||
}
|
||||
```
|
||||
|
||||
### Group Repository
|
||||
|
||||
```csharp
|
||||
public interface IGroupRepository {
|
||||
Task<IList<PermissionGroup>> GetPermissionGroups();
|
||||
|
||||
Task<IList<PermissionGroup>> GetDefaultGroups();
|
||||
|
||||
Task<IList<PermissionGroup>> GetUserGroups(User user);
|
||||
|
||||
Task<PermissionGroup> GetPermissionGroup(string name);
|
||||
|
||||
Task EditPermissionGroup(PermissionGroup group);
|
||||
|
||||
Task<PermissionGroup> CreatePermissionGroup(PermissionGroup group);
|
||||
|
||||
Task DeletePermissionGroup(PermissionGroup group);
|
||||
}
|
||||
```
|
||||
|
||||
### Permission Repository
|
||||
|
||||
```csharp
|
||||
public interface IPermissionRepository {
|
||||
Task<bool> HasPermission(IPermissionOwner owner, params string[] permissions);
|
||||
|
||||
Task<Permission> AddPermission(IPermissionOwner owner, string permission);
|
||||
|
||||
Task RemovePermission(IPermissionOwner owner, string permission);
|
||||
|
||||
Task<IList<string>> GetFullPermissions(IPermissionOwner owner);
|
||||
}
|
||||
```
|
||||
|
||||
### Token Repository
|
||||
|
||||
```csharp
|
||||
public interface ITokenRepository {
|
||||
Task<Token> GetToken(string content);
|
||||
|
||||
Task<Token> CreateToken(int type, User owner);
|
||||
|
||||
Task DeleteUserTokens(User owner);
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user