12 Usuarios
Manuel Aranda Rosales edited this page 2024-06-20 10:25:36 +02:00

Documentation / Documentación - API ogCOre

Select Language / Seleccionar Idioma


English

Table of Contents

  1. Introduction
  2. Configuration
  3. Resource Definition
  4. API Operations
  5. Entity Properties
  6. User Input DTO

Introduction

This documentation describes the configuration of API Platform in a Symfony 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 file.

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

Resource Definition

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

User Input DTO

Fields Required in User Endpoint Input

  1. username

    • Type: string
    • Validation: Not blank
    • Groups: user:write
  2. allowedOrganizationalUnits

    • Type: array of OrganizationalUnit
    • Groups: user:write
    • API Property: readableLink: false, writableLink: false
  3. password

    • Type: string
    • Validation: Not blank (for user:post), Minimum length: 8 (for user:write, user:post)
    • Groups: user:write
  4. enabled

    • Type: boolean
    • Validation: Not null
    • Groups: user:write
    • Default: true
  5. userGroups

    • Type: array of UserGroup
    • Groups: user:write
    • API Property: readableLink: false, writableLink: false
  6. currentPassword

    • Type: string
    • Validation: Not blank (for user:reset-password)
    • Groups: user:reset-password
  7. newPassword

    • Type: string
    • Validation: Not blank, Minimum length: 8 (for user:reset-password)
    • Groups: user:reset-password
  8. repeatNewPassword

    • Type: string
    • Validation: Not blank, Minimum length: 8, Must match newPassword (for user:reset-password)
    • Groups: user:reset-password

Español

Índice

  1. Introducción
  2. Configuración
  3. Definición de Recursos
  4. Operaciones de API
  5. Propiedades de la Entidad
  6. DTO de Entrada de Usuario

Introducción

Esta documentación describe la configuración de API Platform en un proyecto Symfony. 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.

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

DTO de Entrada de Usuario

Campos Requeridos en la Entrada del Endpoint de Usuario

  1. username

    • Tipo: string
    • Validación: No vacío
    • Grupos: user:write
  2. allowedOrganizationalUnits

    • Tipo: array de OrganizationalUnit
    • Grupos: user:write
    • Propiedad API: readableLink: false, writableLink: false
  3. password

    • Tipo: string
    • Validación: No vacío (para user:post), Longitud mínima: 8 (para user:write, user:post)
    • Grupos: user:write
  4. enabled

    • Tipo: boolean
    • Validación: No nulo
    • Grupos: user:write
    • Por defecto: true
  5. userGroups

    • Tipo: array de UserGroup
    • Grupos: user:write
    • Propiedad API: readableLink: false, writableLink: false
  6. currentPassword

    • Tipo: string
    • Validación: No vacío (para user:reset-password)
    • Grupos: user:reset-password
  7. newPassword

    • Tipo: string
    • Validación: No vacío, Longitud mínima: 8 (para user:reset-password)
    • Grupos: user:reset-password
  8. repeatNewPassword

    • Tipo: string
    • Validación: No vacío, Longitud mínima: 8, Debe coincidir con newPassword (para user:reset-password)
    • Grupos: user:reset-password

Con este formato, puedes seleccionar el idioma que prefieras y acceder a la documentación correspondiente.