.NET TEMPLATE WITH CQRS USING MEDIATOR
Template usando mediator con CQRS la aplicacion tiene como finalidad manejar autentication y autorizacion usando JWT.
- [CQRS TEMPLATE]
- 📂RBACV2.Api
- ┣ 📂Controllers
- ┣ 📂Settings
- ┣ Program.cs
- 📂RBACV2.Application
- ┣ 📂AzureADApp
- ┣ 📂Users
- ┣ 📂Common
- ┣ 📂Organization
- ┣ IoC.cs
- 📂RBACV2.Domain
- ┣ 📂Common
- 📂RBACV2.Infrastructure
- ┣ 📂Context
- ┣ 📂Migration
- ┣ 📂Policies
- ┣ 📂Services
- ┣ 📂Utils
- ┣ IoC.cs
RBACV2.Api
: es el proyecto principal del microservicio.Controllers
: es una carpeta que contiene los controladores de la aplicación.RBACV2.Aplication
: es el proyecto con los comandos y queries del microservicio.RBACV2.Domain
: es el proyecto principal del microservicio.RBACV2.Infrastucture
: es una carpeta que contiene los hubs (sockets con signalR) de la aplicación.Migrations
: es una carpeta que contiene las migraciones de la aplicación.Context
: es una carpeta que contiene los Contextos de la base de datos.Policies
: es una carpeta que contiene los modelos de la aplicación.Services
: es una carpeta que contiene los servicios o logica de negocio de la aplicación.Dtos
: es una carpeta que contiene los DTOs de la aplicación.Interfaces
: es una carpeta que contiene los contratos de los servicio de la aplicación.Tests
: es una carpeta que contiene los tests de la aplicación.
Favor revisar documentación en swagger al momento de correr la api para mejor comprensión.
Ruta | Método |
---|---|
/api/access-token |
Get |
/api/access-token |
Post |
/api/access-token/refresh |
Post |
/api/azure-ad-apps/active-directory |
Get |
/api/azure-ad-apps |
Get |
/api/azure-ad-apps |
POST |
/api/azure-ad-apps/{id} |
GET |
/api/azure-ad-apps/{id} |
PUT |
/api/azure-ad-apps/{id} |
DELETE |
/api/azure-ad-apps/{organizationId} |
DELETE |
/api/azure-ad-permissions/active-directory |
Get |
/api/azure-ad-permissons/active-directory/{oid} |
Get |
/api/azure-ad-permissons/permissions |
Get |
/api/azure-ad-permissions |
POST |
/api/azure-ad-permissions/{id} |
GET |
/api/azure-ad-permissions/{id} |
PUT |
/api/azure-ad-permissions/{id} |
DELETE |
/api/azure-ad-permissions/category |
GET |
/api/azure-ad-permissions/categories |
GET |
/api/azure-ad-permissions/organization/{organizationId} |
GET |
/api/azure-ad-permissions/organization/no-organization |
GET |
/api/azure-ad-permissions/categories |
GET |
/api/azure-ad-permissions-to-organizations |
GET |
/api/azure-ad-permissions-to-organizations |
POST |
/api/azure-ad-permissions-to-organizations/{id} |
DELETE |
/api/azure-ad-permissions-to-organizations/{organizationId} |
GET |
/api/users |
GET |
/api/users |
POST |
/api/users/{id} |
GET |
/api/users/{id} |
PUT |
/api/users/{id} |
DELETE |
/api/azure-ad-users/user-role/{roleId} |
Get |
/api/azure-ad-users/photo/{userOid} |
Get |
/api/azure-ad-users/organization/{organizationId} |
Get |
/api/azure-ad-users/unaffiliated-users/ |
Get |
/api/azure-ad-users-permissions/{permissionId} |
GET |
/api/azure-ad-users-permissions/{userId} |
GET |
/api/azure-ad-users-permissions |
GET |
/api/azure-ad-users-permissions |
DELETE |
/api/azure-ad-users-permissions |
POST |
/api/organization/{organizationId} |
GET |
/api/permissions-to-roles |
GET |
/api/permissions-to-roles |
POST |
/api/permissions-to-roles/{id} |
GET |
/api/permissions-to-roles |
DELETE |
/api/role/{id} |
GET |
/api/role/{id} |
PUT |
/api/role/{id} |
DELETE |
/api/role |
GET |
/api/roles/organization/{organizationId} |
GET |
/api/role |
POST |
/api/role/user |
POST |
/api/role/user |
DELETE |
/api/users/current |
GET |
{
"organizationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"displayName": "string",
"description": "string",
"spaRedirect": {
"redirectUri": [
"string"
]
},
"web": {
"implicitGrantSettings": {
"enableAccessToken": true,
"enableIdToken": true
}
}
}
{
"displayName": "string",
"description": "string",
"value": "string",
"categories": 0,
"organizationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
{
"id": "Guid",
"appPermissionOid": "Guid",
"appId": "Guid",
"appOid": "Guid",
"azureADAppId": "Guid",
"displayName": "string",
"description": "string",
"value": "string"
}
{
"id": "Guid",
"azureADPermissionId": "Guid",
"organizationId": "Guid",
}
{
"firstName": "string",
"fullName": "string",
"userName": "string",
"isOrganizationAdmin": false,
"isEnabled": true,
"organizationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"roleId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"passwordProfile": {
"password": "string",
"forceChangePassword": true
}
}
{
"name": "string",
"adminsIDs": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
],
"usersIDs": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
],
"permissionsIDs": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
],
"isGlobalOrganization": true
}
{
"permissionsId": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
],
"roleId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
{
"azureADPermissionIds": [
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
],
"organizationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
{
"name": "string",
"description": "string",
"status": true,
"organizationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
{
"code": "string"
}
Un pull request bien documentado debe contar con los siguientes factores:
- Describir de manera precisa su finalidad.
- Cuenta con la(s) tarea(s) que dieron paso a su creación.
- Explica el desarrollo realizado.
Las pruebas unitarias están implementadas utilizando Xunit. Todo desarrollo realizado debe estar cubierto en un gran porcentaje por pruebas unitarias.
Las pruebas unitarias son fundamentales, por lo que las mismas deben desarrollarse con rigurosidad y teniendo en cuenta que la cobertura de estas se valida Para más información puede navegar al siguient enlace.