diff --git a/Usuarios.md b/Usuarios.md new file mode 100644 index 0000000..4fb517d --- /dev/null +++ b/Usuarios.md @@ -0,0 +1,138 @@ +Aquí tienes la documentación en formato Wiki en español para tu configuración de API Platform en Symfony 3: + +--- + +# Documentación de la API - API Platform con Symfony 3 + +## Índice + +1. [Introducción](#introducción) +2. [Instalación](#instalación) +3. [Configuración](#configuración) +4. [Definición de Recursos](#definición-de-recursos) +5. [Operaciones de API](#operaciones-de-api) +6. [Propiedades del 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. + +## Instalación + +1. **Requisitos previos**: + - Symfony 3.x instalado. + - Composer instalado. + +2. **Instalación de API Platform**: + ```bash + composer require api-platform/core + ``` + +## 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` o un archivo similar. + +```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` +- **Procesador**: `App\State\Processor\UserProcessor` +- **Contexto de Normalización**: `['default', 'user:read']` +- **Contexto de Desnormalización**: `['user:write']` + +## Operaciones de API + +### 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) +- **Proveedor**: `App\State\Provider\UserProvider` + +### Actualizar Usuario (Put) +- **Proveedor**: `App\State\Provider\UserProvider` + +### Modificar Parcialmente Usuario (Patch) +- **Proveedor**: `App\State\Provider\UserProvider` + +### 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) +- **Seguridad**: Solo los usuarios con el rol `ROLE_SUPER_ADMIN` pueden acceder. + +### Resetear Contraseña (reset_password) +- **Proveedor**: `App\State\Provider\UserProvider` +- **Clase**: `ApiPlatform\Metadata\Put` +- **Método**: `PUT` +- **Entrada (input)**: `App\Dto\Input\UserInput` +- **URI**: `/users/{uuid}/reset-password` +- **Controlador**: `App\Controller\ResetPasswordAction` +- **Contexto de Validación**: `['user:reset-password']` + +## Propiedades de la Entidad + +### App\Entity\User + +- **id**: + - **Identificador**: `false` + +- **uuid**: + - **Identificador**: `true` + +--- + +Esta estructura proporciona una visión clara y organizada de la configuración de API Platform para la entidad `User` en Symfony 3. Puedes añadir más detalles o ejemplos según necesites. \ No newline at end of file