GithubHelp home page GithubHelp logo

juliosanchezs / menudinamicocsharp Goto Github PK

View Code? Open in Web Editor NEW
5.0 1.0 0.0 6.94 MB

El Back End ha sido desarrollado en .NET Core, empleando el patrón Repositorio, la herramienta AutoMapper y SQL server.

C# 100.00%

menudinamicocsharp's Introduction

Ejemplo API de Menú Dinámico en .NET C#

Proyecto personal

Este repositorio contiene un proyecto desarrollado en .NET C# que implementa un Menú Dinámico. La API está construida siguiendo las mejores prácticas de desarrollo y utiliza las siguientes tecnologías y patrones:

  • .NET Core
  • C#
  • Microsoft SQL Server
  • Entity Framework
  • Json Web Token
  • Patrón Repositorio
  • AutoMapper

Requisitos

Asegúrate de tener instalados los siguientes requisitos antes de comenzar:

  • SQL Server 2014 o superior
  • Visual Studio 2022

Configuración

  1. Clona este repositorio en tu máquina local.
git clone https://github.com/JulioSancheZS/MenuDinamicoCSharp.git
  1. Abre el proyecto en Visual Studio 2022

  2. Acá esta el Script SQL, ejecutalo en SQL Server

  3. Configura la cadena de conexión a tu instancia de SQL Server en el archivo appsettings.json:

"ConnectionStrings": {
    "DefaultConnection": "Server=TuServidor;Database=MenuDB;User=TuUsuario;Password=TuContraseña;"
}

Caracteristicas

Este proyecto abarca tres componentes fundamentales: autenticación, un menú dinámico y operaciones CRUD básicas de Usuario, Rol y Menu.

API de Menú

Este endpoint devuelve la estructura de un menú en formato JSON.

Endpoint

GET api/itemmenu/menu

El endpoint devuelve una respuesta en formato JSON con la siguiente estructura:

Campo Descripción
status Indica si la solicitud fue exitosa (booleano)
msg Mensaje de estado de la solicitud (cadena)
value Arreglo de ítems de menú
token Token (si aplica)

Estructura de value (Arreglo de ítems de menú)

El campo value contiene un arreglo de objetos que representan los ítems del menú. Cada objeto tiene la siguiente estructura:

Campo Descripción
idItemMenu Identificador del ítem de menú (entero)
idItemMenuPadre Identificador del ítem de menú padre (entero o nulo)
ruta Ruta del ítem de menú (cadena)
texto Texto del ítem de menú, texto que se muestra de menu (cadena)
visible Indica si el ítem de menú es visible (booleano)
fechaRegistro Fecha de registro del ítem de menú (formato ISO)
esActivo Indica si el ítem de menú está activo (booleano)
submenu Arreglo de subítems de menú (puede estar vacío)

Ejemplo de respuesta

{
  "status": true,
  "msg": "OK",
  "value": [
    {
      "idItemMenu": 1,
      "idItemMenuPadre": null,
      "ruta": "",
      "texto": "Seguridad",
      "visible": true,
      "fechaRegistro": "0001-01-01T00:00:00",
      "esActivo": true,
      "submenu": [
        {
          "idItemMenu": 2,
          "idItemMenuPadre": 1,
          "ruta": "usuario",
          "texto": "Usuario",
          "visible": true,
          "fechaRegistro": "0001-01-01T00:00:00",
          "esActivo": true,
          "submenu": []
        },
        {
          "idItemMenu": 10,
          "idItemMenuPadre": 1,
          "ruta": "menu",
          "texto": "Menu",
          "visible": true,
          "fechaRegistro": "0001-01-01T00:00:00",
          "esActivo": true,
          "submenu": []
        }
      ]
    },
    {
      "idItemMenu": 3,
      "idItemMenuPadre": null,
      "ruta": "dashboard",
      "texto": "Dashboard",
      "visible": true,
      "fechaRegistro": "0001-01-01T00:00:00",
      "esActivo": true,
      "submenu": []
    },
    {
      "idItemMenu": 4,
      "idItemMenuPadre": null,
      "ruta": "",
      "texto": "Catálogo",
      "visible": true,
      "fechaRegistro": "0001-01-01T00:00:00",
      "esActivo": true,
      "submenu": [
        {
          "idItemMenu": 6,
          "idItemMenuPadre": 4,
          "ruta": "rol",
          "texto": "Rol",
          "visible": true,
          "fechaRegistro": "0001-01-01T00:00:00",
          "esActivo": true,
          "submenu": []
        }
      ]
    }
  ],
  "token": null
}

Notas

  • idItemMenuPadre es un campo que puede ser nulo para los ítems principales del menú.
  • submenu es un arreglo de objetos que representa los subítems del menú.

API de Autenticación

Este endpoint permite autenticar a los usuarios y devuelve un token de acceso en formato JSON.

Endpoint

  • POST api/authentication/

Parámetros

Para autenticar a un usuario, debes proporcionar los siguientes parámetros en la solicitud POST:

  • usuario (cadena): El nombre de usuario del usuario que desea autenticar.
  • pass (cadena): La contraseña asociada al usuario.

Ejemplo de solicitud POST:

{
    "usuario": "nombre_de_usuario",
    "pass": "contraseña_secreta"
}

Respuesta

El endpoint devuelve una respuesta en formato JSON con la siguiente estructura:

Campo Descripción
status Indica si la solicitud fue exitosa (booleano)
msg Mensaje de estado de la solicitud (cadena)
value Datos del usuario autenticado
token Token de acceso (cadena)

Estructura de value (Datos del usuario autenticado)

El campo value contiene un objeto con los datos del usuario autenticado. Los campos incluyen:

Campo Descripción
idUsuario Identificador del usuario (entero)
idRol Identificador del rol del usuario (entero)
usuario1 Nombre de usuario (cadena)
nombreRol Nombre del rol del usuario (cadena)
pass Contraseña (cadena)
correo Dirección de correo del usuario (cadena)
fechaRegistro Fecha de registro del usuario (formato ISO)
esActivo Indica si el usuario está activo (booleano)

Ejemplo de respuesta

{
    "status": true,
    "msg": "ok",
    "value": {
        "idUsuario": 2,
        "idRol": 1,
        "usuario1": "admin",
        "nombreRol": "Administrador",
        "pass": "1234",
        "correo": "[email protected]",
        "fechaRegistro": "2023-11-04T21:24:45.703",
        "esActivo": true
    },
    "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

Notas

El campo token se utiliza para autorizar solicitudes posteriores en nombre del usuario autenticado. Asegúrate de que los usuarios comprendan cómo utilizar este token para autenticar sus solicitudes posteriores.

Este proyecto es básico y está diseñado para ser versátil y facilitar la personalización y reutilización en otros proyectos. Si decides utilizarlo como base para tu propia aplicación, ¡te animo a explorar las posibilidades y adaptarlo según tus necesidades!

menudinamicocsharp's People

Contributors

juliosanchezs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

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.