Personalizacion REST

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

	'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

class recurso_unsl_comisiones extends recurso_comisiones {

tambien lo agregamos en recursos_usuarios.php

	'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

$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.

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?

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.

Muchas gracias Florencia.

Respecto al usuario g3, si lo tenemos de alta en /instalacion/i__desarrollo/p__guarani/rest/servidor_usuarios.ini

[g3]
password = *******

y el metodo de autenticacion definido en servidor.ini es

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

Ya descubri mi error al configurar el archivo recursos_usuarios.php

estaba haciendo


'unsl-comisiones' => [
		'GET' =>  ['usuarios' => ['g3']]
	],
'unsl-comisiones' => [
		'POST' =>  ['usuarios' => ['g3']]
	],	

cuando debia ser


'unsl-comisiones' => [
		'GET' =>  ['usuarios' => ['g3']],
		'POST' =>  ['usuarios' => ['g3']]
	],