Giter VIP home page Giter VIP logo

cqrs-template's Introduction

CQRS-TEMPLATE

.NET TEMPLATE WITH CQRS USING MEDIATOR

.NET Docker Docker

Template usando mediator con CQRS la aplicacion tiene como finalidad manejar autentication y autorizacion usando JWT.

Tabla de contenido

Especificaciones:

Composición:

  1. 📂RBACV2.Api
    1. ┣ 📂Controllers
    2. ┣ 📂Settings
    3. ┣ Program.cs
  2. 📂RBACV2.Application
    1. ┣ 📂AzureADApp
    2. ┣ 📂Users
    3. ┣ 📂Common
    4. ┣ 📂Organization
    5. ┣ IoC.cs
  3. 📂RBACV2.Domain
    1. ┣ 📂Common
  4. 📂RBACV2.Infrastructure
    1. ┣ 📂Context
    2. ┣ 📂Migration
    3. ┣ 📂Policies
    4. ┣ 📂Services
    5. ┣ 📂Utils
    6. ┣ 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.

Endpoints

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

Modelos

AzureADAppDto
{
  "organizationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "displayName": "string",
  "description": "string",
  "spaRedirect": {
    "redirectUri": [
      "string"
    ]
  },
  "web": {
    "implicitGrantSettings": {
      "enableAccessToken": true,
      "enableIdToken": true
    }
  }
}
AzureADPermissionDto | Create/Update
{
  "displayName": "string",
  "description": "string",
  "value": "string",
  "categories": 0,
  "organizationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
AzureADPermissionDto | Read
{
    "id": "Guid",
    "appPermissionOid": "Guid",
    "appId": "Guid",
    "appOid": "Guid",
    "azureADAppId": "Guid",
    "displayName": "string",
    "description": "string",
    "value": "string"
}
AzureADPermissionToOrganizationDto
{
  "id": "Guid",
  "azureADPermissionId": "Guid",
  "organizationId": "Guid",
}
UserDto
{
  "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
  }
}
Organization
{
  "name": "string",
  "adminsIDs": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  ],
  "usersIDs": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  ],
  "permissionsIDs": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  ],
  "isGlobalOrganization": true
}
PermissionToRoles
{
  "permissionsId": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  ],
  "roleId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
PermissionToOrganization
{
  "azureADPermissionIds": [
    "3fa85f64-5717-4562-b3fc-2c963f66afa6"
  ],
  "organizationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

Roles
{
  "name": "string",
  "description": "string",
  "status": true,
  "organizationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
AccesToken
{
  "code": "string"
}

Documentación

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.

Unit Testing

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.