diff --git a/Usuarios.md b/Usuarios.md index 44e61a5..820ccfd 100644 --- a/Usuarios.md +++ b/Usuarios.md @@ -1,20 +1,33 @@ -# Documentación de la API - ogCore +Claro, aquí tienes la documentación en formato Wiki con un selector de idioma (Español e Inglés): -## Índice +--- -1. [Introducción](#introducción) -2. [Configuración](#configuración) -3. [Definición de Recursos](#definición-de-recursos) -4. [Operaciones de API](#operaciones-de-api) -5. [Propiedades del Entidad](#propiedades-de-la-entidad) +# Documentation / Documentación - API Platform with Symfony 3 -## Introducción +## Select Language / Seleccionar Idioma -Esta documentación describe en endpoint "users". Se detallan los recursos, operaciones y propiedades de las entidades expuestas a través de la API. +- [English](#english) +- [Español](#español) -## Configuración +--- -La configuración de la API se realiza en los archivos de configuración de Symfony, generalmente en `config/packages/api_platform.yaml` . La configuración API First de los recursos se encuentran dentro de `config/api_platform`. +## English + +### Table of Contents + +1. [Introduction](#introduction) +2. [Configuration](#configuration) +3. [Resource Definition](#resource-definition) +4. [API Operations](#api-operations) +5. [Entity Properties](#entity-properties) + +### Introduction + +This documentation describes the configuration of API Platform in a Symfony 6 project. It details the resources, operations, and entity properties exposed through the API. + +### Configuration + +API configuration is done in Symfony configuration files, usually in `config/packages/api_platform.yaml`. ```yaml resources: @@ -63,9 +76,130 @@ properties: identifier: true ``` -## Definición de Recursos +### Resource Definition -### App\Entity\User +#### App\Entity\User + +- **Input**: `App\Dto\Input\UserInput` +- **Output**: `App\Dto\Output\UserOutput` +- **Processor**: `App\State\Processor\UserProcessor` +- **Normalization Context**: `['default', 'user:read']` +- **Denormalization Context**: `['user:write']` + +### API Operations + +#### Get User Collection (GetCollection) +- **Provider**: `App\State\Provider\UserProvider` +- **Filters**: + - Order users: `api_platform.filter.user.order` + - Search users: `api_platform.filter.user.search` + - Boolean filter: `api_platform.filter.user.boolean` + +#### Get User (Get) +- **Provider**: `App\State\Provider\UserProvider` + +#### Update User (Put) +- **Provider**: `App\State\Provider\UserProvider` + +#### Partially Update User (Patch) +- **Provider**: `App\State\Provider\UserProvider` + +#### Create User (Post) +- **Security**: Only users with the role `ROLE_SUPER_ADMIN` can access. +- **Validation Context**: `['default', 'user:post']` + +#### Delete User (Delete) +- **Security**: Only users with the role `ROLE_SUPER_ADMIN` can access. + +#### Reset Password (reset_password) +- **Provider**: `App\State\Provider\UserProvider` +- **Class**: `ApiPlatform\Metadata\Put` +- **Method**: `PUT` +- **Input**: `App\Dto\Input\UserInput` +- **URI**: `/users/{uuid}/reset-password` +- **Controller**: `App\Controller\ResetPasswordAction` +- **Validation Context**: `['user:reset-password']` + +### Entity Properties + +#### App\Entity\User + +- **id**: + - **Identifier**: `false` + +- **uuid**: + - **Identifier**: `true` + +--- + +## Español + +### Índice + +1. [Introducción](#introducción) +2. [Configuración](#configuración) +3. [Definición de Recursos](#definición-de-recursos) +4. [Operaciones de API](#operaciones-de-api) +5. [Propiedades de la Entidad](#propiedades-de-la-entidad) + +### Introducción + +Esta documentación describe la configuración de API Platform en un proyecto Symfony 3. Se detallan los recursos, operaciones y propiedades de las entidades expuestas a través de la API. + +### Configuración + +La configuración de la API se realiza en los archivos de configuración de Symfony, generalmente en `config/packages/api_platform.yaml`. + +```yaml +resources: + App\Entity\User: + input: App\Dto\Input\UserInput + output: App\Dto\Output\UserOutput + processor: App\State\Processor\UserProcessor + normalization_context: + groups: ['default', 'user:read'] + denormalization_context: + groups: ['user:write'] + operations: + ApiPlatform\Metadata\GetCollection: + provider: App\State\Provider\UserProvider + filters: + - 'api_platform.filter.user.order' + - 'api_platform.filter.user.search' + - 'api_platform.filter.user.boolean' + ApiPlatform\Metadata\Get: + provider: App\State\Provider\UserProvider + ApiPlatform\Metadata\Put: + provider: App\State\Provider\UserProvider + ApiPlatform\Metadata\Patch: + provider: App\State\Provider\UserProvider + ApiPlatform\Metadata\Post: + security: 'is_granted("ROLE_SUPER_ADMIN")' + validationContext: + groups: [ 'default', 'user:post' ] + ApiPlatform\Metadata\Delete: + security: 'is_granted("ROLE_SUPER_ADMIN")' + reset_password: + provider: App\State\Provider\UserProvider + class: ApiPlatform\Metadata\Put + method: PUT + input: App\Dto\Input\UserInput + uriTemplate: /users/{uuid}/reset-password + controller: App\Controller\ResetPasswordAction + validationContext: + groups: [ 'user:reset-password' ] + +properties: + App\Entity\User: + id: + identifier: false + uuid: + identifier: true +``` + +### Definición de Recursos + +#### App\Entity\User - **Entrada (input)**: `App\Dto\Input\UserInput` - **Salida (output)**: `App\Dto\Output\UserOutput` @@ -73,32 +207,32 @@ properties: - **Contexto de Normalización**: `['default', 'user:read']` - **Contexto de Desnormalización**: `['user:write']` -## Operaciones de API +### Operaciones de API -### Colección de Usuarios (GetCollection) +#### Colección de Usuarios (GetCollection) - **Proveedor**: `App\State\Provider\UserProvider` - **Filtros**: - Ordenar usuarios: `api_platform.filter.user.order` - Buscar usuarios: `api_platform.filter.user.search` - Filtro booleano: `api_platform.filter.user.boolean` -### Obtener Usuario (Get) +#### Obtener Usuario (Get) - **Proveedor**: `App\State\Provider\UserProvider` -### Actualizar Usuario (Put) +#### Actualizar Usuario (Put) - **Proveedor**: `App\State\Provider\UserProvider` -### Modificar Parcialmente Usuario (Patch) +#### Modificar Parcialmente Usuario (Patch) - **Proveedor**: `App\State\Provider\UserProvider` -### Crear Usuario (Post) +#### Crear Usuario (Post) - **Seguridad**: Solo los usuarios con el rol `ROLE_SUPER_ADMIN` pueden acceder. - **Contexto de Validación**: `['default', 'user:post']` -### Eliminar Usuario (Delete) +#### Eliminar Usuario (Delete) - **Seguridad**: Solo los usuarios con el rol `ROLE_SUPER_ADMIN` pueden acceder. -### Resetear Contraseña (reset_password) +#### Resetear Contraseña (reset_password) - **Proveedor**: `App\State\Provider\UserProvider` - **Clase**: `ApiPlatform\Metadata\Put` - **Método**: `PUT` @@ -107,9 +241,9 @@ properties: - **Controlador**: `App\Controller\ResetPasswordAction` - **Contexto de Validación**: `['user:reset-password']` -## Propiedades de la Entidad +### Propiedades de la Entidad -### App\Entity\User +#### App\Entity\User - **id**: - **Identificador**: `false` @@ -119,4 +253,4 @@ properties: --- -Esta estructura proporciona una visión clara y organizada de la configuración de API Platform para la entidad `User` en Symfony . \ No newline at end of file +Con este formato, puedes seleccionar el idioma que prefieras y acceder a la documentación correspondiente. \ No newline at end of file