Skip to content

Instantly share code, notes, and snippets.

@Mikulas
Created August 22, 2012 08:23
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save Mikulas/3423745 to your computer and use it in GitHub Desktop.
Save Mikulas/3423745 to your computer and use it in GitHub Desktop.
Nette user login for Adminer Editor
common:
parameters:
adminer_editor:
role: moderator
database:
host: localhost
dbname: yourDbName
user: yourDbUser
password: yourDbOass
nette:
database:
default:
dsn: "mysql:host=%database.host%;dbname=%database.dbname%"
user: %database.user%
password: %database.password%
<?php
/**
* Nette user login for Adminer Editor
* @author Mikuláš Dítě
* @license BSD-3
*
* Expects the following config.neon setup:
* common:
* parameters:
* database:
* host: localhost
* dbname: yourdbname
* user: youruser
* password: yourpass
* adminer_editor:
* role: moderator
* nette:
* database:
* default:
* dsn: "mysql:host=%database.host%;dbname=%database.dbname%"
* user: %database.user%
* password: %database.password%
*/
define('WWW_DIR', __DIR__ . '/..');
define('APP_DIR', WWW_DIR . '/../app');
define('LIBS_DIR', WWW_DIR . '/../libs');
require LIBS_DIR . '/Nette/loader.php';
$configurator = new Nette\Config\Configurator;
$configurator->setDebugMode();
$configurator->enableDebugger(APP_DIR . '/../log');
// Enable RobotLoader - this will load all classes automatically
$configurator->setTempDirectory(APP_DIR . '/../temp');
$configurator->createRobotLoader()
->addDirectory(APP_DIR)
->addDirectory(LIBS_DIR)
->register();
// Create Dependency Injection container from config.neon file
$configurator->addConfig(__DIR__ . '/../../app/config/config.neon');
$container = $configurator->createContainer();
$container->user->isLoggedIn();
$container->user->isInRole($container->params['adminer_editor']['role']);
$_GET['username'] = ''; // triggers autologin
function adminer_object() {
class AdminerSoftware extends Adminer {
private $context;
function __construct($context) {
$this->context = $context;
}
function name() {
// custom name in title and heading
return 'Khanova Škola';
}
function credentials() {
// server, username and password for connecting to database
$c = $this->context->params['database'];
return array($c['host'], $c['user'], $c['password']);
}
function database() {
// database name, will be escaped by Adminer
return $this->context->params['database']['dbname'];
}
function login() {
return $this->isLoggedIn() && $this->isInRole();
}
function tableName($tableStatus) {
// only tables with comment will be displayed
return h($tableStatus["Comment"]);
}
function fieldName($field, $order = 0) {
// only columns with comments will be displayed
// table must have at least one column with comment
// to select properly
return h($field["comment"]);
}
function loginForm() {
if (!$this->isLoggedIn()) {
echo "<p>Přihlaste se prosím ke svému účtu přes tradiční formulář.</p>";
} else if (!$this->isInRole()) {
echo "<p>Váš účet nemá oprávnění k Adminer Editor.</p>";
}
}
private function isLoggedIn() {
return $this->context->user->isLoggedIn();
}
private function isInRole() {
return $this->context->user->isInRole($this->context->params['adminer_editor']['role']);
}
}
global $container;
return new AdminerSoftware($container);
}
include "./editor-3.5.0-mysql.php";
@fprochazka
Copy link

global $container;'

No fuj :P to už radši

Nette\Environment::getContext();

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment