Bonjour/Bonsoir,

J'ai actuellement un petit souci avec mon code. Je gère actuellement un site interne en CakePHP 2.X dans une entreprise et j'ai besoin d'accèder à plusieurs BDD en lecture seule (MySQL/Oracle (via un plugin)), je peux facilement accéder à ses différentes BDD avec un compte admin mais je n'ai pas besoin d'avoir autant de droits sur certaines bases.

Pour cela, je me suis procurer des comptes en lecture seule (appelons les User_RO), mais impossible de faire des requêtes qui fonctionnent depuis le site mais si j'écris la même requête sur Oracle SQL Developer par exemple, c'est fonctionnel...

Dans le cas d'une base Oracle (cas qui m'intéresse le +), pour accéder à une table d'un autre utilisateur de cette même base (appelons le Admin), je peux réaliser ce genre de commande sous Oracle SQL Developer et qui me retourne bien le contenu de la table "table_toto" appartenant à l'utilisateur "Admin" : SELECT * FROM Admin.table_toto;

Sous CakePHP, j'ai donc fais quelques modifications pour passer du compte Admin au compte User_RO :
database.php (je n'ai que changé le login & password pour passer sur le compte User_RO, cependant j'ai testé avec le prefixe 'Admin.' et ne rien toucher au Model mais rien n'y fait, même erreur) :

public $grafikartdb = array(
        'datasource' => 'OracleDS.Oracle',
        'persistent' => false,
        'login' => 'User_RO',
        'password' => 'mdp_UserRO',
        'database' => '(description = (address = (protocol = tcp)(host = adresse_serveur)(port = XXXX))(connect_data = (server = dedicated)(sid = SID_BDD)))',                  
        'prefix' => '',
        'encoding' => 'utf8'
    );

[Avant] Grafikart.php (Model) :

class Grafikart extends AppModel {
    public $useDbConfig = 'grafikartdb';
    public $useTable = 'table_toto';
}

[Après] Grafikart.php (Model) :

class Grafikart extends AppModel {
    public $useDbConfig = 'grafikartdb';
    public $useTable = 'Admin.table_toto';
}

Mon erreur :

Error: [MissingTableException] Table Admin.table_toto for model Grafikart was not found in datasource grafikartdb.
Exception Attributes: array (
  'table' => 'Admin.table_toto',
  'class' => 'Grafikart',
  'ds' => 'grafikartdb',
)

Est-ce vous avez la moindre idée de comment régler ce petit souci ? Est-ce que je suis sur la bonne voie ? Merci d'avance !

Mon plugin Oracle : https://github.com/ulsdevteam/Oracle-cake2

Aucune réponse