Modul bei neuen Usern automatisch aktivieren

Dieses Thema im Forum "Entwicklerforum" wurde erstellt von cha0tic, 18. Apr. 2011.

  1. cha0tic

    cha0tic New Member

    Hallo,

    ich möchte bei allen Benutzern die (in diesem Fall per remote-API) neu angelegt werden, mein eigenes Modul automatisch aktivieren.

    Folgendes habe ich bereits probiert:

    1. in interface/lib/config.inc.php habe ich den Modulnamen an zwei stellen eingefügt, jedoch hat sich nichts geändert:

    $conf['modules_available'] = "dashboard,admin,mail,sites,monitor,client,dns,help,meinmodul";
    $conf['interface_modules_enabled'] = "dashboard,mail,sites,dns,tools,meinmodul";

    2. im Forum habe ich folgenden code gefunden und ebenso in die config.inc.php eingefügt, funktioniert allerdings auch nicht.

    define('ISPC_INTERFACE_MODULES_ENABLED', 'dashboard,mail,sites,dns,tools,meinmodul');

    3. Danach habe ich die Datenbank durchforstet aber nur für den admin-Benutzer einen Eintrag der aktiven Module in der Tabelle "sys_user" gefunden, die anderen User scheinen in der Tabelle "client" abgelegt zu sein, welche aber kein Feld "modules" beinhaltet.

    (Ich habe den Benutzer zwischen den Tests gelöscht und neu angelegt und das Modul funktioniert grundsätzlich.)

    Zusammenfassend:
    * In welcher Tabelle wird gespeichert, welche Module für welchen Benutzer aktiviert sind?
    * Wie kann ich erreichen, dass bei neu angelegten Benutzern immer ein bestimmtes zusätzliches Modul aktiviert wird.
     
  2. Till

    Till Administrator

    1) korrekt, es ist aber nurh ein Eintrag in $conf['interface_modules_enabled'] zus etzen.
    2) Nicht notwendig
    3) Stimmt so nicht. Alle Login user stehen in sys_user. In clients stehen nur die client records.

    Wenn Due inen neuen client in ispconfig anlegts, wird automatisch ein neuer eintrag für diesen Client in sys_user angelegt und zwar mit den Modulen die in $conf['interface_modules_enabled'] stehen.
     
  3. cha0tic

    cha0tic New Member

    So wäre es logisch und so hätte ich mich auch zurecht gefunden... In diesem Fall ist es aber so, dass in der client-Tabelle 12 Datensätze (mit sys_userid=1) zu finden sind während in der sys_user-Tabelle nur der admin-User zu finden ist. Der Login und das speichern (und laden) von Einstellungen der Benutzer funktioniert problemlos, daher kam ja meine ursprüngliche Frage wo diese Daten abgelegt werden.

    Gibt es irgendetwas das ich als ISPConfig-Neuling eventuell nicht bedacht habe, das zu dieser Konstellation führen kann? Vielen Dank!

    (Version: 3.0.3.2 mit mehreren Servern)
     
  4. Till

    Till Administrator

    1) Hast Du die clients auch in ispconfig angelegt und nicht über irgend ein script?
    2) Hast Du denn beim anlegen der Clients auch einen usernamen und Passwrt angegeben? Die sys_userw erden natürlich nur erzeugt, wenn der client sich auch einloggen können soll.
    3) Die sys_user Tabelle wird natürlich nur auf dem master gefüllt. Wenn Du also nachsehen möchtest ob die User angelegt werden, musst Du in der master DB nachsehen und nicht auf den Slaves.

    Es ist technisch unmöglich dass sich ein Nutzer im Interface einloggen kann der nicht in der sys_user Tabelle des Masters steht. Wenn also ein Login im ISPConfig Interface mit den Usern funktioniert, dann stehen sie auch in der sys_user Tabelle.
     
  5. cha0tic

    cha0tic New Member

    vielen dank! gelöst! :)

    über die remote-api... (davor auch direkt, aber da wählt man ja die module beim anlegen)

    Das mit dem Master war ein sehr guter Tipp, ich hatte nur einen Datenbankzugang zu einer Slave-DB...

    Das mit dem $conf['interface_modules_enabled'] hat zwar nicht geklappt, aber ich habe den (undokumentierte?!) Parameter "modules" der remote-API-Funktion "client_add" entdeckt, mit dem es problemlos klappt...

    Code:
    $params = array(
      'server_id' => 1,
      ...
      'modules'=> 'mail,sites,dns,tools,meinmodul'
    );
    $domain_id = $client->client_add($session_id, 0, $params);
    
     

Diese Seite empfehlen