Autor Tema: Personalizacion REST  (Leído 152 veces)

0 Usuarios y 1 Visitante están viendo este tema.

jmorales

  • Newbie
  • *
  • Mensajes: 16
    • Ver Perfil
  • Institución: UNSL
  • Nombre y apellido: Juan Marcelo Morales
  • Sistema: Guarani, COMDOC
  • Teléfono laboral: 0266 4520300 5160
  • Utilizo algun sistéma del SIU: Sí
Personalizacion REST
« on: Septiembre 22, 2021, 11:51:31 am »
Buenos dias.

En la UNSL necesitamos hacer unas personalizaciones de la api REST de Gestion, y hemos seguido las indicaciones de https://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.19.0/personalizaciones/rest

Tengo dos consultas:

Primer consulta

creamos el recurso aulas-uni y agregamos el permiso al usuario en recursos_usuarios.php
Código: [Seleccionar]
'aulas-uni' => [
'GET' =>  ['usuarios' => ['g3']]
],
    'aulas-uni' => [
'POST' =>  ['usuarios' => ['g3']]
],
'aulas-uni/id' => [
'GET' =>  ['usuarios' => ['g3']]
],

pero al invocarlos nos devuelve para el caso de los get
{
    "error": 403,
    "mensaje": "403 Forbidden",
    "descripcion": "Acceso denegado"
}

sin embargo los post si pasan

Tambien probamos extender un recurso existente, por ejemplo el de comisiones
creamos uno llamado recurso_unsl_comisiones con un metodo get con otros parametros, y un post.
que extiende el recurso recurso_comisiones
Código: [Seleccionar]
class recurso_unsl_comisiones extends recurso_comisiones {
tambien lo agregamos en recursos_usuarios.php
Código: [Seleccionar]
'unsl-comisiones' => [
'GET' =>  ['usuarios' => ['g3']]
],
    'unsl-comisiones' => [
'POST' =>  ['usuarios' => ['g3']]
],

y nuevamente el get nos da 403 forbidden
y el POST si funciona.


Segunda consulta
Tambien tuvimos otro problema con la inclusion de clases.

en el caso del  archivo rest_unsl_comisiones queriamos incluir la personalizacion de co_comisiones, al que llamamos co_comisiones_unsl y lo pusimos en la carpeta /personalizacion/php/nucleo/cursadas/comisiones/
y lo llamamos dentro del codigo con
Código: [Seleccionar]
$this->modelo = guarani::co('co_comisiones_unsl');
pero no los encontraba, a pesar de haber hecho el guarani pers_autoload

y no tuvimos otro remedio que hacer la inclusion con el path absoluto.

Código: [Seleccionar]
class rest_unsl_comisiones extends rest_comisiones_nucleo{

function __construct()
{
//$this->modelo = guarani::co('co_comisiones_unsl');
require_once '/var/vhosts/g3-api/gestion/personalizacion/php/nucleo/cursadas/comisiones/co_comisiones_unsl.php';



Que estamos haciendo mal?




fjarque

  • Moderador Global
  • *****
  • Mensajes: 2431
    • Ver Perfil
    • Email
  • Institución: SIU
  • Nombre y apellido: Florencia Jarque
  • Sistema: SIU-Guaraní
Re:Personalizacion REST
« Respuesta #1 on: Septiembre 23, 2021, 08:24:22 am »
Hola,

Respecto a la primer consulta. el usuario 'g3' (con el que asumo se están logueando) está definido en el archivo '<path proyecto Guaraní>/instalacion/i__desarrollo/p__guarani/rest/servidor_usuarios.ini'? En '<path proyecto Guaraní>/instalacion/i__desarrollo/p__guarani/rest/servidor.ini'' tienen definido un valor para 'autenticacion'?

En cuanto a la segunda pregunta, para personalizar la clase de consulta PHP deben Ir a la la solapa "Datos > Consultas PHP" del proyecto Toba-Editor y seleccionar la clase de consulta "co_comisiones". Allí realizar los siguientes cambios:
  • Punto de Montaje: "personalizacion".
  • Clase: "co_comisiones_unsl".
  • Archivo: crear la clase 'co_comisiones_unsl' en '<path proyecto Guaraní>/personalizacion/php/nucleo/cursadas/comisiones/co_comisiones_unsl.php' que extienda de 'co_comisiones'.
Luego las invocaciones siguen siendo 'toba::consulta_php('co_comisiones')->...'.

Saludos, Florencia.

jmorales

  • Newbie
  • *
  • Mensajes: 16
    • Ver Perfil
  • Institución: UNSL
  • Nombre y apellido: Juan Marcelo Morales
  • Sistema: Guarani, COMDOC
  • Teléfono laboral: 0266 4520300 5160
  • Utilizo algun sistéma del SIU: Sí
Re:Personalizacion REST
« Respuesta #2 on: Septiembre 23, 2021, 09:06:45 am »
Muchas gracias Florencia.

Respecto al usuario g3, si lo tenemos de alta en /instalacion/i__desarrollo/p__guarani/rest/servidor_usuarios.ini
Código: [Seleccionar]
[g3]
password = *******

y el metodo de autenticacion definido en servidor.ini es
Código: [Seleccionar]
autenticacion = basic
vemos que cuando sobreescribimos el metodo get_list en este caso, es que se produce el error de autorizacion,
sin embargo funciona si agregamos otro metodo, por ejemplo post_list.

Una pregunta, ¿la convencion de nombres que se usa dentro de las clases recurso_xxxx son todas del tipo get_list, get, put, post_list? o puedo definir mis propios nombres? que tendria que hacer si quisiera hacerlo?



vamos a hacer eso en el toba por lo de inclusion d las clases, muchas gracias

jmorales

  • Newbie
  • *
  • Mensajes: 16
    • Ver Perfil
  • Institución: UNSL
  • Nombre y apellido: Juan Marcelo Morales
  • Sistema: Guarani, COMDOC
  • Teléfono laboral: 0266 4520300 5160
  • Utilizo algun sistéma del SIU: Sí
Re:Personalizacion REST [Solucionado]
« Respuesta #3 on: Septiembre 23, 2021, 10:23:32 am »
Ya descubri mi error al configurar el archivo recursos_usuarios.php

estaba haciendo
Código: [Seleccionar]
'unsl-comisiones' => [
'GET' =>  ['usuarios' => ['g3']]
],
'unsl-comisiones' => [
'POST' =>  ['usuarios' => ['g3']]
],

cuando debia ser

Código: [Seleccionar]
'unsl-comisiones' => [
'GET' =>  ['usuarios' => ['g3']],
'POST' =>  ['usuarios' => ['g3']]
],