Adminer - plugin fill login form

Pavel Tipy & triky, JavaScript, PHP

Napíšeme si vlastní jednoduchý plugin do Adminera, který nám před vyplní přihlašovací formulář. Nastavit si můžeme veškeré políčka včetně typu databáze.

Adminer - plugin fill login form

V dřívějším článku jsem psal o KeePassu, který dokáže v Chrome doplnit přihlašovací údaje. Bohužel umí doplnit pouze jméno a heslo. Z toho důvodu jsem si vytvořil plugin na doplnění ostatních políček.

Použití a stáhnutí

Pokud si stáhnete libovolný plugin ať už od autora, či komunitních přispěvovatelů, budete potřebovat soubor plugin.php, který dané pluginy dokáže spustit. Vše je dobře popsané na stránce o rozšířeních. Do pole plugins si vložíme novou instanci našeho pluginu, a můžeme jej používat.

Kompletní skript můžete stáhnout na GitHubu

$plugins = array(
    /*
      Parametry pluginu
      1. typ databáze - pro použití MySQL zadejte server
      2. server - defaultně localhost
      3. login - přihlašovací jméno
      4. heslo - VYPLŇTE POUZE POKUD JSTE NA LOCALHOSTU
      5. název DB - název databáze do které se adminer přepne
    */
    new FillLoginForm("server","","root","","")
);

Vytváříme plugin

Pro vytvoření pluginu si vytvoříme nový soubor, který uložíme do složky plugins. V souboru vytvoříme novou třídu, ve které můžeme přepsat různé metody, které Adminer používá. Pro nás je důležitá funkce loginForm, která se stará o vykreslení přihlašovacího formuláře.

Pokud funkce vrátí null, Adminer poté zavolá i svou metodu. Tím se nepřepíše základní chování, jen jej můžeme upravit. Protože formulář budeme vyplňovat JavaScriptem, nemusíme přepisovat celý formulář, stačí jen nad něj vložit zmíněný JavaScript.

Jak funguje

V konstruktoru umožníme předat 5 parametrů: typ DB, server, jméno, heslo a název databáze. Tyto hodnoty si uložíme jako instanční proměnné, které poté budeme vkládat do formuláře. Zároveň musíme ošetřit, aby nebyl formulář již vyplněný předchozí akcí, například špatné přihlášení. Poté již stačí samotné doplnění a je hotovo.

Pro doplnění využijeme čistý JavaScript, bez frameworků. Pro jednoduchost jsem se rozhodl využít querySelector, který starší prohlížeče nemusejí podporovat. Ukázka kódu doplnění jednoho pole

document.addEventListener("DOMContentLoaded", function(event) {
  ...
  <?php  
  if(!empty($this->name)){ ?>
    var l = document.querySelector("input[name='auth[username]']");
    if(l && l.value.trim() == ""){ l.value = "<?php echo $this->name ?>"; }
  <?php }?>
  ...
});

Pokud máte nápady na pluginy, vlastní jste si napsali nebo máte problém s jeho spuštěním, napište mi do komentářů.

Přidat komentář

Právě odpovídáte na existující komentář. Zrušit

Komentáře

Novinky z blogu

Z internetu na lokální server pomocí ngrok

ngrok je nástroj, který umožňuje vytvořit zabezpečený tunel z veřejné URL k lokálnímu serveru na vašem stroji. Můžete tak k vašemu localhostu přistupovat...

Další články