The Elearning Community • api forma23 - Page 2
Page 2 of 2

Re: api forma23

Posted: Mon Dec 23, 2019 5:53 pm
by alfa24
Prova a sotituire:

if(!(new self())->checkAuthentication($auth_code)) {
return false;
}

con:

$_api_instance = new self();
if(!($_api_instance->checkAuthentication($auth_code))) {
return false;
}

Re: api forma23

Posted: Mon Dec 23, 2019 5:58 pm
by d.ravasco
Ancora nulla.
il var_dump restituisce questo messaggio
object(SimpleXMLElement)#1 (1) { ["error"]=> object(SimpleXMLElement)#2 (0) { } }
invece di
object(SimpleXMLElement)#1 (1) { ["error"]=> string(20) "Error: invalid user." }

Re: api forma23

Posted: Mon Dec 23, 2019 6:00 pm
by alfa24
Se provi ad attivare il debug intercetti qualche errore prima del var_dump?

Re: api forma23

Posted: Mon Dec 23, 2019 6:13 pm
by d.ravasco
sono già attive le istruzioni per il debug ma non intercetta nulla
error_reporting(E_ALL);
ini_set( 'display_errors', 1 );

cmq per oggi passo e vedo di continuare a fare qualche altro test nei prossimi giorni. Grazie per l'aiuto

Re: api forma23

Posted: Sun Feb 23, 2020 12:11 am
by mriva
È passato un po' di tempo dall'ultima risposta, ma visto che mi sono appena scontrato con questo bug, riporto la mia esperienza.

Il problema dell'autenticazione tramite token è che il codice di lms forma fa la checkAuthentication() anche sulla chiamata /api/auth/authenticate; ovviamente così non funziona perché il codice richiede di essere autenticati per fare l'autenticazione... è il cane che si morde la coda. In generale gli endpoint di autenticazione (quelli a cui inviare user e password) devono essere per ovvie ragioni pubbliche, o per lo meno non protette dallo stesso tipo di autenticazione che devono fornire.

Re: api forma23

Posted: Sun Feb 23, 2020 1:21 am
by mriva
La modifica che sto testando è passare (nel file 'api/lib/lib.api.php') da queste righe:

Code: Select all

static public function Execute($auth_code, $module, $function, $params) {

    if(!(new self())->checkAuthentication($auth_code)) {
        return false;
    }
    ...
a queste

Code: Select all

public static function Execute($auth_code, $module, $function, $params) {
    $api_call = "{$module}/{$function}";
    if ($api_call != 'auth/authenticate' && !(new self())->checkAuthentication($auth_code)) {
        return false;
    }
    ...

This site uses cookies.

Some of the cookies we use are essential for parts of the site to operate and have already been set. We also use Google Analytics scripts, which all use cookies.
You may delete or block all cookies from this site in your browser options.