Add script 'get-openssl-version.sh'.

This commit is contained in:
2023-06-21 11:09:08 +02:00
parent 0a7a61049a
commit 14056b44dd
5032 changed files with 340126 additions and 0 deletions

View File

@ -0,0 +1,27 @@
authpdo Plugin for DokuWiki
Authenticate against a database via PDO
All documentation for this plugin can be found at
https://www.dokuwiki.org/plugin:authpdo
If you install this plugin manually, make sure it is installed in
lib/plugins/authpdo/ - if the folder is called different it
will not work!
Please refer to http://www.dokuwiki.org/plugins for additional info
on how to install plugins in DokuWiki.
----
Copyright (C) Andreas Gohr <andi@splitbrain.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
See the COPYING file in your DokuWiki folder for details

View File

@ -0,0 +1,316 @@
<?php
/**
* mysql tests for the authpdo plugin
*
* @group plugin_authpdo
* @group plugins
*/
class mysql_plugin_authpdo_test extends DokuWikiTest {
protected $driver = 'mysql';
protected $host = '';
protected $database = 'authpdo_testing';
protected $user = '';
protected $pass = '';
protected $port = '';
public function setUp() : void {
parent::setUp();
$configuration = DOKU_UNITTEST . "{$this->driver}.conf.php";
if(!file_exists($configuration)) {
return;
}
/** @var $conf array */
include $configuration;
$this->host = $conf['host'];
$this->user = $conf['user'];
$this->pass = $conf['pass'];
$this->port = $conf['port'];
}
/**
* try to remove the last set up database
*
* it might still be there if something went wrong
*/
public function tearDown() : void {
parent::tearDown();
$this->dropDatabase();
}
/**
* Check if database credentials and extensions exist
*/
public function test_requirements() {
if(!$this->host || !$this->user) {
$this->markTestSkipped("Skipped {$this->driver} tests. Missing configuration");
}
if(!class_exists('PDO')) {
$this->markTestSkipped("Skipped {$this->driver} tests. Missing PDO extension");
}
if(!in_array($this->driver, pdo_drivers())) {
$this->markTestSkipped("Skipped {$this->driver} tests. Missing pdo_{$this->driver} extension");
}
$this->assertTrue(true); // avoid being marked as risky for having no assertion
}
/**
* create the database for testing
*/
protected function createDatabase() {
$pdo = new PDO(
"{$this->driver}:host={$this->host};port={$this->port}", $this->user, $this->pass,
array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // we want exceptions, not error codes
)
);
$pdo->exec("DROP DATABASE IF EXISTS {$this->database}");
$pdo->exec("CREATE DATABASE {$this->database}");
$pdo = null;
}
/**
* remove the database
*/
protected function dropDatabase() {
$pdo = new PDO(
"{$this->driver}:host={$this->host};port={$this->port}", $this->user, $this->pass,
array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // we want exceptions, not error codes
)
);
try {
$pdo->exec("DROP DATABASE IF EXISTS {$this->database}");
} catch (PDOException $e) {
// ignore - sometimes this fails even though the database was deleted
}
$pdo = null;
}
/**
* imports a database dump
*
* @param $file
*/
protected function importDatabase($file) {
// connect to database and import dump
$pdo = null;
$pdo = new PDO(
"{$this->driver}:dbname={$this->database};host={$this->host};port={$this->port}", $this->user, $this->pass,
array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // we want exceptions, not error codes
)
);
$sql = file_get_contents($file);
$pdo->exec($sql);
$pdo = null;
}
/**
* Run general tests on all users
*
* @param auth_plugin_authpdo $auth
* @param array $users
*/
protected function runGeneralTests(auth_plugin_authpdo $auth, $users) {
global $conf;
$info = 'DSN: ' . $auth->getConf('dsn');
$this->assertTrue($auth->success, $info);
if($auth->canDo('getUsers')) {
$list = $auth->retrieveUsers();
$this->assertGreaterThanOrEqual(count($users), count($list), $info);
}
if($auth->canDo('getGroups')) {
$list = $auth->retrieveGroups();
$this->assertGreaterThanOrEqual(1, $list, $info);
}
if($auth->canDo('getUserCount')) {
$count = $auth->getUserCount();
$this->assertGreaterThanOrEqual(count($users), $count);
}
if($auth->canDo('addUser')) {
$newuser = array(
'user' => 'newuserfoobar',
'name' => 'First LastFoobar',
'pass' => 'password',
'mail' => 'newuserfoobar@example.com',
'grps' => array('acompletelynewgroup')
);
$ok = $auth->createUser(
$newuser['user'],
$newuser['pass'],
$newuser['name'],
$newuser['mail'],
$newuser['grps']
);
$this->assertTrue($ok, $info);
$check = $auth->getUserData($newuser['user']);
$this->assertEquals($newuser['user'], $check['user'], $info);
$this->assertEquals($newuser['mail'], $check['mail'], $info);
$groups = array_merge($newuser['grps'], array($conf['defaultgroup']));
$this->assertEquals($groups, $check['grps'], $info);
}
}
/**
* run all the tests with the given user, depending on the capabilities
*
* @param auth_plugin_authpdo $auth
* @param $user
*/
protected function runUserTests(auth_plugin_authpdo $auth, $user) {
global $conf;
$info = 'DSN: ' . $auth->getConf('dsn') . ' User:' . $user['user'];
// minimal setup
$this->assertTrue($auth->checkPass($user['user'], $user['pass']), $info);
$check = $auth->getUserData($user['user']);
$this->assertEquals($user['user'], $check['user'], $info);
$this->assertEquals($user['name'], $check['name'], $info);
$this->assertEquals($user['mail'], $check['mail'], $info);
$groups = array_merge($user['grps'], array($conf['defaultgroup']));
$this->assertEquals($groups, $check['grps'], $info);
// getUsers
if($auth->canDo('getUsers')) {
$list = $auth->retrieveUsers(0, -1, array('user' => $user['user']));
$this->assertGreaterThanOrEqual(1, count($list));
$list = $auth->retrieveUsers(0, -1, array('name' => $user['name']));
$this->assertGreaterThanOrEqual(1, count($list));
$list = $auth->retrieveUsers(0, -1, array('mail' => $user['mail']));
$this->assertGreaterThanOrEqual(1, count($list));
}
// getUserCount
if($auth->canDo('getUserCount')) {
$count = $auth->getUserCount(array('user' => $user['user']));
$this->assertGreaterThanOrEqual(1, $count);
$count = $auth->getUserCount(array('name' => $user['name']));
$this->assertGreaterThanOrEqual(1, $count);
$count = $auth->getUserCount(array('mail' => $user['mail']));
$this->assertGreaterThanOrEqual(1, $count);
}
// modGroups
if($auth->canDo('modGroups')) {
$newgroup = 'foobar';
$ok = $auth->modifyUser($user['user'], array('grps' => array($newgroup)));
$this->assertTrue($ok, $info);
$check = $auth->getUserData($user['user']);
$this->assertTrue(in_array($newgroup, $check['grps']), $info);
}
// modPass
if($auth->canDo('modPass')) {
$newpass = 'foobar';
$ok = $auth->modifyUser($user['user'], array('pass' => $newpass));
$this->assertTrue($ok, $info);
$this->assertTrue($auth->checkPass($user['user'], $newpass), $info);
}
// modMail
if($auth->canDo('modMail')) {
$newmail = 'foobar@example.com';
$ok = $auth->modifyUser($user['user'], array('mail' => $newmail));
$this->assertTrue($ok, $info);
$check = $auth->getUserData($user['user']);
$this->assertEquals($newmail, $check['mail'], $info);
}
// modName
if($auth->canDo('modName')) {
$newname = 'FirstName Foobar';
$ok = $auth->modifyUser($user['user'], array('name' => $newname));
$this->assertTrue($ok, $info);
$check = $auth->getUserData($user['user']);
$this->assertEquals($newname, $check['name'], $info);
}
// modLogin
if($auth->canDo('modLogin')) {
$newuser = 'foobar' . $user['user'];
$ok = $auth->modifyUser($user['user'], array('user' => $newuser));
$this->assertTrue($ok, $info);
$check = $auth->getUserData($newuser);
$this->assertEquals($newuser, $check['user'], $info);
// rename back
$ok = $auth->modifyUser($newuser, array('user' => $user['user']));
$this->assertTrue($ok, $info);
}
// delUser
if($auth->canDo('delUser')) {
$num = $auth->deleteUsers(array($user['user']));
$this->assertEquals(1, $num, $info);
$this->assertFalse($auth->getUserData($user['user']), $info);
}
}
/**
* prepares the individual configurations for testing
*
* @return array
*/
public function data_provider() {
$testdata = array();
$files = glob(__DIR__ . "/{$this->driver}/*.php");
foreach($files as $file) {
$dump = preg_replace('/\.php$/', '.sql', $file);
$dbname = 'authpdo_testing_' . basename($file, '.php');
/** @var $data array */
include $file;
$testdata[] = array($dbname, $dump, $data);
}
return $testdata;
}
/**
* This triggers all the tests based on the dumps and configurations
*
* @dataProvider data_provider
* @depends test_requirements
* @param string $dbname Name of the database to use
* @param string $dump The path to the dump file to import
* @param array|string $data config and test user setup. When a string is passed, test is skipped with that msg
*/
public function test_database($dbname, $dump, $data){
global $conf;
if(!is_array($data)) {
$this->markTestSkipped($data);
return;
}
$this->database = $dbname;
$this->createDatabase();
$this->importDatabase($dump);
// Setup the configuration and initialize a new auth object
$conf['plugin']['authpdo'] = array();
$conf['plugin']['authpdo'] = $data['conf'];
$conf['plugin']['authpdo']['dsn'] = "{$this->driver}:dbname={$this->database};host={$this->host};port={$this->port}";
$conf['plugin']['authpdo']['user'] = $this->user;
$conf['plugin']['authpdo']['pass'] = $this->pass;
$conf['plugin']['authpdo']['debug'] = 1;
if($data['passcrypt']) $conf['passcrypt'] = $data['passcrypt'];
$auth = new auth_plugin_authpdo();
$this->runGeneralTests($auth, $data['users']);
foreach($data['users'] as $user) {
$this->runUserTests($auth, $user);
}
$this->dropDatabase();
}
}

View File

@ -0,0 +1,104 @@
<?php
/**
* Confiuration for fluxbb. They have a very simplistic model. There is no separate display name and a user can
* only be in a single group.
*/
/** @noinspection SqlResolve */
$data = array(
'passcrypt' => 'sha1',
'conf' => array(
'select-user' => '
SELECT id AS uid,
username AS user,
username AS name,
password AS hash,
email AS mail
FROM fluy_users
WHERE username = :user
',
'select-user-groups' => '
SELECT g_title AS `group`
FROM fluy_groups G, fluy_users U
WHERE U.id = :uid
AND U.group_id = G.g_id
',
'select-groups' => '
SELECT g_id AS gid, g_title AS `group`
FROM fluy_groups
',
'insert-user' => '
INSERT INTO fluy_users
(group_id, username, password, email)
VALUES (0, :user, :hash, :mail)
',
'delete-user' => '
DELETE FROM fluy_users
WHERE id = :uid
',
'list-users' => '
SELECT DISTINCT username AS user
FROM fluy_users U, fluy_groups G
WHERE U.id = G.g_id
AND G.g_title LIKE :group
AND U.username LIKE :user
AND U.username LIKE :name
AND U.email LIKE :mail
ORDER BY username
LIMIT :limit
OFFSET :start
',
'count-users' => '
SELECT COUNT(DISTINCT username) AS `count`
FROM fluy_users U, fluy_groups G
WHERE U.id = G.g_id
AND G.g_title LIKE :group
AND U.username LIKE :user
AND U.username LIKE :name
AND U.email LIKE :mail
',
'update-user-info' => '', // we can't do this because username = displayname
'update-user-login' => '
UPDATE fluy_users
SET username = :newlogin
WHERE id = :uid
',
'update-user-pass' => '
UPDATE fluy_users
SET password = :hash
WHERE id = :uid
',
'insert-group' => '
INSERT INTO fluy_groups (g_title) VALUES (:group)
',
'join-group' => '
UPDATE fluy_users
SET group_id = :gid
WHERE id = :uid
',
'leave-group' => '
SELECT 1
', // we do a no-op for this
),
'users' => array(
array(
'user' => 'admin',
'pass' => 'pass',
'name' => 'admin',
'mail' => 'admin@example.com',
'grps' =>
array(
0 => 'Administrators',
),
),
array(
'user' => 'test1',
'pass' => 'password',
'name' => 'test1',
'mail' => 'test1@example.com',
'grps' =>
array(
0 => 'test',
),
),
),
);

View File

@ -0,0 +1,136 @@
-- phpMyAdmin SQL Dump
-- version 4.0.10.7
-- http://www.phpmyadmin.net
--
-- Host: localhost:3306
-- Generation Time: Feb 12, 2016 at 03:06 PM
-- Server version: 10.0.23-MariaDB
-- PHP Version: 5.4.31
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `dokuwiki_flux570`
--
-- --------------------------------------------------------
--
-- Table structure for table `fluy_groups`
--
CREATE TABLE IF NOT EXISTS `fluy_groups` (
`g_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`g_title` varchar(50) NOT NULL DEFAULT '',
`g_user_title` varchar(50) DEFAULT NULL,
`g_promote_min_posts` int(10) unsigned NOT NULL DEFAULT '0',
`g_promote_next_group` int(10) unsigned NOT NULL DEFAULT '0',
`g_moderator` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_edit_users` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_rename_users` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_change_passwords` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_ban_users` tinyint(1) NOT NULL DEFAULT '0',
`g_mod_promote_users` tinyint(1) NOT NULL DEFAULT '0',
`g_read_board` tinyint(1) NOT NULL DEFAULT '1',
`g_view_users` tinyint(1) NOT NULL DEFAULT '1',
`g_post_replies` tinyint(1) NOT NULL DEFAULT '1',
`g_post_topics` tinyint(1) NOT NULL DEFAULT '1',
`g_edit_posts` tinyint(1) NOT NULL DEFAULT '1',
`g_delete_posts` tinyint(1) NOT NULL DEFAULT '1',
`g_delete_topics` tinyint(1) NOT NULL DEFAULT '1',
`g_post_links` tinyint(1) NOT NULL DEFAULT '1',
`g_set_title` tinyint(1) NOT NULL DEFAULT '1',
`g_search` tinyint(1) NOT NULL DEFAULT '1',
`g_search_users` tinyint(1) NOT NULL DEFAULT '1',
`g_send_email` tinyint(1) NOT NULL DEFAULT '1',
`g_post_flood` smallint(6) NOT NULL DEFAULT '30',
`g_search_flood` smallint(6) NOT NULL DEFAULT '30',
`g_email_flood` smallint(6) NOT NULL DEFAULT '60',
`g_report_flood` smallint(6) NOT NULL DEFAULT '60',
PRIMARY KEY (`g_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
--
-- Dumping data for table `fluy_groups`
--
INSERT INTO `fluy_groups` (`g_id`, `g_title`, `g_user_title`, `g_promote_min_posts`, `g_promote_next_group`, `g_moderator`, `g_mod_edit_users`, `g_mod_rename_users`, `g_mod_change_passwords`, `g_mod_ban_users`, `g_mod_promote_users`, `g_read_board`, `g_view_users`, `g_post_replies`, `g_post_topics`, `g_edit_posts`, `g_delete_posts`, `g_delete_topics`, `g_post_links`, `g_set_title`, `g_search`, `g_search_users`, `g_send_email`, `g_post_flood`, `g_search_flood`, `g_email_flood`, `g_report_flood`) VALUES
(1, 'Administrators', 'Administrator', 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0),
(2, 'Moderators', 'Moderator', 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0),
(3, 'Guests', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 60, 30, 0, 0),
(4, 'Members', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 60, 30, 60, 60),
(5, 'test', NULL, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 60, 30, 60, 60);
-- --------------------------------------------------------
--
-- Table structure for table `fluy_users`
--
CREATE TABLE IF NOT EXISTS `fluy_users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`group_id` int(10) unsigned NOT NULL DEFAULT '3',
`username` varchar(200) NOT NULL DEFAULT '',
`password` varchar(40) NOT NULL DEFAULT '',
`email` varchar(80) NOT NULL DEFAULT '',
`title` varchar(50) DEFAULT NULL,
`realname` varchar(40) DEFAULT NULL,
`url` varchar(100) DEFAULT NULL,
`jabber` varchar(80) DEFAULT NULL,
`icq` varchar(12) DEFAULT NULL,
`msn` varchar(80) DEFAULT NULL,
`aim` varchar(30) DEFAULT NULL,
`yahoo` varchar(30) DEFAULT NULL,
`location` varchar(30) DEFAULT NULL,
`signature` text,
`disp_topics` tinyint(3) unsigned DEFAULT NULL,
`disp_posts` tinyint(3) unsigned DEFAULT NULL,
`email_setting` tinyint(1) NOT NULL DEFAULT '1',
`notify_with_post` tinyint(1) NOT NULL DEFAULT '0',
`auto_notify` tinyint(1) NOT NULL DEFAULT '0',
`show_smilies` tinyint(1) NOT NULL DEFAULT '1',
`show_img` tinyint(1) NOT NULL DEFAULT '1',
`show_img_sig` tinyint(1) NOT NULL DEFAULT '1',
`show_avatars` tinyint(1) NOT NULL DEFAULT '1',
`show_sig` tinyint(1) NOT NULL DEFAULT '1',
`timezone` float NOT NULL DEFAULT '0',
`dst` tinyint(1) NOT NULL DEFAULT '0',
`time_format` tinyint(1) NOT NULL DEFAULT '0',
`date_format` tinyint(1) NOT NULL DEFAULT '0',
`language` varchar(25) NOT NULL DEFAULT 'English',
`style` varchar(25) NOT NULL DEFAULT 'Air',
`num_posts` int(10) unsigned NOT NULL DEFAULT '0',
`last_post` int(10) unsigned DEFAULT NULL,
`last_search` int(10) unsigned DEFAULT NULL,
`last_email_sent` int(10) unsigned DEFAULT NULL,
`last_report_sent` int(10) unsigned DEFAULT NULL,
`registered` int(10) unsigned NOT NULL DEFAULT '0',
`registration_ip` varchar(39) NOT NULL DEFAULT '0.0.0.0',
`last_visit` int(10) unsigned NOT NULL DEFAULT '0',
`admin_note` varchar(30) DEFAULT NULL,
`activate_string` varchar(80) DEFAULT NULL,
`activate_key` varchar(8) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `fluy_users_username_idx` (`username`(25)),
KEY `fluy_users_registered_idx` (`registered`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;
--
-- Dumping data for table `fluy_users`
--
INSERT INTO `fluy_users` (`id`, `group_id`, `username`, `password`, `email`, `title`, `realname`, `url`, `jabber`, `icq`, `msn`, `aim`, `yahoo`, `location`, `signature`, `disp_topics`, `disp_posts`, `email_setting`, `notify_with_post`, `auto_notify`, `show_smilies`, `show_img`, `show_img_sig`, `show_avatars`, `show_sig`, `timezone`, `dst`, `time_format`, `date_format`, `language`, `style`, `num_posts`, `last_post`, `last_search`, `last_email_sent`, `last_report_sent`, `registered`, `registration_ip`, `last_visit`, `admin_note`, `activate_string`, `activate_key`) VALUES
(1, 3, 'Guest', 'Guest', 'Guest', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 'English', 'Air', 0, NULL, NULL, NULL, NULL, 0, '0.0.0.0', 0, NULL, NULL, NULL),
(2, 1, 'admin', '9d4e1e23bd5b727046a9e3b4b7db57bd8d6ee684', 'admin@example.com', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 'English', 'Air', 1, 1455307304, NULL, NULL, NULL, 1455307304, '86.56.56.211', 1455307448, NULL, NULL, NULL),
(3, 5, 'test1', '5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8', 'test1@example.com', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 'English', 'Air', 0, NULL, NULL, NULL, NULL, 1455307527, '86.56.56.217', 1455307529, NULL, NULL, NULL);
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@ -0,0 +1,144 @@
<?php
/**
* Configuration for mybb. Password checking is done in SQL
*
* mybb stores additional group ids in a commaseparated list of mybb_users.addtionalgroups This
* is currently not supported in the setup below. If someone can come up with a clever config for
* that PRs would be welcome.
*/
/** @noinspection SqlResolve */
$data = array(
'passcrypt' => 'sha1',
'conf' => array(
'select-user' => '
SELECT uid,
username AS user,
username AS name,
email AS mail
FROM mybb_users
WHERE username = :user
',
'check-pass' => '
SELECT uid
FROM mybb_users
WHERE username = :user
AND password = MD5(CONCAT(MD5(salt), MD5(:clear)))
',
'select-user-groups' => '
SELECT UG.title AS `group`,
UG.gid
FROM mybb_usergroups UG,
mybb_users U
WHERE U.usergroup = UG.gid
AND U.uid = :uid
',
'select-groups' => '
SELECT gid, title AS `group`
FROM mybb_usergroups
',
'insert-user' => '
SET @salt = LEFT(UUID(), 10);
INSERT INTO mybb_users
(username, email, salt, password, regdate)
VALUES (:user, :mail, @salt, MD5(CONCAT(MD5(@salt), MD5(:clear))), UNIX_TIMESTAMP() )
',
'delete-user' => '
DELETE FROM mybb_users
WHERE uid = :uid
',
'list-users' => '
SELECT U.username AS user
FROM mybb_usergroups UG,
mybb_users U
WHERE U.usergroup = UG.gid
AND UG.title LIKE :group
AND U.username LIKE :user
AND U.username LIKE :name
AND U.email LIKE :mail
ORDER BY U.username
LIMIT :limit
OFFSET :start
',
'count-users' => '
SELECT COUNT(U.username) AS `count`
FROM mybb_usergroups UG,
mybb_users U
WHERE U.usergroup = UG.gid
AND UG.title LIKE :group
AND U.username LIKE :user
AND U.username LIKE :name
AND U.email LIKE :mail
',
'update-user-info' => '
UPDATE mybb_users
SET email = :mail
WHERE uid = :uid
', // we do not support changing the full name as that is the same as the login
'update-user-login' => '
UPDATE mybb_users
SET username = :newlogin
WHERE uid = :uid
',
'update-user-pass' => '
SET @salt = LEFT(UUID(), 10);
UPDATE mybb_users
SET salt = @salt,
password = MD5(CONCAT(MD5(@salt), MD5(:clear)))
WHERE uid = :uid
',
'insert-group' => '
INSERT INTO mybb_usergroups (title)
VALUES (:group)
',
'join-group' => '
UPDATE mybb_users
SET usergroup = :gid
WHERE uid = :uid
',
'leave-group' => '', // makes probably no sense to implement
),
'users' => array(
array(
'user' => 'Test One',
'pass' => 'fakepass',
'name' => 'Test One',
'mail' => 'no_one@nowhere.com',
'grps' =>
array(
0 => 'Registered',
),
),
array(
'user' => 'Test Two',
'pass' => 'fakepass',
'name' => 'Test Two',
'mail' => 'no_one@nowhere.com',
'grps' =>
array(
0 => 'Super Moderators',
),
),
array(
'user' => 'Test Three',
'pass' => 'fakepass',
'name' => 'Test Three',
'mail' => 'no_one@nowhere.com',
'grps' =>
array(
0 => 'Administrators',
),
),
array(
'user' => 'Test Four',
'pass' => 'fakepass',
'name' => 'Test Four',
'mail' => 'no_one@nowhere.com',
'grps' =>
array(
0 => 'Moderators',
),
),
),
);

View File

@ -0,0 +1,306 @@
-- phpMyAdmin SQL Dump
-- version 4.4.14
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Aug 19, 2016 at 04:02 PM
-- Server version: 5.5.45
-- PHP Version: 5.4.45
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `mybb`
--
-- --------------------------------------------------------
--
-- Table structure for table `mybb_usergroups`
--
CREATE TABLE `mybb_usergroups` (
`gid` smallint(5) unsigned NOT NULL,
`type` tinyint(1) unsigned NOT NULL DEFAULT '2',
`title` varchar(120) NOT NULL DEFAULT '',
`description` text NOT NULL DEFAULT '',
`namestyle` varchar(200) NOT NULL DEFAULT '{username}',
`usertitle` varchar(120) NOT NULL DEFAULT '',
`stars` smallint(4) unsigned NOT NULL DEFAULT '0',
`starimage` varchar(120) NOT NULL DEFAULT '',
`image` varchar(120) NOT NULL DEFAULT '',
`disporder` smallint(6) unsigned NOT NULL DEFAULT '0',
`isbannedgroup` tinyint(1) NOT NULL DEFAULT '0',
`canview` tinyint(1) NOT NULL DEFAULT '0',
`canviewthreads` tinyint(1) NOT NULL DEFAULT '0',
`canviewprofiles` tinyint(1) NOT NULL DEFAULT '0',
`candlattachments` tinyint(1) NOT NULL DEFAULT '0',
`canviewboardclosed` tinyint(1) NOT NULL DEFAULT '0',
`canpostthreads` tinyint(1) NOT NULL DEFAULT '0',
`canpostreplys` tinyint(1) NOT NULL DEFAULT '0',
`canpostattachments` tinyint(1) NOT NULL DEFAULT '0',
`canratethreads` tinyint(1) NOT NULL DEFAULT '0',
`modposts` tinyint(1) NOT NULL DEFAULT '0',
`modthreads` tinyint(1) NOT NULL DEFAULT '0',
`mod_edit_posts` tinyint(1) NOT NULL DEFAULT '0',
`modattachments` tinyint(1) NOT NULL DEFAULT '0',
`caneditposts` tinyint(1) NOT NULL DEFAULT '0',
`candeleteposts` tinyint(1) NOT NULL DEFAULT '0',
`candeletethreads` tinyint(1) NOT NULL DEFAULT '0',
`caneditattachments` tinyint(1) NOT NULL DEFAULT '0',
`canpostpolls` tinyint(1) NOT NULL DEFAULT '0',
`canvotepolls` tinyint(1) NOT NULL DEFAULT '0',
`canundovotes` tinyint(1) NOT NULL DEFAULT '0',
`canusepms` tinyint(1) NOT NULL DEFAULT '0',
`cansendpms` tinyint(1) NOT NULL DEFAULT '0',
`cantrackpms` tinyint(1) NOT NULL DEFAULT '0',
`candenypmreceipts` tinyint(1) NOT NULL DEFAULT '0',
`pmquota` int(3) unsigned NOT NULL DEFAULT '0',
`maxpmrecipients` int(4) unsigned NOT NULL DEFAULT '5',
`cansendemail` tinyint(1) NOT NULL DEFAULT '0',
`cansendemailoverride` tinyint(1) NOT NULL DEFAULT '0',
`maxemails` int(3) unsigned NOT NULL DEFAULT '5',
`emailfloodtime` int(3) unsigned NOT NULL DEFAULT '5',
`canviewmemberlist` tinyint(1) NOT NULL DEFAULT '0',
`canviewcalendar` tinyint(1) NOT NULL DEFAULT '0',
`canaddevents` tinyint(1) NOT NULL DEFAULT '0',
`canbypasseventmod` tinyint(1) NOT NULL DEFAULT '0',
`canmoderateevents` tinyint(1) NOT NULL DEFAULT '0',
`canviewonline` tinyint(1) NOT NULL DEFAULT '0',
`canviewwolinvis` tinyint(1) NOT NULL DEFAULT '0',
`canviewonlineips` tinyint(1) NOT NULL DEFAULT '0',
`cancp` tinyint(1) NOT NULL DEFAULT '0',
`issupermod` tinyint(1) NOT NULL DEFAULT '0',
`cansearch` tinyint(1) NOT NULL DEFAULT '0',
`canusercp` tinyint(1) NOT NULL DEFAULT '0',
`canuploadavatars` tinyint(1) NOT NULL DEFAULT '0',
`canratemembers` tinyint(1) NOT NULL DEFAULT '0',
`canchangename` tinyint(1) NOT NULL DEFAULT '0',
`canbereported` tinyint(1) NOT NULL DEFAULT '0',
`canchangewebsite` tinyint(1) NOT NULL DEFAULT '1',
`showforumteam` tinyint(1) NOT NULL DEFAULT '0',
`usereputationsystem` tinyint(1) NOT NULL DEFAULT '0',
`cangivereputations` tinyint(1) NOT NULL DEFAULT '0',
`candeletereputations` tinyint(1) NOT NULL DEFAULT '0',
`reputationpower` int(10) unsigned NOT NULL DEFAULT '0',
`maxreputationsday` int(10) unsigned NOT NULL DEFAULT '0',
`maxreputationsperuser` int(10) unsigned NOT NULL DEFAULT '0',
`maxreputationsperthread` int(10) unsigned NOT NULL DEFAULT '0',
`candisplaygroup` tinyint(1) NOT NULL DEFAULT '0',
`attachquota` int(10) unsigned NOT NULL DEFAULT '0',
`cancustomtitle` tinyint(1) NOT NULL DEFAULT '0',
`canwarnusers` tinyint(1) NOT NULL DEFAULT '0',
`canreceivewarnings` tinyint(1) NOT NULL DEFAULT '0',
`maxwarningsday` int(3) unsigned NOT NULL DEFAULT '3',
`canmodcp` tinyint(1) NOT NULL DEFAULT '0',
`showinbirthdaylist` tinyint(1) NOT NULL DEFAULT '0',
`canoverridepm` tinyint(1) NOT NULL DEFAULT '0',
`canusesig` tinyint(1) NOT NULL DEFAULT '0',
`canusesigxposts` smallint(5) unsigned NOT NULL DEFAULT '0',
`signofollow` tinyint(1) NOT NULL DEFAULT '0',
`edittimelimit` int(4) unsigned NOT NULL DEFAULT '0',
`maxposts` int(4) unsigned NOT NULL DEFAULT '0',
`showmemberlist` tinyint(1) NOT NULL DEFAULT '1',
`canmanageannounce` tinyint(1) NOT NULL DEFAULT '0',
`canmanagemodqueue` tinyint(1) NOT NULL DEFAULT '0',
`canmanagereportedcontent` tinyint(1) NOT NULL DEFAULT '0',
`canviewmodlogs` tinyint(1) NOT NULL DEFAULT '0',
`caneditprofiles` tinyint(1) NOT NULL DEFAULT '0',
`canbanusers` tinyint(1) NOT NULL DEFAULT '0',
`canviewwarnlogs` tinyint(1) NOT NULL DEFAULT '0',
`canuseipsearch` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;
--
-- Dumping data for table `mybb_usergroups`
--
INSERT INTO `mybb_usergroups` (`gid`, `type`, `title`, `description`, `namestyle`, `usertitle`, `stars`, `starimage`, `image`, `disporder`, `isbannedgroup`, `canview`, `canviewthreads`, `canviewprofiles`, `candlattachments`, `canviewboardclosed`, `canpostthreads`, `canpostreplys`, `canpostattachments`, `canratethreads`, `modposts`, `modthreads`, `mod_edit_posts`, `modattachments`, `caneditposts`, `candeleteposts`, `candeletethreads`, `caneditattachments`, `canpostpolls`, `canvotepolls`, `canundovotes`, `canusepms`, `cansendpms`, `cantrackpms`, `candenypmreceipts`, `pmquota`, `maxpmrecipients`, `cansendemail`, `cansendemailoverride`, `maxemails`, `emailfloodtime`, `canviewmemberlist`, `canviewcalendar`, `canaddevents`, `canbypasseventmod`, `canmoderateevents`, `canviewonline`, `canviewwolinvis`, `canviewonlineips`, `cancp`, `issupermod`, `cansearch`, `canusercp`, `canuploadavatars`, `canratemembers`, `canchangename`, `canbereported`, `canchangewebsite`, `showforumteam`, `usereputationsystem`, `cangivereputations`, `candeletereputations`, `reputationpower`, `maxreputationsday`, `maxreputationsperuser`, `maxreputationsperthread`, `candisplaygroup`, `attachquota`, `cancustomtitle`, `canwarnusers`, `canreceivewarnings`, `maxwarningsday`, `canmodcp`, `showinbirthdaylist`, `canoverridepm`, `canusesig`, `canusesigxposts`, `signofollow`, `edittimelimit`, `maxposts`, `showmemberlist`, `canmanageannounce`, `canmanagemodqueue`, `canmanagereportedcontent`, `canviewmodlogs`, `caneditprofiles`, `canbanusers`, `canviewwarnlogs`, `canuseipsearch`) VALUES
(1, 1, 'Guests', 'The default group that all visitors are assigned to unless they''re logged in.', '{username}', 'Unregistered', 0, '', '', 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
(2, 1, 'Registered', 'After registration, all users are placed in this group by default.', '{username}', '', 0, 'images/star.png', '', 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 200, 5, 1, 0, 5, 5, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 5, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0),
(3, 1, 'Super Moderators', 'These users can moderate any forum.', '<span style="color: #CC00CC;"><strong>{username}</strong></span>', 'Super Moderator', 6, 'images/star.png', '', 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 250, 5, 1, 0, 10, 5, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 10, 0, 0, 1, 0, 1, 1, 1, 3, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1),
(4, 1, 'Administrators', 'The group all administrators belong to.', '<span style="color: green;"><strong><em>{username}</em></strong></span>', 'Administrator', 7, 'images/star.png', '', 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 2, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1),
(5, 1, 'Awaiting Activation', 'Users that have not activated their account by email or manually been activated yet.', '{username}', 'Account not Activated', 0, 'images/star.png', '', 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 5, 0, 0, 5, 5, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0),
(6, 1, 'Moderators', 'These users moderate specific forums.', '<span style="color: #CC00CC;"><strong>{username}</strong></span>', 'Moderator', 5, 'images/star.png', '', 0, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 250, 5, 1, 0, 5, 5, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 10, 0, 0, 1, 0, 1, 1, 1, 3, 1, 1, 0, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1),
(7, 1, 'Banned', 'The default user group to which members that are banned are moved to.', '<s>{username}</s>', 'Banned', 0, 'images/star.png', '', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0);
--
-- Indexes for dumped tables
--
--
-- Indexes for table `mybb_usergroups`
--
ALTER TABLE `mybb_usergroups`
ADD PRIMARY KEY (`gid`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `mybb_usergroups`
--
ALTER TABLE `mybb_usergroups`
MODIFY `gid` smallint(5) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=8;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
-- phpMyAdmin SQL Dump
-- version 4.4.14
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Aug 19, 2016 at 03:47 PM
-- Server version: 5.5.45
-- PHP Version: 5.4.45
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
--
-- Database: `mybb`
--
-- --------------------------------------------------------
--
-- Table structure for table `mybb_users`
--
CREATE TABLE `mybb_users` (
`uid` int(10) unsigned NOT NULL,
`username` varchar(120) NOT NULL DEFAULT '',
`password` varchar(120) NOT NULL DEFAULT '',
`salt` varchar(10) NOT NULL DEFAULT '',
`loginkey` varchar(50) NOT NULL DEFAULT '',
`email` varchar(220) NOT NULL DEFAULT '',
`postnum` int(10) unsigned NOT NULL DEFAULT '0',
`threadnum` int(10) unsigned NOT NULL DEFAULT '0',
`avatar` varchar(200) NOT NULL DEFAULT '',
`avatardimensions` varchar(10) NOT NULL DEFAULT '',
`avatartype` varchar(10) NOT NULL DEFAULT '0',
`usergroup` smallint(5) unsigned NOT NULL DEFAULT '0',
`additionalgroups` varchar(200) NOT NULL DEFAULT '',
`displaygroup` smallint(5) unsigned NOT NULL DEFAULT '0',
`usertitle` varchar(250) NOT NULL DEFAULT '',
`regdate` int(10) unsigned NOT NULL DEFAULT '0',
`lastactive` int(10) unsigned NOT NULL DEFAULT '0',
`lastvisit` int(10) unsigned NOT NULL DEFAULT '0',
`lastpost` int(10) unsigned NOT NULL DEFAULT '0',
`website` varchar(200) NOT NULL DEFAULT '',
`icq` varchar(10) NOT NULL DEFAULT '',
`aim` varchar(50) NOT NULL DEFAULT '',
`yahoo` varchar(50) NOT NULL DEFAULT '',
`skype` varchar(75) NOT NULL DEFAULT '',
`google` varchar(75) NOT NULL DEFAULT '',
`birthday` varchar(15) NOT NULL DEFAULT '',
`birthdayprivacy` varchar(4) NOT NULL DEFAULT 'all',
`signature` text NOT NULL DEFAULT '',
`allownotices` tinyint(1) NOT NULL DEFAULT '0',
`hideemail` tinyint(1) NOT NULL DEFAULT '0',
`subscriptionmethod` tinyint(1) NOT NULL DEFAULT '0',
`invisible` tinyint(1) NOT NULL DEFAULT '0',
`receivepms` tinyint(1) NOT NULL DEFAULT '0',
`receivefrombuddy` tinyint(1) NOT NULL DEFAULT '0',
`pmnotice` tinyint(1) NOT NULL DEFAULT '0',
`pmnotify` tinyint(1) NOT NULL DEFAULT '0',
`buddyrequestspm` tinyint(1) NOT NULL DEFAULT '1',
`buddyrequestsauto` tinyint(1) NOT NULL DEFAULT '0',
`threadmode` varchar(8) NOT NULL DEFAULT '',
`showimages` tinyint(1) NOT NULL DEFAULT '0',
`showvideos` tinyint(1) NOT NULL DEFAULT '0',
`showsigs` tinyint(1) NOT NULL DEFAULT '0',
`showavatars` tinyint(1) NOT NULL DEFAULT '0',
`showquickreply` tinyint(1) NOT NULL DEFAULT '0',
`showredirect` tinyint(1) NOT NULL DEFAULT '0',
`ppp` smallint(6) unsigned NOT NULL DEFAULT '0',
`tpp` smallint(6) unsigned NOT NULL DEFAULT '0',
`daysprune` smallint(6) unsigned NOT NULL DEFAULT '0',
`dateformat` varchar(4) NOT NULL DEFAULT '',
`timeformat` varchar(4) NOT NULL DEFAULT '',
`timezone` varchar(5) NOT NULL DEFAULT '',
`dst` tinyint(1) NOT NULL DEFAULT '0',
`dstcorrection` tinyint(1) NOT NULL DEFAULT '0',
`buddylist` text NOT NULL DEFAULT '',
`ignorelist` text NOT NULL DEFAULT '',
`style` smallint(5) unsigned NOT NULL DEFAULT '0',
`away` tinyint(1) NOT NULL DEFAULT '0',
`awaydate` int(10) unsigned NOT NULL DEFAULT '0',
`returndate` varchar(15) NOT NULL DEFAULT '',
`awayreason` varchar(200) NOT NULL DEFAULT '',
`pmfolders` text NOT NULL DEFAULT '',
`notepad` text NOT NULL DEFAULT '',
`referrer` int(10) unsigned NOT NULL DEFAULT '0',
`referrals` int(10) unsigned NOT NULL DEFAULT '0',
`reputation` int(11) NOT NULL DEFAULT '0',
`regip` varbinary(16) NOT NULL DEFAULT '',
`lastip` varbinary(16) NOT NULL DEFAULT '',
`language` varchar(50) NOT NULL DEFAULT '',
`timeonline` int(10) unsigned NOT NULL DEFAULT '0',
`showcodebuttons` tinyint(1) NOT NULL DEFAULT '1',
`totalpms` int(10) unsigned NOT NULL DEFAULT '0',
`unreadpms` int(10) unsigned NOT NULL DEFAULT '0',
`warningpoints` int(3) unsigned NOT NULL DEFAULT '0',
`moderateposts` tinyint(1) NOT NULL DEFAULT '0',
`moderationtime` int(10) unsigned NOT NULL DEFAULT '0',
`suspendposting` tinyint(1) NOT NULL DEFAULT '0',
`suspensiontime` int(10) unsigned NOT NULL DEFAULT '0',
`suspendsignature` tinyint(1) NOT NULL DEFAULT '0',
`suspendsigtime` int(10) unsigned NOT NULL DEFAULT '0',
`coppauser` tinyint(1) NOT NULL DEFAULT '0',
`classicpostbit` tinyint(1) NOT NULL DEFAULT '0',
`loginattempts` smallint(2) unsigned NOT NULL DEFAULT '1',
`usernotes` text NOT NULL DEFAULT '',
`sourceeditor` tinyint(1) NOT NULL DEFAULT '0'
) ENGINE=MyISAM AUTO_INCREMENT=88 DEFAULT CHARSET=utf8;
--
-- Dumping data for table `mybb_users`
--
INSERT INTO `mybb_users` (`uid`, `username`, `password`, `salt`, `loginkey`, `email`, `postnum`, `threadnum`, `avatar`, `avatardimensions`, `avatartype`, `usergroup`, `additionalgroups`, `displaygroup`, `usertitle`, `regdate`, `lastactive`, `lastvisit`, `lastpost`, `website`, `icq`, `aim`, `yahoo`, `skype`, `google`, `birthday`, `birthdayprivacy`, `signature`, `allownotices`, `hideemail`, `subscriptionmethod`, `invisible`, `receivepms`, `receivefrombuddy`, `pmnotice`, `pmnotify`, `buddyrequestspm`, `buddyrequestsauto`, `threadmode`, `showimages`, `showvideos`, `showsigs`, `showavatars`, `showquickreply`, `showredirect`, `ppp`, `tpp`, `daysprune`, `dateformat`, `timeformat`, `timezone`, `dst`, `dstcorrection`, `buddylist`, `ignorelist`, `style`, `away`, `awaydate`, `returndate`, `awayreason`, `pmfolders`, `notepad`, `referrer`, `referrals`, `reputation`, `regip`, `lastip`, `language`, `timeonline`, `showcodebuttons`, `totalpms`, `unreadpms`, `warningpoints`, `moderateposts`, `moderationtime`, `suspendposting`, `suspensiontime`, `suspendsignature`, `suspendsigtime`, `coppauser`, `classicpostbit`, `loginattempts`, `usernotes`, `sourceeditor`) VALUES
(84, 'Test One', '6e90cf918ebce3a577fd72cea919dc64', '0pBnrIIv', 'xALZxWcfw18AhO6M7YxptBrxZqyrJB04CWlyaIniO3ZyMn6P1f', 'no_one@nowhere.com', 0, 0, '', '', '', 2, '', 0, '', 1471614765, 1471614765, 1471614765, 0, '', '0', '', '', '', '', '', 'all', '', 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 'linear', 1, 1, 1, 1, 1, 1, 0, 0, 0, '0', '0', '0', 0, 2, '', '', 0, 0, 0, '0', '', '', '', 0, 0, 0, '', '', '', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, '', 0),
(85, 'Test Two', 'e85f6b7e5804b42d7c7d99329dc1a43f', 'NSX3xNT1', 'VucYxl7EGnsoqVW75COGNAdB0YgtWHc9RFqo4LxIhhtpEFxdIE', 'no_one@nowhere.com', 0, 0, '', '', '', 3, '', 0, '', 1471614850, 1471614850, 1471614850, 0, '', '0', '', '', '', '', '', 'all', '', 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 'linear', 1, 1, 1, 1, 1, 1, 0, 0, 0, '0', '0', '0', 0, 2, '', '', 0, 0, 0, '0', '', '', '', 0, 0, 0, '', '', '', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, '', 0),
(86, 'Test Three', '3669c9583702ca6e32c7817f4bc34f5f', 'CVEbGFXH', 'GivwOlOKuvpfTs8Dc263fNnPdSQW1k1C1fHt7gukTJdRvTZGca', 'no_one@nowhere.com', 0, 0, '', '', '', 4, '', 0, '', 1471615021, 1471615021, 1471615021, 0, '', '0', '', '', '', '', '', 'all', '', 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 'linear', 1, 1, 1, 1, 1, 1, 0, 0, 0, '0', '0', '0', 0, 2, '', '', 0, 0, 0, '0', '', '', '', 0, 0, 0, '', '', '', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, '', 0),
(87, 'Test Four', '693a0cd028c9adb4cb28d8a8be3dc7af', 'x6q7QFmU', 'S4oU92jET3yjvbiganAKCYde9ksoacJeb4sC247qvYftgwsYmu', 'no_one@nowhere.com', 0, 0, '', '', '', 6, '', 0, '', 1471615064, 1471615064, 1471615064, 0, '', '0', '', '', '', '', '', 'all', '', 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 'linear', 1, 1, 1, 1, 1, 1, 0, 0, 0, '0', '0', '0', 0, 2, '', '', 0, 0, 0, '0', '', '', '', 0, 0, 0, '', '', '', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, '', 0);
--
-- Indexes for dumped tables
--
--
-- Indexes for table `mybb_users`
--
ALTER TABLE `mybb_users`
ADD PRIMARY KEY (`uid`),
ADD UNIQUE KEY `username` (`username`),
ADD KEY `usergroup` (`usergroup`),
ADD KEY `regip` (`regip`),
ADD KEY `lastip` (`lastip`);
--
-- AUTO_INCREMENT for dumped tables
--
--
-- AUTO_INCREMENT for table `mybb_users`
--
ALTER TABLE `mybb_users`
MODIFY `uid` int(10) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=88;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@ -0,0 +1,115 @@
<?php
/**
* Basic Wordpress config
*
* Wordpress has no proper groups. This configures the default access permissions as groups. Better group
* support is available through a Wrdpress plugin
*/
/** @noinspection SqlResolve */
$data = array(
'passcrypt' => 'pmd5',
'conf' => array(
'select-user' => '
SELECT ID AS uid,
user_login AS user,
display_name AS name,
user_pass AS hash,
user_email AS mail
FROM wpvk_users
WHERE user_login = :user
',
'select-user-groups' => '
SELECT CONCAT("group",meta_value) AS `group`
FROM wpvk_usermeta
WHERE user_id = :uid
AND meta_key = "wpvk_user_level"
',
'select-groups' => '',
'insert-user' => '',
'delete-user' => '',
'list-users' => '
SELECT DISTINCT user_login AS user
FROM wpvk_users U, wpvk_usermeta M
WHERE U.ID = M.user_id
AND M.meta_key = "wpvk_user_level"
AND CONCAT("group", M.meta_value) LIKE :group
AND U.user_login LIKE :user
AND U.display_name LIKE :name
AND U.user_email LIKE :mail
ORDER BY user_login
LIMIT :limit
OFFSET :start
',
'count-users' => '
SELECT COUNT(DISTINCT user_login) as `count`
FROM wpvk_users U, wpvk_usermeta M
WHERE U.ID = M.user_id
AND M.meta_key = "wpvk_user_level"
AND CONCAT("group", M.meta_value) LIKE :group
AND U.user_login LIKE :user
AND U.display_name LIKE :name
AND U.user_email LIKE :mail
',
'update-user-info' => '
UPDATE wpvk_users
SET display_name = :name,
user_email = :mail
WHERE ID = :uid
',
'update-user-login' => '
UPDATE wpvk_users
SET user_login = :newlogin
WHERE ID = :uid
',
'update-user-pass' => '
UPDATE wpvk_users
SET user_pass = :hash
WHERE ID = :uid
',
'insert-group' => '',
'join-group' => '',
'leave-group' => '',
),
'users' => array(
array(
'user' => 'admin',
'pass' => 'pass',
'name' => 'admin',
'mail' => 'admin@example.com',
'grps' =>
array(
0 => 'group10',
),
),
array(
'user' => 'test1',
'pass' => 'pass',
'name' => 'Test1 Subscriber',
'mail' => 'test1@example.com',
'grps' =>
array(
0 => 'group0',
),
),
array(
'user' => 'test2',
'pass' => 'pass',
'name' => 'Test2 Contributor',
'mail' => 'test2@example.com',
'grps' =>
array(
0 => 'group1',
),
),
array(
'user' => 'test3',
'pass' => 'pass',
'name' => 'Test3 Author',
'mail' => 'test3@example.com',
'grps' =>
array(
0 => 'group2',
),
),
),
);

View File

@ -0,0 +1,130 @@
-- phpMyAdmin SQL Dump
-- version 4.0.10.7
-- http://www.phpmyadmin.net
--
-- Host: localhost:3306
-- Generation Time: Feb 10, 2016 at 02:02 PM
-- Server version: 10.0.23-MariaDB
-- PHP Version: 5.4.31
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- Database: `dokuwiki_wp240`
--
-- --------------------------------------------------------
--
-- Table structure for table `wpvk_usermeta`
--
CREATE TABLE IF NOT EXISTS `wpvk_usermeta` (
`umeta_id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_id` bigint(20) unsigned NOT NULL DEFAULT '0',
`meta_key` varchar(255) DEFAULT NULL,
`meta_value` longtext,
PRIMARY KEY (`umeta_id`),
KEY `user_id` (`user_id`),
KEY `meta_key` (`meta_key`(191))
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=52 ;
--
-- Dumping data for table `wpvk_usermeta`
--
INSERT INTO `wpvk_usermeta` (`umeta_id`, `user_id`, `meta_key`, `meta_value`) VALUES
(1, 1, 'nickname', 'admin'),
(2, 1, 'first_name', 'First'),
(3, 1, 'last_name', 'Last'),
(4, 1, 'description', ''),
(5, 1, 'rich_editing', 'true'),
(6, 1, 'comment_shortcuts', 'false'),
(7, 1, 'admin_color', 'fresh'),
(8, 1, 'use_ssl', '0'),
(9, 1, 'show_admin_bar_front', 'true'),
(10, 1, 'wpvk_capabilities', 'a:1:{s:13:"administrator";b:1;}'),
(11, 1, 'wpvk_user_level', '10'),
(12, 1, 'dismissed_wp_pointers', ''),
(13, 1, 'show_welcome_panel', '1'),
(14, 1, 'session_tokens', 'a:1:{s:64:"3e9f99a7068bf3fb79f50e111b6ef10f599beb466c27152205d4b89360c5004d";a:4:{s:10:"expiration";i:1456340157;s:2:"ip";s:12:"86.56.56.217";s:2:"ua";s:104:"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.82 Safari/537.36";s:5:"login";i:1455130557;}}'),
(15, 1, 'wpvk_dashboard_quick_press_last_post_id', '3'),
(16, 2, 'nickname', 'test1'),
(17, 2, 'first_name', 'Test1'),
(18, 2, 'last_name', 'Subscriber'),
(19, 2, 'description', ''),
(20, 2, 'rich_editing', 'true'),
(21, 2, 'comment_shortcuts', 'false'),
(22, 2, 'admin_color', 'fresh'),
(23, 2, 'use_ssl', '0'),
(24, 2, 'show_admin_bar_front', 'true'),
(25, 2, 'wpvk_capabilities', 'a:1:{s:10:"subscriber";b:1;}'),
(26, 2, 'wpvk_user_level', '0'),
(27, 2, 'dismissed_wp_pointers', ''),
(28, 3, 'nickname', 'test2'),
(29, 3, 'first_name', 'Test2'),
(30, 3, 'last_name', 'Contributor'),
(31, 3, 'description', ''),
(32, 3, 'rich_editing', 'true'),
(33, 3, 'comment_shortcuts', 'false'),
(34, 3, 'admin_color', 'fresh'),
(35, 3, 'use_ssl', '0'),
(36, 3, 'show_admin_bar_front', 'true'),
(37, 3, 'wpvk_capabilities', 'a:1:{s:11:"contributor";b:1;}'),
(38, 3, 'wpvk_user_level', '1'),
(39, 3, 'dismissed_wp_pointers', ''),
(40, 4, 'nickname', 'test3'),
(41, 4, 'first_name', 'Test3'),
(42, 4, 'last_name', 'Author'),
(43, 4, 'description', ''),
(44, 4, 'rich_editing', 'true'),
(45, 4, 'comment_shortcuts', 'false'),
(46, 4, 'admin_color', 'fresh'),
(47, 4, 'use_ssl', '0'),
(48, 4, 'show_admin_bar_front', 'true'),
(49, 4, 'wpvk_capabilities', 'a:1:{s:6:"author";b:1;}'),
(50, 4, 'wpvk_user_level', '2'),
(51, 4, 'dismissed_wp_pointers', '');
-- --------------------------------------------------------
--
-- Table structure for table `wpvk_users`
--
CREATE TABLE IF NOT EXISTS `wpvk_users` (
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`user_login` varchar(60) NOT NULL DEFAULT '',
`user_pass` varchar(255) NOT NULL DEFAULT '',
`user_nicename` varchar(50) NOT NULL DEFAULT '',
`user_email` varchar(100) NOT NULL DEFAULT '',
`user_url` varchar(100) NOT NULL DEFAULT '',
`user_registered` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`user_activation_key` varchar(255) NOT NULL DEFAULT '',
`user_status` int(11) NOT NULL DEFAULT '0',
`display_name` varchar(250) NOT NULL DEFAULT '',
PRIMARY KEY (`ID`),
KEY `user_login_key` (`user_login`),
KEY `user_nicename` (`user_nicename`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
--
-- Dumping data for table `wpvk_users`
--
INSERT INTO `wpvk_users` (`ID`, `user_login`, `user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `user_status`, `display_name`) VALUES
(1, 'admin', '$P$BlO2X5nM.djjfsPjOBHz97GHZmpBRr.', 'admin', 'admin@example.com', '', '2016-02-10 18:55:26', '', 0, 'admin'),
(2, 'test1', '$P$B3BfWySh.ymDeURK0OXMFo4vh4JprO0', 'test1', 'test1@example.com', '', '2016-02-10 18:57:47', '', 0, 'Test1 Subscriber'),
(3, 'test2', '$P$BMNEUEo5nalKEswryuP69KXEfz8Y.z.', 'test2', 'test2@example.com', '', '2016-02-10 18:58:32', '', 0, 'Test2 Contributor'),
(4, 'test3', '$P$B2PP3AP6NF/jLO0HYu3xf577rBnp2j.', 'test3', 'test3@example.com', '', '2016-02-10 18:59:19', '', 0, 'Test3 Author');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

View File

@ -0,0 +1,13 @@
<?php
/**
* pgsql tests for the authpdo plugin
*
* @group plugin_authpdo
* @group plugins
*/
class pgsql_plugin_authpdo_test extends mysql_plugin_authpdo_test {
protected $driver = 'pgsql';
}

View File

@ -0,0 +1,140 @@
<?php
/**
* Django application config
*
*/
/** @noinspection SqlResolve */
$data = array(
'passcrypt' => 'djangopbkdf2_sha256',
'conf' => array(
'select-user' => '
SELECT id AS uid,
username AS "user",
CONCAT_WS(\' \', first_name, last_name) AS name,
password AS hash,
email AS mail
FROM auth_user
WHERE username = :user
',
'select-user-groups' => '
SELECT G.name AS "group"
FROM auth_group G, auth_user_groups UG
WHERE UG.user_id = :uid
AND UG.group_id = G.id
',
'select-groups' => '
SELECT id AS gid, name AS "group"
FROM auth_group
',
'insert-user' => '
INSERT INTO auth_user
(password, is_superuser, username, first_name, last_name, email, is_staff, is_active, date_joined)
VALUES (:hash, false, :user, SPLIT_PART(:name,\' \',1), SPLIT_PART(:name,\' \',2), :mail, false, true, NOW())
',
'delete-user' => '
DELETE FROM auth_user_user_permissions
WHERE user_id = :uid
;
DELETE FROM auth_user
WHERE id = :uid
',
'list-users' => '
SELECT DISTINCT U.username AS "user"
FROM auth_user U, auth_user_groups UG, auth_group G
WHERE U.id = UG.user_id
AND G.id = UG.group_id
AND G.name LIKE :group
AND U.username LIKE :user
AND CONCAT_WS(\' \', U.first_name, U.last_name) LIKE :name
AND U.email LIKE :mail
ORDER BY username
LIMIT :limit
OFFSET :start
',
'count-users' => '
SELECT COUNT(DISTINCT U.username) AS count
FROM auth_user U, auth_user_groups UG, auth_group G
WHERE U.id = UG.user_id
AND G.id = UG.group_id
AND G.name LIKE :group
AND U.username LIKE :user
AND CONCAT_WS(\' \', U.first_name, U.last_name) LIKE :name
AND U.email LIKE :mail
',
'update-user-info' => '
UPDATE auth_user
SET first_name = SPLIT_PART(:name,\' \',1),
last_name = SPLIT_PART(:name,\' \',2),
email = :mail
WHERE id = :uid
',
'update-user-login' => '
UPDATE auth_user
SET username = :newlogin
WHERE id = :uid
',
'update-user-pass' => '
UPDATE auth_user
SET password = :hash
WHERE id = :uid
',
'insert-group' => '
INSERT INTO auth_group (name) VALUES (:group)
',
'join-group' => '
INSERT INTO auth_user_groups (user_id, group_id) VALUES (:uid, :gid)
',
'leave-group' => '
DELETE FROM auth_user_groups
WHERE user_id = :uid
AND group_id = :gid
',
),
'users' => array(
array(
'user' => 'test-billing',
'pass' => 'P4zzW0rd!',
'name' => 'Joana Gröschel',
'mail' => 'jg@billing.com',
'grps' =>
array(
0 => 'Billing',
),
),
array(
'user' => 'test-kunde',
'pass' => 'P4zzW0rd!',
'name' => 'Niels Buchberger',
'mail' => 'ng@kunde.com',
'grps' =>
array(
0 => 'Kunden',
),
),
array(
'user' => 'test-mitarbeiter',
'pass' => 'P4zzW0rd!',
'name' => 'Claus Wernke',
'mail' => 'cw@mitarbeiter.com',
'grps' =>
array(
0 => 'Mitarbeiter',
),
),
array(
'user' => 'test-projektleiter',
'pass' => 'P4zzW0rd!',
'name' => 'Sascha Weiher',
'mail' => 'sw@projektleiter.com',
'grps' =>
array(
0 => 'Projektleiter',
),
),
),
);
// passwords in the dump use the newest format, we need PHP support for that
if(!function_exists('hash_pbkdf2') || !in_array('sha256', hash_algos())){
$data = 'missing pbkdf2 hash support to check passwords - django test has to be skipped';
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,218 @@
<?php
/**
* Class testable_auth_plugin_authpdo
*
* makes protected methods public for testing
*/
class testable_auth_plugin_authpdo extends auth_plugin_authpdo {
public function getPluginName() {
return 'authpdo';
}
public function selectGroups() {
return parent::selectGroups();
}
public function addGroup($group) {
return parent::addGroup($group);
}
}
/**
* General tests for the authpdo plugin
*
* @group plugin_authpdo
* @group plugins
*/
class sqlite_plugin_authpdo_test extends DokuWikiTest {
protected $dbfile;
public function test_pdo_sqlite_support() {
if(!class_exists('PDO') || !in_array('sqlite',PDO::getAvailableDrivers())) {
$this->markTestSkipped('skipping all authpdo tests for sqlite. Need PDO_sqlite extension');
}
$this->assertTrue(true); // avoid being marked as risky for having no assertion
}
public function setUp() : void {
parent::setUp();
$this->dbfile = tempnam('/tmp/', 'pluginpdo_test_');
copy(__DIR__ . '/test.sqlite3', $this->dbfile);
global $conf;
$conf['plugin']['authpdo']['debug'] = 1;
$conf['plugin']['authpdo']['dsn'] = 'sqlite:' . $this->dbfile;
$conf['plugin']['authpdo']['user'] = '';
$conf['plugin']['authpdo']['pass'] = '';
$conf['plugin']['authpdo']['select-user'] = 'SELECT id AS uid, login AS user, name, pass AS clear, mail FROM user WHERE login = :user';
$conf['plugin']['authpdo']['select-user-groups'] = 'SELECT * FROM member AS m, "group" AS g WHERE m.gid = g.id AND m.uid = :uid';
$conf['plugin']['authpdo']['select-groups'] = 'SELECT id AS gid, "group" FROM "group"';
$conf['plugin']['authpdo']['insert-user'] = 'INSERT INTO user (login, pass, name, mail) VALUES (:user, :hash, :name, :mail)';
$conf['plugin']['authpdo']['delete-user'] = 'DELETE FROM user WHERE id = :uid';
$conf['plugin']['authpdo']['list-users'] = 'SELECT DISTINCT login as user
FROM user U, member M, "group" G
WHERE U.id = M.uid
AND M.gid = G.id
AND G."group" LIKE :group
AND U.login LIKE :user
AND U.name LIKE :name
AND U.mail LIKE :mail
ORDER BY login
LIMIT :start,:limit';
$conf['plugin']['authpdo']['count-users'] = 'SELECT COUNT(DISTINCT login) as count
FROM user U, member M, "group" G
WHERE U.id = M.uid
AND M.gid = G.id
AND G."group" LIKE :group
AND U.login LIKE :user
AND U.name LIKE :name
AND U.mail LIKE :mail';
$conf['plugin']['authpdo']['update-user-login'] = 'UPDATE user SET login = :newlogin WHERE id = :uid';
$conf['plugin']['authpdo']['update-user-info'] = 'UPDATE user SET name = :name, mail = :mail WHERE id = :uid';
$conf['plugin']['authpdo']['update-user-pass'] = 'UPDATE user SET pass = :hash WHERE id = :uid';
$conf['plugin']['authpdo']['insert-group'] = 'INSERT INTO "group" ("group") VALUES (:group)';
$conf['plugin']['authpdo']['join-group'] = 'INSERT INTO member (uid, gid) VALUES (:uid, :gid)';
$conf['plugin']['authpdo']['leave-group'] = 'DELETE FROM member WHERE uid = :uid AND gid = :gid';
}
public function tearDown() : void {
parent::tearDown();
unlink($this->dbfile);
}
/**
* @depends test_pdo_sqlite_support
*/
public function test_internals() {
$auth = new testable_auth_plugin_authpdo();
$groups = $auth->selectGroups();
$this->assertArrayHasKey('user', $groups);
$this->assertEquals(1, $groups['user']['gid']);
$this->assertArrayHasKey('admin', $groups);
$this->assertEquals(2, $groups['admin']['gid']);
$ok = $auth->addGroup('test');
$this->assertTrue($ok);
$groups = $auth->selectGroups();
$this->assertArrayHasKey('test', $groups);
$this->assertEquals(4, $groups['test']['gid']);
}
/**
* @depends test_pdo_sqlite_support
*/
public function test_userinfo() {
global $conf;
$auth = new auth_plugin_authpdo();
// clear text pasword (with default config above
$this->assertFalse($auth->checkPass('nobody', 'nope'));
$this->assertFalse($auth->checkPass('admin', 'nope'));
$this->assertTrue($auth->checkPass('admin', 'password'));
// now with a hashed password
$conf['plugin']['authpdo']['select-user'] = 'SELECT id AS uid, login AS user, name, pass AS hash, mail FROM user WHERE login = :user';
$this->assertFalse($auth->checkPass('admin', 'password'));
$this->assertFalse($auth->checkPass('user', md5('password')));
// access user data
$info = $auth->getUserData('admin');
$this->assertEquals('admin', $info['user']);
$this->assertEquals('The Admin', $info['name']);
$this->assertEquals('admin@example.com', $info['mail']);
$this->assertEquals(array('additional', 'admin', 'user'), $info['grps']);
// group retrieval
$this->assertEquals(array('additional', 'admin', 'user'), $auth->retrieveGroups());
$this->assertEquals(array('admin', 'user'), $auth->retrieveGroups(1));
$this->assertEquals(array('additional'), $auth->retrieveGroups(0, 1));
// user creation
$auth->createUser('test', 'password', 'A Test user', 'test@example.com', array('newgroup'));
$info = $auth->getUserData('test');
$this->assertEquals('test', $info['user']);
$this->assertEquals('A Test user', $info['name']);
$this->assertEquals('test@example.com', $info['mail']);
$this->assertEquals(array('newgroup', 'user'), $info['grps']);
$this->assertEquals(array('additional', 'admin', 'newgroup', 'user'), $auth->retrieveGroups());
// user modification
$auth->modifyUser('test', array('user' => 'tester', 'name' => 'The Test User', 'pass' => 'secret'));
$info = $auth->getUserData('tester');
$this->assertEquals('tester', $info['user']);
$this->assertEquals('The Test User', $info['name']);
$this->assertTrue($auth->checkPass('tester','secret'));
// move user to different groups
$auth->modifyUser('tester', array('grps' => array('user', 'admin', 'another')));
$info = $auth->getUserData('tester');
$this->assertEquals(array('admin', 'another', 'user'), $info['grps']);
$expect = array(
'admin' => array(
'user' => 'admin',
'name' => 'The Admin',
'mail' => 'admin@example.com',
'uid' => '1',
'grps' => array('additional', 'admin', 'user')
),
'user' => array(
'user' => 'user',
'name' => 'A normal user',
'mail' => 'user@example.com',
'uid' => '2',
'grps' => array('user')
),
'tester' => array(
'user' => 'tester',
'name' => 'The Test User',
'mail' => 'test@example.com',
'uid' => '3',
'grps' => array('admin', 'another', 'user')
)
);
// list users
$users = $auth->retrieveUsers();
$this->assertEquals(array($expect['admin'], $expect['tester'], $expect['user']), $users);
$users = $auth->retrieveUsers(1); // offset
$this->assertEquals(array($expect['tester'], $expect['user']), $users);
$users = $auth->retrieveUsers(1, 1); // offset + limit
$this->assertEquals(array($expect['tester']), $users);
$users = $auth->retrieveUsers(0, -1, array('group' => 'admin')); // full group
$this->assertEquals(array($expect['admin'], $expect['tester']), $users);
$count = $auth->getUserCount(array('grps' => 'admin'));
$this->assertSame(2, $count);
$users = $auth->retrieveUsers(0, -1, array('group' => 'dmi')); // substring
$this->assertEquals(array($expect['admin'], $expect['tester']), $users);
$count = $auth->getUserCount(array('grps' => 'dmi'));
$this->assertSame(2, $count);
$users = $auth->retrieveUsers(0, -1, array('user' => 'dmi')); // substring
$this->assertEquals(array($expect['admin']), $users);
$count = $auth->getUserCount(array('user' => 'dmi'));
$this->assertSame(1, $count);
// delete user
$num = $auth->deleteUsers(array('tester', 'foobar'));
$this->assertSame(1, $num);
}
}

View File

@ -0,0 +1,828 @@
<?php
use dokuwiki\Utf8\Sort;
/**
* DokuWiki Plugin authpdo (Auth Component)
*
* @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
* @author Andreas Gohr <andi@splitbrain.org>
*/
/**
* Class auth_plugin_authpdo
*/
class auth_plugin_authpdo extends DokuWiki_Auth_Plugin
{
/** @var PDO */
protected $pdo;
/** @var null|array The list of all groups */
protected $groupcache = null;
/**
* Constructor.
*/
public function __construct()
{
parent::__construct(); // for compatibility
if (!class_exists('PDO')) {
$this->debugMsg('PDO extension for PHP not found.', -1, __LINE__);
$this->success = false;
return;
}
if (!$this->getConf('dsn')) {
$this->debugMsg('No DSN specified', -1, __LINE__);
$this->success = false;
return;
}
try {
$this->pdo = new PDO(
$this->getConf('dsn'),
$this->getConf('user'),
conf_decodeString($this->getConf('pass')),
array(
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // always fetch as array
PDO::ATTR_EMULATE_PREPARES => true, // emulating prepares allows us to reuse param names
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // we want exceptions, not error codes
)
);
} catch (PDOException $e) {
$this->debugMsg($e);
msg($this->getLang('connectfail'), -1);
$this->success = false;
return;
}
// can Users be created?
$this->cando['addUser'] = $this->checkConfig(
array(
'select-user',
'select-user-groups',
'select-groups',
'insert-user',
'insert-group',
'join-group'
)
);
// can Users be deleted?
$this->cando['delUser'] = $this->checkConfig(
array(
'select-user',
'select-user-groups',
'select-groups',
'leave-group',
'delete-user'
)
);
// can login names be changed?
$this->cando['modLogin'] = $this->checkConfig(
array(
'select-user',
'select-user-groups',
'update-user-login'
)
);
// can passwords be changed?
$this->cando['modPass'] = $this->checkConfig(
array(
'select-user',
'select-user-groups',
'update-user-pass'
)
);
// can real names be changed?
$this->cando['modName'] = $this->checkConfig(
array(
'select-user',
'select-user-groups',
'update-user-info:name'
)
);
// can real email be changed?
$this->cando['modMail'] = $this->checkConfig(
array(
'select-user',
'select-user-groups',
'update-user-info:mail'
)
);
// can groups be changed?
$this->cando['modGroups'] = $this->checkConfig(
array(
'select-user',
'select-user-groups',
'select-groups',
'leave-group',
'join-group',
'insert-group'
)
);
// can a filtered list of users be retrieved?
$this->cando['getUsers'] = $this->checkConfig(
array(
'list-users'
)
);
// can the number of users be retrieved?
$this->cando['getUserCount'] = $this->checkConfig(
array(
'count-users'
)
);
// can a list of available groups be retrieved?
$this->cando['getGroups'] = $this->checkConfig(
array(
'select-groups'
)
);
$this->success = true;
}
/**
* Check user+password
*
* @param string $user the user name
* @param string $pass the clear text password
* @return bool
*/
public function checkPass($user, $pass)
{
$userdata = $this->selectUser($user);
if ($userdata == false) return false;
// password checking done in SQL?
if ($this->checkConfig(array('check-pass'))) {
$userdata['clear'] = $pass;
$userdata['hash'] = auth_cryptPassword($pass);
$result = $this->query($this->getConf('check-pass'), $userdata);
if ($result === false) return false;
return (count($result) == 1);
}
// we do password checking on our own
if (isset($userdata['hash'])) {
// hashed password
$passhash = new \dokuwiki\PassHash();
return $passhash->verify_hash($pass, $userdata['hash']);
} else {
// clear text password in the database O_o
return ($pass === $userdata['clear']);
}
}
/**
* Return user info
*
* Returns info about the given user needs to contain
* at least these fields:
*
* name string full name of the user
* mail string email addres of the user
* grps array list of groups the user is in
*
* @param string $user the user name
* @param bool $requireGroups whether or not the returned data must include groups
* @return array|bool containing user data or false
*/
public function getUserData($user, $requireGroups = true)
{
$data = $this->selectUser($user);
if ($data == false) return false;
if (isset($data['hash'])) unset($data['hash']);
if (isset($data['clean'])) unset($data['clean']);
if ($requireGroups) {
$data['grps'] = $this->selectUserGroups($data);
if ($data['grps'] === false) return false;
}
return $data;
}
/**
* Create a new User [implement only where required/possible]
*
* Returns false if the user already exists, null when an error
* occurred and true if everything went well.
*
* The new user HAS TO be added to the default group by this
* function!
*
* Set addUser capability when implemented
*
* @param string $user
* @param string $clear
* @param string $name
* @param string $mail
* @param null|array $grps
* @return bool|null
*/
public function createUser($user, $clear, $name, $mail, $grps = null)
{
global $conf;
if (($info = $this->getUserData($user, false)) !== false) {
msg($this->getLang('userexists'), -1);
return false; // user already exists
}
// prepare data
if ($grps == null) $grps = array();
array_unshift($grps, $conf['defaultgroup']);
$grps = array_unique($grps);
$hash = auth_cryptPassword($clear);
$userdata = compact('user', 'clear', 'hash', 'name', 'mail');
// action protected by transaction
$this->pdo->beginTransaction();
{
// insert the user
$ok = $this->query($this->getConf('insert-user'), $userdata);
if ($ok === false) goto FAIL;
$userdata = $this->getUserData($user, false);
if ($userdata === false) goto FAIL;
// create all groups that do not exist, the refetch the groups
$allgroups = $this->selectGroups();
foreach ($grps as $group) {
if (!isset($allgroups[$group])) {
$ok = $this->addGroup($group);
if ($ok === false) goto FAIL;
}
}
$allgroups = $this->selectGroups();
// add user to the groups
foreach ($grps as $group) {
$ok = $this->joinGroup($userdata, $allgroups[$group]);
if ($ok === false) goto FAIL;
}
}
$this->pdo->commit();
return true;
// something went wrong, rollback
FAIL:
$this->pdo->rollBack();
$this->debugMsg('Transaction rolled back', 0, __LINE__);
msg($this->getLang('writefail'), -1);
return null; // return error
}
/**
* Modify user data
*
* @param string $user nick of the user to be changed
* @param array $changes array of field/value pairs to be changed (password will be clear text)
* @return bool
*/
public function modifyUser($user, $changes)
{
// secure everything in transaction
$this->pdo->beginTransaction();
{
$olddata = $this->getUserData($user);
$oldgroups = $olddata['grps'];
unset($olddata['grps']);
// changing the user name?
if (isset($changes['user'])) {
if ($this->getUserData($changes['user'], false)) goto FAIL;
$params = $olddata;
$params['newlogin'] = $changes['user'];
$ok = $this->query($this->getConf('update-user-login'), $params);
if ($ok === false) goto FAIL;
}
// changing the password?
if (isset($changes['pass'])) {
$params = $olddata;
$params['clear'] = $changes['pass'];
$params['hash'] = auth_cryptPassword($changes['pass']);
$ok = $this->query($this->getConf('update-user-pass'), $params);
if ($ok === false) goto FAIL;
}
// changing info?
if (isset($changes['mail']) || isset($changes['name'])) {
$params = $olddata;
if (isset($changes['mail'])) $params['mail'] = $changes['mail'];
if (isset($changes['name'])) $params['name'] = $changes['name'];
$ok = $this->query($this->getConf('update-user-info'), $params);
if ($ok === false) goto FAIL;
}
// changing groups?
if (isset($changes['grps'])) {
$allgroups = $this->selectGroups();
// remove membership for previous groups
foreach ($oldgroups as $group) {
if (!in_array($group, $changes['grps']) && isset($allgroups[$group])) {
$ok = $this->leaveGroup($olddata, $allgroups[$group]);
if ($ok === false) goto FAIL;
}
}
// create all new groups that are missing
$added = 0;
foreach ($changes['grps'] as $group) {
if (!isset($allgroups[$group])) {
$ok = $this->addGroup($group);
if ($ok === false) goto FAIL;
$added++;
}
}
// reload group info
if ($added > 0) $allgroups = $this->selectGroups();
// add membership for new groups
foreach ($changes['grps'] as $group) {
if (!in_array($group, $oldgroups)) {
$ok = $this->joinGroup($olddata, $allgroups[$group]);
if ($ok === false) goto FAIL;
}
}
}
}
$this->pdo->commit();
return true;
// something went wrong, rollback
FAIL:
$this->pdo->rollBack();
$this->debugMsg('Transaction rolled back', 0, __LINE__);
msg($this->getLang('writefail'), -1);
return false; // return error
}
/**
* Delete one or more users
*
* Set delUser capability when implemented
*
* @param array $users
* @return int number of users deleted
*/
public function deleteUsers($users)
{
$count = 0;
foreach ($users as $user) {
if ($this->deleteUser($user)) $count++;
}
return $count;
}
/**
* Bulk retrieval of user data [implement only where required/possible]
*
* Set getUsers capability when implemented
*
* @param int $start index of first user to be returned
* @param int $limit max number of users to be returned
* @param array $filter array of field/pattern pairs, null for no filter
* @return array list of userinfo (refer getUserData for internal userinfo details)
*/
public function retrieveUsers($start = 0, $limit = -1, $filter = null)
{
if ($limit < 0) $limit = 10000; // we don't support no limit
if (is_null($filter)) $filter = array();
if (isset($filter['grps'])) $filter['group'] = $filter['grps'];
foreach (array('user', 'name', 'mail', 'group') as $key) {
if (!isset($filter[$key])) {
$filter[$key] = '%';
} else {
$filter[$key] = '%' . $filter[$key] . '%';
}
}
$filter['start'] = (int)$start;
$filter['end'] = (int)$start + $limit;
$filter['limit'] = (int)$limit;
$result = $this->query($this->getConf('list-users'), $filter);
if (!$result) return array();
$users = array();
if (is_array($result)) {
foreach ($result as $row) {
if (!isset($row['user'])) {
$this->debugMsg("list-users statement did not return 'user' attribute", -1, __LINE__);
return array();
}
$users[] = $this->getUserData($row['user']);
}
} else {
$this->debugMsg("list-users statement did not return a list of result", -1, __LINE__);
}
return $users;
}
/**
* Return a count of the number of user which meet $filter criteria
*
* @param array $filter array of field/pattern pairs, empty array for no filter
* @return int
*/
public function getUserCount($filter = array())
{
if (is_null($filter)) $filter = array();
if (isset($filter['grps'])) $filter['group'] = $filter['grps'];
foreach (array('user', 'name', 'mail', 'group') as $key) {
if (!isset($filter[$key])) {
$filter[$key] = '%';
} else {
$filter[$key] = '%' . $filter[$key] . '%';
}
}
$result = $this->query($this->getConf('count-users'), $filter);
if (!$result || !isset($result[0]['count'])) {
$this->debugMsg("Statement did not return 'count' attribute", -1, __LINE__);
}
return (int)$result[0]['count'];
}
/**
* Create a new group with the given name
*
* @param string $group
* @return bool
*/
public function addGroup($group)
{
$sql = $this->getConf('insert-group');
$result = $this->query($sql, array(':group' => $group));
$this->clearGroupCache();
if ($result === false) return false;
return true;
}
/**
* Retrieve groups
*
* Set getGroups capability when implemented
*
* @param int $start
* @param int $limit
* @return array
*/
public function retrieveGroups($start = 0, $limit = 0)
{
$groups = array_keys($this->selectGroups());
if ($groups === false) return array();
if (!$limit) {
return array_splice($groups, $start);
} else {
return array_splice($groups, $start, $limit);
}
}
/**
* Select data of a specified user
*
* @param string $user the user name
* @return bool|array user data, false on error
*/
protected function selectUser($user)
{
$sql = $this->getConf('select-user');
$result = $this->query($sql, array(':user' => $user));
if (!$result) return false;
if (count($result) > 1) {
$this->debugMsg('Found more than one matching user', -1, __LINE__);
return false;
}
$data = array_shift($result);
$dataok = true;
if (!isset($data['user'])) {
$this->debugMsg("Statement did not return 'user' attribute", -1, __LINE__);
$dataok = false;
}
if (!isset($data['hash']) && !isset($data['clear']) && !$this->checkConfig(array('check-pass'))) {
$this->debugMsg("Statement did not return 'clear' or 'hash' attribute", -1, __LINE__);
$dataok = false;
}
if (!isset($data['name'])) {
$this->debugMsg("Statement did not return 'name' attribute", -1, __LINE__);
$dataok = false;
}
if (!isset($data['mail'])) {
$this->debugMsg("Statement did not return 'mail' attribute", -1, __LINE__);
$dataok = false;
}
if (!$dataok) return false;
return $data;
}
/**
* Delete a user after removing all their group memberships
*
* @param string $user
* @return bool true when the user was deleted
*/
protected function deleteUser($user)
{
$this->pdo->beginTransaction();
{
$userdata = $this->getUserData($user);
if ($userdata === false) goto FAIL;
$allgroups = $this->selectGroups();
// remove group memberships (ignore errors)
foreach ($userdata['grps'] as $group) {
if (isset($allgroups[$group])) {
$this->leaveGroup($userdata, $allgroups[$group]);
}
}
$ok = $this->query($this->getConf('delete-user'), $userdata);
if ($ok === false) goto FAIL;
}
$this->pdo->commit();
return true;
FAIL:
$this->pdo->rollBack();
return false;
}
/**
* Select all groups of a user
*
* @param array $userdata The userdata as returned by _selectUser()
* @return array|bool list of group names, false on error
*/
protected function selectUserGroups($userdata)
{
global $conf;
$sql = $this->getConf('select-user-groups');
$result = $this->query($sql, $userdata);
if ($result === false) return false;
$groups = array($conf['defaultgroup']); // always add default config
if (is_array($result)) {
foreach ($result as $row) {
if (!isset($row['group'])) {
$this->debugMsg("No 'group' field returned in select-user-groups statement", -1, __LINE__);
return false;
}
$groups[] = $row['group'];
}
} else {
$this->debugMsg("select-user-groups statement did not return a list of result", -1, __LINE__);
}
$groups = array_unique($groups);
Sort::sort($groups);
return $groups;
}
/**
* Select all available groups
*
* @return array|bool list of all available groups and their properties
*/
protected function selectGroups()
{
if ($this->groupcache) return $this->groupcache;
$sql = $this->getConf('select-groups');
$result = $this->query($sql);
if ($result === false) return false;
$groups = array();
if (is_array($result)) {
foreach ($result as $row) {
if (!isset($row['group'])) {
$this->debugMsg("No 'group' field returned from select-groups statement", -1, __LINE__);
return false;
}
// relayout result with group name as key
$group = $row['group'];
$groups[$group] = $row;
}
} else {
$this->debugMsg("select-groups statement did not return a list of result", -1, __LINE__);
}
Sort::ksort($groups);
return $groups;
}
/**
* Remove all entries from the group cache
*/
protected function clearGroupCache()
{
$this->groupcache = null;
}
/**
* Adds the user to the group
*
* @param array $userdata all the user data
* @param array $groupdata all the group data
* @return bool
*/
protected function joinGroup($userdata, $groupdata)
{
$data = array_merge($userdata, $groupdata);
$sql = $this->getConf('join-group');
$result = $this->query($sql, $data);
if ($result === false) return false;
return true;
}
/**
* Removes the user from the group
*
* @param array $userdata all the user data
* @param array $groupdata all the group data
* @return bool
*/
protected function leaveGroup($userdata, $groupdata)
{
$data = array_merge($userdata, $groupdata);
$sql = $this->getConf('leave-group');
$result = $this->query($sql, $data);
if ($result === false) return false;
return true;
}
/**
* Executes a query
*
* @param string $sql The SQL statement to execute
* @param array $arguments Named parameters to be used in the statement
* @return array|int|bool The result as associative array for SELECTs, affected rows for others, false on error
*/
protected function query($sql, $arguments = array())
{
$sql = trim($sql);
if (empty($sql)) {
$this->debugMsg('No SQL query given', -1, __LINE__);
return false;
}
// execute
$params = array();
$sth = $this->pdo->prepare($sql);
$result = false;
try {
// prepare parameters - we only use those that exist in the SQL
foreach ($arguments as $key => $value) {
if (is_array($value)) continue;
if (is_object($value)) continue;
if ($key[0] != ':') $key = ":$key"; // prefix with colon if needed
if (strpos($sql, $key) === false) continue; // skip if parameter is missing
if (is_int($value)) {
$sth->bindValue($key, $value, PDO::PARAM_INT);
} else {
$sth->bindValue($key, $value);
}
$params[$key] = $value; //remember for debugging
}
$sth->execute();
// only report last line's result
$hasnextrowset = true;
$currentsql = $sql;
while ($hasnextrowset) {
if (strtolower(substr($currentsql, 0, 6)) == 'select') {
$result = $sth->fetchAll();
} else {
$result = $sth->rowCount();
}
$semi_pos = strpos($currentsql, ';');
if ($semi_pos) {
$currentsql = trim(substr($currentsql, $semi_pos + 1));
}
try {
$hasnextrowset = $sth->nextRowset(); // run next rowset
} catch (PDOException $rowset_e) {
$hasnextrowset = false; // driver does not support multi-rowset, should be executed in one time
}
}
} catch (Exception $e) {
// report the caller's line
$trace = debug_backtrace();
$line = $trace[0]['line'];
$dsql = $this->debugSQL($sql, $params, !defined('DOKU_UNITTEST'));
$this->debugMsg($e, -1, $line);
$this->debugMsg("SQL: <pre>$dsql</pre>", -1, $line);
}
$sth->closeCursor();
$sth = null;
return $result;
}
/**
* Wrapper around msg() but outputs only when debug is enabled
*
* @param string|Exception $message
* @param int $err
* @param int $line
*/
protected function debugMsg($message, $err = 0, $line = 0)
{
if (!$this->getConf('debug')) return;
if (is_a($message, 'Exception')) {
$err = -1;
$msg = $message->getMessage();
if (!$line) $line = $message->getLine();
} else {
$msg = $message;
}
if (defined('DOKU_UNITTEST')) {
printf("\n%s, %s:%d\n", $msg, __FILE__, $line);
} else {
msg('authpdo: ' . $msg, $err, $line, __FILE__);
}
}
/**
* Check if the given config strings are set
*
* @param string[] $keys
* @return bool
* @author Matthias Grimm <matthiasgrimm@users.sourceforge.net>
*
*/
protected function checkConfig($keys)
{
foreach ($keys as $key) {
$params = explode(':', $key);
$key = array_shift($params);
$sql = trim($this->getConf($key));
// check if sql is set
if (!$sql) return false;
// check if needed params are there
foreach ($params as $param) {
if (strpos($sql, ":$param") === false) return false;
}
}
return true;
}
/**
* create an approximation of the SQL string with parameters replaced
*
* @param string $sql
* @param array $params
* @param bool $htmlescape Should the result be escaped for output in HTML?
* @return string
*/
protected function debugSQL($sql, $params, $htmlescape = true)
{
foreach ($params as $key => $val) {
if (is_int($val)) {
$val = $this->pdo->quote($val, PDO::PARAM_INT);
} elseif (is_bool($val)) {
$val = $this->pdo->quote($val, PDO::PARAM_BOOL);
} elseif (is_null($val)) {
$val = 'NULL';
} else {
$val = $this->pdo->quote($val);
}
$sql = str_replace($key, $val, $sql);
}
if ($htmlescape) $sql = hsc($sql);
return $sql;
}
}
// vim:ts=4:sw=4:et:

View File

@ -0,0 +1,118 @@
<?php
/**
* Default settings for the authpdo plugin
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
$conf['debug'] = 0;
$conf['dsn'] = '';
$conf['user'] = '';
$conf['pass'] = '';
/**
* statement to select a single user identified by its login name
*
* input: :user
* return: user, name, mail, (clear|hash), [uid], [*]
*/
$conf['select-user'] = '';
/**
* statement to check the password in SQL, optional when above returned clear or hash
*
* input: :user, :clear, :hash, [uid], [*]
* return: *
*/
$conf['check-pass'] = '';
/**
* statement to select a single user identified by its login name
*
* input: :user, [uid]
* return: group
*/
$conf['select-user-groups'] = '';
/**
* Select all the existing group names
*
* return: group, [gid], [*]
*/
$conf['select-groups'] = '';
/**
* Create a new user
*
* input: :user, :name, :mail, (:clear|:hash)
*/
$conf['insert-user'] = '';
/**
* Remove a user
*
* input: :user, [:uid], [*]
*/
$conf['delete-user'] = '';
/**
* list user names matching the given criteria
*
* Make sure the list is distinct and sorted by user name. Apply the given limit and offset
*
* input: :user, :name, :mail, :group, :start, :end, :limit
* out: user
*/
$conf['list-users'] = '';
/**
* count user names matching the given criteria
*
* Make sure the counted list is distinct
*
* input: :user, :name, :mail, :group
* out: count
*/
$conf['count-users'] = '';
/**
* Update user data (except password and user name)
*
* input: :user, :name, :mail, [:uid], [*]
*/
$conf['update-user-info'] = '';
/**
* Update user name aka login
*
* input: :user, :newlogin, [:uid], [*]
*/
$conf['update-user-login'] = '';
/**
* Update user password
*
* input: :user, :clear, :hash, [:uid], [*]
*/
$conf['update-user-pass'] = '';
/**
* Create a new group
*
* input: :group
*/
$conf['insert-group'] = '';
/**
* Make user join group
*
* input: :user, [:uid], group, [:gid], [*]
*/
$conf['join-group'] = '';
/**
* Make user leave group
*
* input: :user, [:uid], group, [:gid], [*]
*/
$conf['leave-group'] = '';

View File

@ -0,0 +1,25 @@
<?php
/**
* Options for the authpdo plugin
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
$meta['debug'] = array('onoff', '_caution' => 'security');
$meta['dsn'] = array('string', '_caution' => 'danger');
$meta['user'] = array('string', '_caution' => 'danger');
$meta['pass'] = array('password', '_caution' => 'danger', '_code' => 'base64');
$meta['select-user'] = array('', '_caution' => 'danger');
$meta['check-pass'] = array('', '_caution' => 'danger');
$meta['select-user-groups'] = array('', '_caution' => 'danger');
$meta['select-groups'] = array('', '_caution' => 'danger');
$meta['insert-user'] = array('', '_caution' => 'danger');
$meta['delete-user'] = array('', '_caution' => 'danger');
$meta['list-users'] = array('', '_caution' => 'danger');
$meta['count-users'] = array('', '_caution' => 'danger');
$meta['update-user-info'] = array('', '_caution' => 'danger');
$meta['update-user-login'] = array('', '_caution' => 'danger');
$meta['update-user-pass'] = array('', '_caution' => 'danger');
$meta['insert-group'] = array('', '_caution' => 'danger');
$meta['join-group'] = array('', '_caution' => 'danger');
$meta['leave-group'] = array('', '_caution' => 'danger');

View File

@ -0,0 +1,9 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Kiril <neohidra@gmail.com>
*/
$lang['connectfail'] = 'Свързването с базата данни се провали.';
$lang['userexists'] = 'За съжаление вече съществува потребител с това име.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Adolfo Jayme Barrientos <fito@libreoffice.org>
*/
$lang['connectfail'] = 'Ha fallat la connexió a la base de dades.';
$lang['userexists'] = 'Ja existeix un usuari amb aquest nom.';
$lang['writefail'] = 'No es poden modificar les dades de lusuari. Informeu daixò a ladministrador del wiki';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Marc Zulet <marczulet@gmail.com>
* @author Adolfo Jayme Barrientos <fito@libreoffice.org>
*/
$lang['debug'] = 'Mostra missatges d\'error detallats. S\'hauria de desactivar després de la configuració.';
$lang['dsn'] = 'El DNS per a connectar a la base de dades.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author qezwan <qezwan@gmail.com>
*/
$lang['connectfail'] = 'پەیوەندی کردن بە بنکەی زانیاری سەرکەوتوو نەبوو.';
$lang['userexists'] = 'ببوورە، بەکارهێنەرێک بەم زانیارییە بوونی هەیە. ';
$lang['writefail'] = 'ناتوانێت دەستکاری داتای بەکارهێنەر بکات. تکایە ویکی-بەڕێوەبەرەکە بکەرەوە';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author qezwan <qezwan@gmail.com>
*/
$lang['debug'] = 'چاپکردنی پەیامەکانی هەڵەی ورد. پێویستە لە کاربخرێت پاش ئامادەکردن.';
$lang['dsn'] = 'DSN بۆ پەیوەندی کردن بە بنکەی زانیارێکان.';
$lang['user'] = ' (sqliteبەکارهێنەربۆ گرێدانی بنکەی زانیاری سەرەوە (بەتاڵ بۆ ';
$lang['pass'] = ' (sqlite تێپەڕوشە بۆ گرێدانی بنکەی زانیاری سەرەوە (بەتاڵ بۆ';
$lang['select-user'] = 'لێدوانی SQL بۆ دیاریکردنی داتای تاکە بەکارهێنەرێک';
$lang['select-user-groups'] = 'لێدوانی SQL بۆ دیاریکردنی هەموو گرووپەکانی یەک بەکارهێنەر';
$lang['select-groups'] = 'لێدوانی SQL بۆ دیاریکردنی هەموو گروپە بەردەستەکان';
$lang['insert-user'] = 'SQL بەیاننامە بۆ دانانی بەکارهێنەرێکی نوێ بۆ ناو بنکەی زانیاری';
$lang['delete-user'] = 'لێدوانی SQL بۆ لابردنی تاکە بەکارهێنەرێک لە بنکەی زانیارێکان';
$lang['list-users'] = 'لێدوانی SQL بۆ لیستی بەکارهێنەران کە لەگەڵ فلتەرێکدا دەگونجێن';
$lang['count-users'] = 'لێدوانی SQL بۆ ژماردنی بەکارهێنەران کە لەگەڵ فلتەرێکدا دەگونجێن';
$lang['update-user-info'] = 'لێدوانی SQL بۆ نوێکردنەوەی ناوی تەواو و ناونیشانی ئیمەیلی تاکە بەکارهێنەرێک';
$lang['update-user-login'] = 'لێدوانی SQL بۆ نوێکردنەوەی ناوی چوونەژوورەوەی تاکە بەکارهێنەرێک';
$lang['update-user-pass'] = 'لێدوانی SQL بۆ نوێکردنەوەی نهێنوشەی تاکە بەکارهێنەرێک';
$lang['insert-group'] = 'لێدوانی SQL بۆ دانانی گروپێکی نوێ بۆ ناو بنکەی زانیاری';
$lang['join-group'] = 'لێدوانی SQL بۆ زیادکردنی بەکارهێنەرێک بۆ گروپی بەردەست';
$lang['leave-group'] = 'لێدوانی SQL بۆ لابردنی بەکارهێنەرێک لە گروپێک';
$lang['check-pass'] = 'SQL بەیاننامە بۆ پشکنینی نهێنوشە بۆ بەکارهێنەرێک. دەکرێت بە بەتاڵی بهێلدریت ئەگەر زانیاری نهێنوشە لە بەکارهێنەری دەسنیشانکراودا هێنرابێت.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Jaroslav Lichtblau <jlichtblau@seznam.cz>
*/
$lang['connectfail'] = 'Selhalo připojení k databázi.';
$lang['userexists'] = 'Omlouváme se, ale uživatel s tímto jménem již existuje.';
$lang['writefail'] = 'Nelze změnit údaje uživatele. Informujte prosím správce wiki';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Robert Surý <rsurycz@seznam.cz>
*/
$lang['debug'] = 'Vytištění podrobných chybových zpráv. Po dokončení nastavení by mělo být deaktivováno.';
$lang['dsn'] = 'DSN pro připojení k databázi.';
$lang['user'] = 'Uživatel pro výše uvedené připojení k databázi (prázdný pro sqlite)';
$lang['pass'] = 'Heslo pro výše uvedené připojení k databázi (prázdné pro sqlite)';
$lang['select-user'] = 'Příkaz SQL pro výběr dat jednoho uživatele';
$lang['select-user-groups'] = 'Příkaz SQL pro výběr všech skupin jednoho uživatele';
$lang['select-groups'] = 'Příkaz SQL pro výběr všech dostupných skupin';
$lang['insert-user'] = 'Příkaz SQL pro vložení nového uživatele do databáze';
$lang['delete-user'] = 'Příkaz SQL pro odebrání jednoho uživatele z databáze';
$lang['list-users'] = 'Příkaz SQL pro výpis seznamu uživatelů odpovídajících filtru';
$lang['count-users'] = 'Příkaz SQL pro spočítání uživatelů odpovídajících filtru';
$lang['update-user-info'] = 'Příkaz SQL pro aktualizaci celého jména a e-mailové adresy jednoho uživatele';
$lang['update-user-login'] = 'Příkaz SQL pro aktualizaci přihlašovacího jména jednoho uživatele';
$lang['update-user-pass'] = 'Příkaz SQL pro aktualizaci hesla jednoho uživatele';
$lang['insert-group'] = 'Příkaz SQL pro vložení nové skupiny do databáze';
$lang['join-group'] = 'Příkaz SQL pro přidání uživatele do existující skupiny';
$lang['leave-group'] = 'Příkaz SQL pro odebrání uživatele ze skupiny';
$lang['check-pass'] = 'Příkaz SQL ke kontrole hesla uživatele. Může zůstat prázdný, pokud jsou informace o heslech vyvolány ve vybraném uživateli.';

View File

@ -0,0 +1,12 @@
<?php
/**
* Welsh language file for authmysql plugin
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*/
$lang['connectfail'] = 'Method y cysylltiad i\'r databas.';
$lang['userexists'] = 'Sori, mae defnyddiwr gyda\'r enw mewngofnodi hwn eisoes yn bodoli.';
$lang['writefail'] = 'Methu â newid data defnyddiwr. Rhowch wybod i Weinyddwr y Wici';
//Setup VIM: ex: et ts=4 :

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Jacob Palm <mail@jacobpalm.dk>
*/
$lang['connectfail'] = 'Kunne ikke forbinde til database.';
$lang['userexists'] = 'Beklager, en bruger med dette loginnavn findes allerede.';
$lang['writefail'] = 'Kunne ikke ændre brugerdata. Informer venligst wikiens administrator.';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Jacob Palm <mail@jacobpalm.dk>
*/
$lang['debug'] = 'Vis detaljerede fejlmeddelelser. Bør deaktiveres efter opsætning.';
$lang['dsn'] = 'DSN der benyttes til at forbinde til databasen.';
$lang['user'] = 'Brugerkonto til ovenstående databaseforbindelse (blank ved sqlite)';
$lang['pass'] = 'Adgangskode til ovenstående databaseforbindelse (blank ved sqlite)';
$lang['select-user'] = 'SQL statement til at selektere data for en enkelt bruger';
$lang['select-user-groups'] = 'SQL statement til at selektere alle grupper en enkelt bruger er medlem af';
$lang['select-groups'] = 'SQL statement til at selektere alle tilgængelige grupper';
$lang['insert-user'] = 'SQL statement til at indsætte en ny bruger i databasen';
$lang['delete-user'] = 'SQL statement til at fjerne en bruger fra databasen';
$lang['list-users'] = 'SQL statement til at selektere brugere ud fra et filter';
$lang['count-users'] = 'SQL statement til at tælle brugere der matcher et filter';
$lang['update-user-info'] = 'SQL statement til at opdatere fulde navn og e-mail adresse på en enkelt bruger';
$lang['update-user-login'] = 'SQL statement til at opdatere loginnavn på en enkelt bruger';
$lang['update-user-pass'] = 'SQL statement til at opdatere adgangskode på en enkelt bruger';
$lang['insert-group'] = 'SQL statement til at indsætte en ny gruppe i databasen';
$lang['join-group'] = 'SQL statement til at tilføje en bruger til en eksisterende gruppe';
$lang['leave-group'] = 'SQL statement til at fjerne en bruger fra en gruppe';
$lang['check-pass'] = 'SQL statement til at kontrollere adgangskode for en bruger. Kan efterlades blank hvis adgangskode information hentes når brugeren selekteres.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Martin <martin@andev.de>
*/
$lang['connectfail'] = 'Verbindung zur Datenbank fehlgeschlagen.';
$lang['userexists'] = 'Der Benutzername existiert leider schon.';
$lang['writefail'] = 'Die Benutzerdaten konnten nicht geändert werden. Bitte wenden Sie sich an den Wiki-Admin.';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author MaWi <drmaxxis@gmail.com>
*/
$lang['debug'] = 'Zeige detaillierte Fehlermeldungen. Diese sollten nach dem Setup deaktiviert werden.';
$lang['dsn'] = 'Der DSN(Data Source Name) zur Verbindung mit der Datenbank';
$lang['user'] = 'Der Benutzer für die obige Datenbankverbindung (leer lassen für SQLite)';
$lang['pass'] = 'Das Passwort für die obige Datenbankverbindung (leer lassen für SQLite)';
$lang['select-user'] = 'SQL Anweisung um einen einzelnen Benutzer abzufragen';
$lang['select-user-groups'] = 'SQL Anweisung um alle Gruppen eines Benutzers abzufragen';
$lang['select-groups'] = 'SQL Anweisung um alle verfügbaren Gruppen auszuwählen';
$lang['insert-user'] = 'SQL Anweisung um einen neuen Benutzer in der Datenbank abzulegen';
$lang['delete-user'] = 'SQL Anweisung um einen Benutzer aus der Datenbank zu entfernen';
$lang['list-users'] = 'SQL Anweisung um eine Liste gefilterter Benutzer anzuzeigen';
$lang['count-users'] = 'SQL Anweisung, welche die Anzahl der gefilterten Benutzer wiedergibt';
$lang['update-user-info'] = 'SQL Anweisung um den vollen Namen sowie dessen E-Mail Adresse zu aktualisieren';
$lang['update-user-login'] = 'SQL Anweisung um den Login-Namen eines Benutzers zu aktualisieren';
$lang['update-user-pass'] = 'SQL Anweisung um das Passwort eines Benutzers zu aktualisieren';
$lang['insert-group'] = 'SQL Anweisung um eine neue Gruppe in der Datenbank anzulegen';
$lang['join-group'] = 'SQL Anweisung um einen Benutzer zu einer existierenden Gruppe hinzuzufügen';
$lang['leave-group'] = 'SQL Anweisung um einen Benutzer aus einer Gruppe zu entfernen';
$lang['check-pass'] = 'SQL Anweisung um das Passwort eines Benutzers zu überprüfen. Es kann leer gelassen werden wenn die Information über die Benutzerabfrage erhoben wurde.';

View File

@ -0,0 +1,12 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Noel Tilliot <noeltilliot@byom.de>
* @author Hendrik Diel <diel.hendrik@gmail.com>
* @author Philip Knack <p.knack@stollfuss.de>
*/
$lang['connectfail'] = 'Verbindung zur Datenbank fehlgeschlagen.';
$lang['userexists'] = 'Entschuldigung, aber dieser Benutzername ist bereits vergeben.';
$lang['writefail'] = 'Die Benutzerdaten konnten nicht geändert werden. Bitte wenden Sie sich an den Wiki-Admin.';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Jürgen Fredriksson <jfriedrich@gmx.at>
*/
$lang['debug'] = 'Zeige detaillierte Fehlermeldungen. Diese sollten nach dem Setup deaktiviert werden.';
$lang['dsn'] = 'Der DSN(Data Source Name) zur Verbindung mit der Datenbank';
$lang['user'] = 'Der Benutzer für die obige Datenbankverbindung (leer lassen für SQLite)';
$lang['pass'] = 'Das Passwort für die obige Datenbankverbindung (leer lassen für SQLite)';
$lang['select-user'] = 'SQL Anweisung um einen Benutzer abzufragen';
$lang['select-user-groups'] = 'SQL Anweisung um alle Gruppen eines Benutzers abzufragen';
$lang['select-groups'] = 'SQL Anweisung um alle verfügbaren Gruppen auszuwählen';
$lang['insert-user'] = 'SQL Anweisung um einen neuen Benutzer in der Datenbank abzulegen';
$lang['delete-user'] = 'SQL Anweisung um einen Benutzer aus der Datenbank zu entfernen';
$lang['list-users'] = 'SQL Anweisung um eine Liste gefilterter Benutzer anzuzeigen';
$lang['count-users'] = 'SQL Anweisung, welche die Anzahl der gefilterten Benutzer wiedergibt';
$lang['update-user-info'] = 'SQL Anweisung um den vollen Namen sowie dessen E-Mail Adresse zu aktualisieren';
$lang['update-user-login'] = 'SQL Anweisung um den Login-Namen eines Benutzers zu aktualisieren';
$lang['update-user-pass'] = 'SQL Anweisung um das Passwort eines Benutzers zu aktualisieren';
$lang['insert-group'] = 'SQL Anweisung um eine neue Gruppe in der Datenbank anzulegen';
$lang['join-group'] = 'SQL Anweisung um einen Benutzer zu einer existierenden Gruppe hinzuzufügen';
$lang['leave-group'] = 'SQL Anweisung um einen Benutzer aus einer Gruppe zu entfernen';
$lang['check-pass'] = 'SQL Anweisung um das Passwort eines Benutzers zu überprüfen. Es kann leer gelassen werden wenn die Information über die Benutzerabfrage erhoben wurde.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Aikaterini Katapodi <extragold1234@hotmail.com>
*/
$lang['connectfail'] = 'Δεν μπόρεσε να κάνει σύνδεση με την βάση δεδομένων';
$lang['userexists'] = 'Συγγνώμη υπάρχει ήδη χρήστης με αυτά τα στοιχεία';
$lang['writefail'] = 'Δεν μπορέσαμε τα τροποποιήσουμε τα στοιχεία χρήστη. Παρακαλώ ενημερώστε το Wiki-Admin';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Aikaterini Katapodi <extragold1234@hotmail.com>
*/
$lang['debug'] = 'Εκτύπωση μηνυμάτων σφαλμάτων λεπτομερώς. Αυτή η ρύθμιση πρέπει μετά να απενεργοποιηθεί.';
$lang['dsn'] = 'Να συνδεθεί το DSN με τη βάση δεδομένων';
$lang['user'] = 'Ο συνδεδεμένος χρήστης με την άνω βάση δεδομένων';
$lang['pass'] = 'Ο κωδικός πρόσβασης της άνω βάσης δεδομένων';
$lang['select-user'] = 'SQL Αντίγραφο επιλογής δεδομένων ενός απλού χρήστη';
$lang['select-user-groups'] = 'SQL Αντίγραφο to select all groups of a single user ';
$lang['select-groups'] = 'SQL Αντίγραφο για επιλογή όλων των διαθέσιμων ομάδων ';
$lang['insert-user'] = 'Δηλωτικό SQL για να εισάγει έναν νέο χρήστη στη βάση δεδομένων';
$lang['delete-user'] = 'Δηλωτικό SQL για αφαίρεση χρήστη από την βάση δεδομένων';
$lang['list-users'] = 'Δηλωτικό SQL για να ταξινομήσει τους χρήστες με προσαρμογή φίλτρου';
$lang['count-users'] = 'Δηλωτικό SQL για να μετρήσει τον αριθμό των χρηστών με τη χρήση ενός φίλτρου';
$lang['update-user-info'] = 'Δηλωτικό SQL για ενημέρωση του ονόματος και της διεύθυνσης email ενός χρήστη';
$lang['update-user-login'] = 'Δηλωτικό SQL για ενημέρωση του ονόματος σύνδεσης ενός απλού χρήστη ';
$lang['update-user-pass'] = 'Δηλωτικό SQL για ενημέρωση του κωδικού πρόσβασης ενός χρήστη';
$lang['insert-group'] = 'Δηλωτικό SQL για να εισάγει νέα ομάδα στην βάση δεδομένων';
$lang['join-group'] = 'Δηλωτικό SQL για πρόσθεση χρήστη σε μια υπάρχουσα ομάδα';
$lang['leave-group'] = 'Δηλωτικό SQL για αφαίρεση χρήστη από μια ομάδα';
$lang['check-pass'] = 'Δηλωτικό SQL για να ελέγξει τον κωδικό πρόσβασης για έναν χρήστη. Μπορεί να μείνει κενό αν εισαχθεί κωδικός χρήστη στην ομάδα επιλογής χρήστη.';

View File

@ -0,0 +1,12 @@
<?php
/**
* English language file for authpdo plugin
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
*/
$lang['connectfail'] = 'Failed to connect to database.';
$lang['userexists'] = 'Sorry, a user with this login already exists.';
$lang['writefail'] = 'Unable to modify user data. Please inform the Wiki-Admin';
//Setup VIM: ex: et ts=4 :

View File

@ -0,0 +1,25 @@
<?php
/**
* english language file for authpdo plugin
*
* @author Andreas Gohr <andi@splitbrain.org>
*/
$lang['debug'] = 'Print out detailed error messages. Should be disabled after setup.';
$lang['dsn'] = 'The DSN to connect to the database.';
$lang['user'] = 'The user for the above database connection (empty for sqlite)';
$lang['pass'] = 'The password for the above database connection (empty for sqlite)';
$lang['select-user'] = 'SQL Statement to select the data of a single user';
$lang['select-user-groups'] = 'SQL Statement to select all groups of a single user';
$lang['select-groups'] = 'SQL Statement to select all available groups';
$lang['insert-user'] = 'SQL Statement to insert a new user into the database';
$lang['delete-user'] = 'SQL Statement to remove a single user from the database';
$lang['list-users'] = 'SQL Statement to list users matching a filter';
$lang['count-users'] = 'SQL Statement to count users matching a filter';
$lang['update-user-info'] = 'SQL Statement to update the full name and email address of a single user';
$lang['update-user-login'] = 'SQL Statement to update the login name of a single user';
$lang['update-user-pass'] = 'SQL Statement to update the password of a single user';
$lang['insert-group'] = 'SQL Statement to insert a new group into the database';
$lang['join-group'] = 'SQL Statement to add a user to an existing group';
$lang['leave-group'] = 'SQL Statement to remove a user from a group';
$lang['check-pass'] = 'SQL Statement to check the password for a user. Can be left empty if password info is fetched in select-user.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Yves Nevelsteen <yves.nevelsteen@gmail.com>
*/
$lang['connectfail'] = 'Malsukcesis konekti al datumbazo.';
$lang['userexists'] = 'Pardonu, uzanto kun ĉi tiu salutnomo jam ekzistas.';
$lang['writefail'] = 'Ne eblas modifi uzantajn datumojn. Bonvolu informi la Vikiadministranton';

View File

@ -0,0 +1,12 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Yves Nevelsteen <yves.nevelsteen@gmail.com>
*/
$lang['debug'] = 'Presu detalajn erarmesaĝojn. Devus esti malŝaltita post agordo.';
$lang['dsn'] = 'La DSN por konekti al la datumbazo.';
$lang['user'] = 'La uzanto por ĉi-supra datumbaza konekto (malplena por sqlite)';
$lang['pass'] = 'La pasvorto por la supra datumbaza konekto (malplena por sqlite)';
$lang['select-user'] = 'SQL Statement por elekti la datumojn de ununura uzanto';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Domingo Redal <docxml@gmail.com>
*/
$lang['connectfail'] = 'Error al conectar con la base de datos.';
$lang['userexists'] = 'Lo sentimos, ya existe un usuario con ese inicio de sesión.';
$lang['writefail'] = 'No es posible modificar los datos del usuario. Por favor, informa al Administrador del Wiki';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author WIRESLINKEA <wireslinkea@gmail.com>
*/
$lang['debug'] = 'Imprime mensajes de error detallados. Debería ser deshabilitado después de la instalación.';
$lang['dsn'] = 'El DSN para conectarse a la base de datos.';
$lang['user'] = 'El usuario de la conexión de base de datos anterior (vacía para sqlite)';
$lang['pass'] = 'La contraseña para la conexión de base de datos anterior (vacía para sqlite)';
$lang['select-user'] = 'Declaración SQL para seleccionar los datos de un solo usuario';
$lang['select-user-groups'] = 'Declaración SQL para seleccionar todos los grupos de un solo usuario';
$lang['select-groups'] = 'Declaración SQL para seleccionar todos los grupos disponibles';
$lang['insert-user'] = 'Declaración SQL para insertar un nuevo usuario en la base de datos';
$lang['delete-user'] = 'Declaración SQL para eliminar un único usuario de la base de datos';
$lang['list-users'] = 'Declaración SQL para mostrar los usuarios que coinciden con un filtro';
$lang['count-users'] = 'Declaración SQL para contar usuarios que coinciden con un filtro';
$lang['update-user-info'] = 'Declaración SQL para actualizar el nombre completo y la dirección de correo electrónico de un único usuario';
$lang['update-user-login'] = 'Declaración SQL para actualizar el nombre de usuario de un solo usuario';
$lang['update-user-pass'] = 'Declaración SQL para actualizar la contraseña de un solo usuario';
$lang['insert-group'] = 'Declaración SQL para insertar un nuevo grupo en la base de datos';
$lang['join-group'] = 'Declaración SQL para agregar un usuario a un grupo existente ';
$lang['leave-group'] = 'Declaración SQL para eliminar un usuario de un grupo';
$lang['check-pass'] = 'Declaración SQL para verificar la contraseña de un usuario. Puede dejarse vacío si se busca información de contraseña en el usuario de selección.';

View File

@ -0,0 +1,11 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Mohmmad Razavi <sepent@gmail.com>
* @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
*/
$lang['connectfail'] = 'خطا در اتصال به دیتابیس';
$lang['userexists'] = 'با عرض پوزش، یک کاربر با این نام از قبل وجود دارد.';
$lang['writefail'] = 'امکان تغییر داده کاربر وجود نداشت. لطفا مسئول Wiki را آگاه کنید.';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Masoud Sadrnezhaad <masoud@sadrnezhaad.ir>
*/
$lang['debug'] = 'جزئیات پیام‌های خطا را نمایش بده. باید بعد از تنظیم غیرفعال شود.';
$lang['dsn'] = 'دی‌اس‌ان برای اتصال به پایگاه داده';
$lang['user'] = 'کاربر برای اتصال پایگاه دادهٔ بالا (برای sqlite خالی)';
$lang['pass'] = 'کلمهٔ عبور برای اتصال پایگاه دادهٔ بالا (برای sqlite خالی)';
$lang['select-user'] = 'دستور SQL برای انتخاب داده‌ای از یک کاربر';
$lang['select-user-groups'] = 'دستور SQL برای انتخاب همهٔ گروه‌های یک کاربر';
$lang['select-groups'] = 'دستور SQL برای انتخاب گروه‌های موجود';
$lang['insert-user'] = 'دستور SQL برای افزودن یک کاربر جدید به پایگاه داده';
$lang['delete-user'] = 'دستور SQL برای ححذف یک کاربر از پایگاه داده';
$lang['list-users'] = 'دستور SQL برای فهرست کردن کاربران دارای ویژگی مشخص';
$lang['count-users'] = 'دستور SQL برای شمارش کاربران دارای ویژگی مشخص';
$lang['update-user-info'] = 'دستور SQL برای به‌روزرسانی نام کامل و ایمیل یک کاربر';
$lang['update-user-login'] = 'دستور SQL برای به‌روزرسانی نام ورود به سیستم برای یک کاربر';
$lang['update-user-pass'] = 'دستور SQL برای به‌روزرسانی کلمهٔ عبور برای یک کاربر';
$lang['insert-group'] = 'دستور SQL برای افزودن گروه جدید به پایگاه داده';
$lang['join-group'] = 'دستور SQL برای افزودن یک کاربر به یک گروه موجود';
$lang['leave-group'] = 'دستور SQL برای حذف یک کاربر از یک گروه';
$lang['check-pass'] = 'دستور SQL برای چک کردن کلمهٔ عبور یک کاربر. اگر اطلاعات کلمهٔ عبور در دریافت کاربر گرفته شده می‌تواند خالی بماند.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Pietroni <pietroni@informatique.univ-paris-diderot.fr>
*/
$lang['connectfail'] = 'Impossible de se connecter à la base de données.';
$lang['userexists'] = 'Désolé, un utilisateur avec cet identifiant existe déjà.';
$lang['writefail'] = 'Impossible de modifier les données utilisateur. Veuillez en informer l\'administrateur du Wiki.';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Schplurtz le Déboulonné <schplurtz@laposte.net>
*/
$lang['debug'] = 'Afficher des messages d\'erreur détaillés. Devrait être désactivé passé la configuration.';
$lang['dsn'] = 'Le DSN de connexion à la base de données.';
$lang['user'] = 'L\'utilisateur pour la connexion à la base de donnée ci-dessus (vide pour sqlite)';
$lang['pass'] = 'Le mot de passe pour la connexion à la base de donnée ci-dessus (vide pour sqlite)';
$lang['select-user'] = 'Instruction SQL pour sélectionner les données d\'un seul utilisateur';
$lang['select-user-groups'] = 'Instruction SQL pour sélectionner tous les groupes d\'un utilisateur donné';
$lang['select-groups'] = 'Instruction SQL pour sélectionner tous les groupes disponibles';
$lang['insert-user'] = 'Instruction SQL pour insérer un nouvel utilisateur dans la base de données';
$lang['delete-user'] = 'Instruction SQL pour retirer un utilisateur de la base de données';
$lang['list-users'] = 'Instruction SQL pour lister les utilisateurs correspondant à un filtre';
$lang['count-users'] = 'Instruction SQL pour compter les utilisateurs correspondant à un filtre';
$lang['update-user-info'] = 'Instruction SQL pour mettre à jour le nom complet et l\'adresse de courriel d\'un utilisateur donné';
$lang['update-user-login'] = 'Instruction SQL pour mettre à jour l\'identifiant d\'un utilisateur donné';
$lang['update-user-pass'] = 'Instruction SQL pour mettre à jour le mot de passe d\'un utilisateur donné';
$lang['insert-group'] = 'Instruction SQL pour mettre insérer un nouveau groupe dans la base de données';
$lang['join-group'] = 'Instruction SQL pour ajouter un utilisateur à un groupe existant';
$lang['leave-group'] = 'Instruction SQL pour retirer un utilisateur d\'un groupe';
$lang['check-pass'] = 'Instruction SQL pour vérifier le mot de passe d\'un utilisateur. Peut être laissé vide si l\'information de mot de passe est obtenue lors de la sélection d\'un utilisateur.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Davor Turkalj <turki.bsc@gmail.com>
*/
$lang['connectfail'] = 'Ne mogu se spojiti na bazu.';
$lang['userexists'] = 'Oprostite ali korisnik s ovom prijavom već postoji.';
$lang['writefail'] = 'Ne mogu izmijeniti podatke. Molim obavijestite Wiki administratora';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Marton Sebok <sebokmarton@gmail.com>
*/
$lang['connectfail'] = 'Az adatbázishoz való csatlakozás sikertelen.';
$lang['userexists'] = 'Sajnos már létezik ilyen azonosítójú felhasználó.';
$lang['writefail'] = 'A felhasználói adatok módosítása sikertelen. Kérlek, fordulj a wiki rendszergazdájához!';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Torpedo <dgtorpedo@gmail.com>
*/
$lang['connectfail'] = 'Connessione fallita al database.';
$lang['userexists'] = 'Spiacente, esiste già un utente con queste credenziali.';
$lang['writefail'] = 'Non è possibile cambiare le informazioni utente. Si prega di informare l\'Amministratore del wiki';

View File

@ -0,0 +1,26 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Eddy <eddy@mail.it>
* @author Riccardo <riccardo.furlato@gmail.com>
*/
$lang['debug'] = 'Stampa messaggi di errore dettagliati. Dovrebbe essere disabilitato dopo l\'installazione.';
$lang['dsn'] = 'Il DSN per connettersi al database.';
$lang['user'] = 'L\'utente per la connessione al database sopra (vuoto per sqlite)';
$lang['pass'] = 'La password per la connessione al database sopra (vuoto per sqlite)';
$lang['select-user'] = 'Istruzione SQL per selezionare i dati di un singolo utente';
$lang['select-user-groups'] = 'Istruzione SQL per selezionare tutti i gruppi di un singolo utente';
$lang['select-groups'] = 'Istruzione SQL per selezionare tutti i gruppi disponibili';
$lang['insert-user'] = 'Istruzione SQL per inserire un nuovo utente nel database';
$lang['delete-user'] = 'Istruzione SQL per rimuovere un singolo utente dal database';
$lang['list-users'] = 'Istruzione SQL per elencare gli utenti che corrispondono a un filtro';
$lang['count-users'] = 'Istruzione SQL per contare gli utenti che corrispondono a un filtro';
$lang['update-user-info'] = 'Istruzione SQL per aggiornare nome completo ed indirizzo email di un singolo utente';
$lang['update-user-login'] = 'Istruzione SQL per aggiornare il nome di login di un singolo utente';
$lang['update-user-pass'] = 'Istruzione SQL per aggiornare la password di un singolo utente';
$lang['insert-group'] = 'Istruzione SQL per inserire un nuovo gruppo nel database';
$lang['join-group'] = 'Istruzione SQL per aggiungere un utente ad un gruppo esistente';
$lang['leave-group'] = 'Istruzione SQL per rimuovere un utente da un gruppo';
$lang['check-pass'] = 'Istruzione SQL per cercare la password di un utente. Può essere omessa se l\'informazioni sulla password è recuperate dalla selezione utente.';

View File

@ -0,0 +1,11 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author HokkaidoPerson <dosankomali@yahoo.co.jp>
* @author Hideaki SAWADA <chuno@live.jp>
*/
$lang['connectfail'] = 'データベースへの接続に失敗しました。';
$lang['userexists'] = '恐れ入りますが、このログイン名のユーザーが既に存在しています。';
$lang['writefail'] = 'ユーザーデータを変更できません。Wiki の管理者に連絡してください。';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author HokkaidoPerson <dosankomali@yahoo.co.jp>
*/
$lang['debug'] = '詳細なエラーメッセージを出力する(セットアップ後、このオプションはオフにすべきです)';
$lang['dsn'] = 'データベースにアクセスするDSN';
$lang['user'] = '上記データベースに接続するユーザー名sqliteの場合は空欄にしておいて下さい';
$lang['pass'] = '上記データベースに接続するパスワードsqliteの場合は空欄にしておいて下さい';
$lang['select-user'] = '個々のユーザーのデータを選ぶSQL命令文';
$lang['select-user-groups'] = '個々のユーザーが属する全てのグループを選ぶSQL命令文';
$lang['select-groups'] = '利用可能な全グループを選ぶSQL命令文';
$lang['insert-user'] = 'データベースに新規ユーザーを追加するSQL命令文';
$lang['delete-user'] = '個々のユーザーをデータベースから取り除くSQL命令文';
$lang['list-users'] = 'フィルターに一致するユーザーを一覧にするSQL命令文';
$lang['count-users'] = 'フィルターに一致するユーザーを数えるSQL命令文';
$lang['update-user-info'] = '個々のユーザーのフルネームとメールアドレスを更新するSQL命令文';
$lang['update-user-login'] = '個々のユーザーのログイン名を更新するSQL命令文';
$lang['update-user-pass'] = '個々のユーザーのパスワードを更新するSQL命令文';
$lang['insert-group'] = 'データベースに新規グループを追加するSQL命令文';
$lang['join-group'] = '既にあるグループにユーザーを追加するSQL命令文';
$lang['leave-group'] = 'グループからユーザーを取り除くSQL命令文';
$lang['check-pass'] = 'ユーザーのパスワードをチェックするSQL命令文select-userでパスワード情報を呼び出す場合は空欄にしておけます';

View File

@ -0,0 +1,11 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author hyeonsoft <hyeonsoft@live.co.kr>
* @author Myeongjin <aranet100@gmail.com>
*/
$lang['connectfail'] = '데이터베이스에 연결하는 데 실패했습니다.';
$lang['userexists'] = '죄송하지만 이 계정으로 이미 로그인한 사용자가 있습니다.';
$lang['writefail'] = '사용자 데이터를 수정할 수 없습니다. 위키 관리자에게 문의하시기 바랍니다';

View File

@ -0,0 +1,30 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author merefox <admin@homerecz.com>
* @author pavement <pavement@rael.cc>
* @author Traend <Traend@ruu.kr>
*/
$lang['debug'] = '자세한 오류 메시지를 출력합니다. 설정 후 비활성화해야 합니다.';
$lang['dsn'] = '데이터베이스에 연결할 DSN';
$lang['user'] = '위의 데이터베이스 연결에 대한 사용자(sqlite의 경우 비어 있음)';
$lang['pass'] = '위의 데이터베이스 연결에 대한 암호(sqlite의 경우 비어 있음)';
$lang['select-user'] = '단일 사용자의 데이터를 선택하기 위한 SQL 문
';
$lang['select-user-groups'] = '단일 사용자의 모든 그룹을 선택하기 위한 SQL 문';
$lang['select-groups'] = '사용 가능한 모든 그룹을 선택하기 위한 SQL 문
';
$lang['insert-user'] = '데이터베이스에 새 사용자를 삽입하는 SQL 문
';
$lang['delete-user'] = '데이터베이스에서 단일 사용자를 제거하기 위한 SQL 문';
$lang['list-users'] = '필터와 일치하는 사용자를 나열하는 SQL 문';
$lang['count-users'] = '필터와 일치하는 사용자를 계산하는 SQL 문';
$lang['update-user-info'] = '단일 사용자의 전체 이름과 이메일 주소를 업데이트하는 SQL 문';
$lang['update-user-login'] = '단일 사용자의 로그인 이름을 업데이트하는 SQL 문';
$lang['update-user-pass'] = '단일 사용자의 암호를 업데이트하는 SQL 문';
$lang['insert-group'] = '데이터베이스에 새 그룹을 삽입하는 SQL 문';
$lang['join-group'] = '기존 그룹에 사용자를 추가하는 SQL 문';
$lang['leave-group'] = '그룹에서 사용자를 제거하는 SQL 문';
$lang['check-pass'] = '사용자의 암호를 확인하는 SQL 문입니다. 선택 사용자에서 암호 정보를 가져오는 경우 비워 둘 수 있습니다.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Hugo Smet <hugo.smet@scarlet.be>
*/
$lang['connectfail'] = 'Connectie met de database mislukt.';
$lang['userexists'] = 'Sorry, een gebruiker met deze login bestaat reeds.';
$lang['writefail'] = 'Onmogelijk om de gebruikers data te wijzigen. Gelieve de Wiki-Admin te informeren.';

View File

@ -0,0 +1,26 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Gerrit Uitslag <klapinklapin@gmail.com>
* @author Andy <astolker@icloud.com>
*/
$lang['debug'] = 'Geef gedetailleerde foutmeldingen weer. Dit zou uitgeschakeld moeten zijn na de installatie.';
$lang['dsn'] = 'De DSN om verbinding te maken met de database.';
$lang['user'] = 'De gebruikersnaam voor de bovengenoemde database verbinding (laat leeg voor sqlite)';
$lang['pass'] = 'Het wachtwoord voor de bovengenoemde database verbinding (laat leeg voor sqlite)';
$lang['select-user'] = 'SQL Statement om de data te selecteren van één gebruiker';
$lang['select-user-groups'] = 'SQL Statement om alle groepen van één gebruiker te selecteren';
$lang['select-groups'] = 'SQL Statement om alle beschikbare groepen te selecteren';
$lang['insert-user'] = 'SQL Statement om een nieuwe gebruiker in de database in te voeren';
$lang['delete-user'] = 'SQL Statement om één gebruiker uit de database te verwijderen';
$lang['list-users'] = 'SQL-instructie om gebruikers weer te geven die overeenkomen met een filter';
$lang['count-users'] = 'SQL-instructie om gebruikers te tellen die overeenkomen met een filter';
$lang['update-user-info'] = 'SQL-instructie om de volledige naam en e-mailadres van een enkele gebruiker bij te werken';
$lang['update-user-login'] = 'SQL-instructie om de inlognaam van een enkele gebruiker bij te werken';
$lang['update-user-pass'] = 'SQL-instructie om het wachtwoord van een enkele gebruiker bij te werken';
$lang['insert-group'] = 'SQL-instructie om een nieuwe groep aan de database toe te voegen';
$lang['join-group'] = 'SQL-instructie om een gebruiker aan een bestaande groep toe te voegen';
$lang['leave-group'] = 'SQL-instructie om een gebruiker uit een groep te verwijderen';
$lang['check-pass'] = 'SQL-instructie om het wachtwoord van een gebruiker te controleren. Kan leeg gelaten worden als de wachtwoordinformatie wordt opgehaald in select-user';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Przemek <p_kudriawcew@o2.pl>
*/
$lang['connectfail'] = 'Błąd łącznie się z bazą danych';
$lang['userexists'] = 'Przepraszamy, użytkownik o tym loginie już istnieje';
$lang['writefail'] = 'Nie można zmodyfikować danych użytkownika. Proszę skontaktować się z Administratorem';

View File

@ -0,0 +1,28 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Marek Adamski <fevbew@wp.pl>
* @author pavulondit <pavloo@vp.pl>
* @author Bartek S <sadupl@gmail.com>
* @author Przemek <p_kudriawcew@o2.pl>
*/
$lang['debug'] = 'Wyświetlanie szczegółowej wiadomości o błędzie. Powinno być wyłączone po ';
$lang['dsn'] = 'Nazwa źródła danych do łączenia się z bazą danych';
$lang['user'] = 'Użytkownik do powyższego połączenia z bazą danych (puste dla sqlite)';
$lang['pass'] = 'Hasło do powyższego połączenia z bazą danych (puste dla sqlite)';
$lang['select-user'] = 'Zapytanie SQL, aby wybrać dane jednego użytkownika';
$lang['select-user-groups'] = 'Zapytanie SQL aby wybrać wszystkie grupy jednego użytkownika';
$lang['select-groups'] = 'Instrukcja SQL do wybrania wszystkich dostępnych grup';
$lang['insert-user'] = 'Instrukcja SQL do wstawienia nowego użytkownika do bazy danych';
$lang['delete-user'] = 'Instrukcja SQL do usunięcia pojedynczego użytkownika z bazy danych';
$lang['list-users'] = 'Instrukcja SQL do wyświetlenia listy użytkowników pasujących do filtra';
$lang['count-users'] = 'Instrukcja SQL do zliczenia użytkowników pasujących do filtra';
$lang['update-user-info'] = 'Wyrażenie SQL aby zaktualizować imię oraz adres email dla pojedynczego użytkownika';
$lang['update-user-login'] = 'Wyrażenie SQL aby zaktualizować login dla pojedynczego użytkownika';
$lang['update-user-pass'] = 'Zapytanie SQL do zaktualizowania hasła dla pojedynczego użytkownika';
$lang['insert-group'] = 'Zapytanie SQL aby dodać nową grupę do bazy danych';
$lang['join-group'] = 'Zapytanie SQL aby dodać użytkownika do istniejącej grupy';
$lang['leave-group'] = 'Zapytanie SQL aby usunąć użytkownika z grupy';
$lang['check-pass'] = 'Zapytanie SQL aby sprawdzić hasło użytkownika. Można pozostawić puste, jeśli informacje o haśle są pobierane w select-user.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
*/
$lang['connectfail'] = 'Não foi possível conectar ao banco de dados.';
$lang['userexists'] = 'Desculpe, mas já existe esse nome de usuário.';
$lang['writefail'] = 'Não foi possível modificar os dados do usuário. Por favor, informe ao administrador do Wiki.';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Frederico Gonçalves Guimarães <frederico@teia.bio.br>
*/
$lang['debug'] = 'Exibir mensagens de erro detalhadas. Deve ser desabilitado após a configuração.';
$lang['dsn'] = 'O DSN para conectar ao banco de dados.';
$lang['user'] = 'O usuário para a conexão ao banco de dados acima (em branco para sqlite)';
$lang['pass'] = 'A senha para a conexão ao banco de dados acima (em branco para sqlite)';
$lang['select-user'] = 'Declaração SQL para selecionar os dados de um único usuário';
$lang['select-user-groups'] = 'Declaração SQL para selecionar todos os grupos de um único usuário';
$lang['select-groups'] = 'Declaração SQL para selecionar todos os grupos disponíveis';
$lang['insert-user'] = 'Declaração SQL para inserir um novo usuário no banco de dados';
$lang['delete-user'] = 'Declaração SQL para remover um único usuário do banco de dados';
$lang['list-users'] = 'Declaração SQL para listar usuários correspondentes a um filtro';
$lang['count-users'] = 'Declaração SQL para contar usuários correspondentes a um filtro';
$lang['update-user-info'] = 'Declaração SQL para atualizar o nome completo e endereço de e-mail de um único usuário';
$lang['update-user-login'] = 'Declaração SQL para atualizar o nome de usuário de e-mail de um único usuário';
$lang['update-user-pass'] = 'Declaração SQL para atualizar a senha de um único usuário';
$lang['insert-group'] = 'Declaração SQL para inserir um novo grupo no banco de dados';
$lang['join-group'] = 'Declaração SQL para adicionar um usuário a um grupo existente';
$lang['leave-group'] = 'Declaração SQL para remover um usuário de um grupo';
$lang['check-pass'] = 'Declaração SQL para verificar a senha de um usuário. Pode ser deixada em branco se a informação da senha for obtida a partir do usuário selecionado.';

View File

@ -0,0 +1,12 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Paulo Schopf <pschopf@gmail.com>
* @author Maykon Oliveira <maykonoliveira850@gmail.com>
* @author Paulo Carmino <contato@paulocarmino.com>
*/
$lang['connectfail'] = 'Erro ao conectar o banco de dados.';
$lang['userexists'] = 'Desculpe, esse login já está sendo usado.';
$lang['writefail'] = 'Não é possível modificar os dados do usuário. Por favor, informe o Wiki-Admin';

View File

@ -0,0 +1,26 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Paulo Ricardo Schopf <pschopf@gmail.com>
* @author Maykon Oliveira <maykonoliveira850@gmail.com>
*/
$lang['debug'] = 'Imprima mensagens de erro detalhadas. Deve ser desativado após a configuração.';
$lang['dsn'] = 'O DSN para se conectar ao banco de dados.';
$lang['user'] = 'O usuário para a conexão de banco de dados acima (vazio para sqlite)';
$lang['pass'] = 'A senha para a conexão de banco de dados acima (vazia para sqlite)';
$lang['select-user'] = 'Instrução SQL para selecionar os dados de um único usuário';
$lang['select-user-groups'] = 'Instrução SQL para selecionar todos os grupos de um único usuário';
$lang['select-groups'] = 'Instrução SQL para selecionar todos os grupos disponíveis';
$lang['insert-user'] = 'Instrução SQL para inserir um novo usuário no banco de dados';
$lang['delete-user'] = 'Instrução SQL para remover um usuário do banco de dados';
$lang['list-users'] = 'Instrução SQL para listar usuários que correspondam a um filtro';
$lang['count-users'] = 'Instrução SQL para contar usuários que correspondam a um filtro';
$lang['update-user-info'] = 'Instrução SQL para atualizar o nome completo e e-mail de um usuário';
$lang['update-user-login'] = 'Instrução SQL para atualizar o nome de login de um usuário';
$lang['update-user-pass'] = 'Instrução SQL para atualizar a senha de um usuário';
$lang['insert-group'] = 'Instrução SQL para inserir um novo grupo no banco de dados';
$lang['join-group'] = 'Instrução SQL para adicionar um usuário a um grupo existente';
$lang['leave-group'] = 'Instrução SQL para remover um usuário de um grupo';
$lang['check-pass'] = 'Instrução SQL para verificar a senha de um usuário. Pode ser deixado em branco se a informação da senha for buscada no usuário selecionado.';

View File

@ -0,0 +1,11 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Takumo <9206984@mail.ru>
* @author Aleksandr Selivanov <alexgearbox@yandex.ru>
*/
$lang['connectfail'] = 'Ошибка соединения с базой данных.';
$lang['userexists'] = 'Извините, пользователь с таким логином уже существует.';
$lang['writefail'] = 'Невозможно изменить данные пользователя. Сообщите об этом администратору вики.';

View File

@ -0,0 +1,26 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Aleksandr Selivanov <alexgearbox@yandex.ru>
* @author Vyacheslav Strenadko <vyacheslav.strenadko@gmail.com>
*/
$lang['debug'] = 'Выводить подробные сообщения об ошибках. Должно быть отключено после настройки.';
$lang['dsn'] = 'DSN (имя источника данных) для подключения к базе данных';
$lang['user'] = 'Имя пользователя для подключения к базе данных (пустое для SQLite)';
$lang['pass'] = 'Пароль для подключения к базе данных (пустой для SQLite)';
$lang['select-user'] = 'SQL-выражение для выбора данных одного пользователя';
$lang['select-user-groups'] = 'SQL-выражение для выбора всех групп одного пользователя';
$lang['select-groups'] = 'SQL-выражение для выбора всех доступных групп';
$lang['insert-user'] = 'SQL-выражение для добавления нового пользователя в базу данных';
$lang['delete-user'] = 'SQL-выражение для удаления одного пользователя из базы данных';
$lang['list-users'] = 'SQL-выражение для перечисления пользователей, соответствующих фильтру';
$lang['count-users'] = 'SQL-выражение для подсчёта пользователей, соответствующих фильтру';
$lang['update-user-info'] = 'SQL-выражение для обновления полного имени и адреса эл. почты одного пользователя';
$lang['update-user-login'] = 'SQL-выражение для обновления логина одного пользователя';
$lang['update-user-pass'] = 'SQL-выражение для обновления пароля одного пользователя';
$lang['insert-group'] = 'SQL-выражение для добавления новой группы в базу данных';
$lang['join-group'] = 'SQL-выражение для добавления пользователя в существующую группу';
$lang['leave-group'] = 'SQL-выражение для удаления пользователя из группы';
$lang['check-pass'] = 'SQL-выражение для проверки пароля пользователя. Может быть пустым, если информация о пароле выбрана пользователем. (Can be left empty if password info is fetched in select-user.)';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Martin Michalek <michalek.dev@gmail.com>
*/
$lang['connectfail'] = 'Nepodarilo sa pripojiť k databáze.';
$lang['userexists'] = 'Ľutujem, ale používateľ s týmto prihlasovacím menom už existuje.';
$lang['writefail'] = 'Nie je možné zmeniť údaje používateľa, informujte prosím administrátora Wiki.';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Martin Michalek <michalek.dev@gmail.com>
*/
$lang['debug'] = 'Výpis podrobných chybových hlásení. Po nastavení by sa malo vypnúť.';
$lang['dsn'] = 'DSN pre pripojenie k databáze.';
$lang['user'] = 'Používateľ uvedeného databázového pripojenia (prázdne pre sqllite)';
$lang['pass'] = 'Heslo uvedeného databázového pripojenia (prázdne pre sqllite)';
$lang['select-user'] = 'SQL príkaz pre výber údajov používateľa';
$lang['select-user-groups'] = 'SQL príkaz pre výber všetkých skupín používateľa';
$lang['select-groups'] = 'SQL príkaz pre výber dostupných skupín';
$lang['insert-user'] = 'SQL príkaz pre vloženie údajov používateľa do databázy';
$lang['delete-user'] = 'SQL príkaz pre odstránenie používateľa z databázy';
$lang['list-users'] = 'SQL príkaz pre výpis používateľov podľa filtra';
$lang['count-users'] = 'SQL príkaz pre spočítanie používateľov podľa filtra';
$lang['update-user-info'] = 'SQL príkaz pre aktualizáciu mena a emailu používateľa';
$lang['update-user-login'] = 'SQL príkaz pre aktualizáciu prihlasovacieho mena používateľa';
$lang['update-user-pass'] = 'SQL príkaz pre aktualizáciu hesla používateľa';
$lang['insert-group'] = 'SQL príkaz pre vloženie údajov skupiny do databázy';
$lang['join-group'] = 'SQL príkaz pre pridanie používateľa do existujúcej skupiny';
$lang['leave-group'] = 'SQL príkaz pre odstránenie používateľa zo skupiny';
$lang['check-pass'] = 'SQL príkaz pre kontrolu hesla používateľa. Môže zostať prázdny, ak je informácia o hesle pripojená k výberu údajov používateľa.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Patrik K Lundberg <patrik.kotiranta.lundberg@gmail.com>
*/
$lang['connectfail'] = 'Misslyckades med att ansluta databas.';
$lang['userexists'] = 'PHP mail() saknas eller är inaktiverad. Följande mejl skickades inte:';
$lang['writefail'] = 'Wiki Markup';

View File

@ -0,0 +1,23 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Patrik K Lundberg <patrik.kotiranta.lundberg@gmail.com>
*/
$lang['user'] = 'Användaren för databasen ovan (tom för sqlite)';
$lang['pass'] = 'Lösenordet för databasen ovan (tom för sqlite)';
$lang['select-user'] = 'SQL uttryck för att välja datan för en enda användare';
$lang['select-user-groups'] = 'SQL uttryck för att välja alla grupper för en enda användare';
$lang['select-groups'] = 'SQL uttryck för att välja alla tillgängliga grupper';
$lang['insert-user'] = 'SQL uttryck för att lägga till en ny användare i databasen';
$lang['delete-user'] = 'SQL uttryck för att ta bort en enda användare från databasen';
$lang['list-users'] = 'SQL uttryck för att lista användare som matchar filtret';
$lang['count-users'] = 'SQL uttryck för att räkna användare som matchar filtret';
$lang['update-user-info'] = 'SQL uttryck för att uppdatera det fullständiga namnet och mejladressen för en användare';
$lang['update-user-login'] = 'SQL uttryck för att uppdatera användarnamnet för en användare';
$lang['update-user-pass'] = 'SQL uttryck för att uppdatera lösenordet för en användare';
$lang['insert-group'] = 'SQL uttryck för att lägga till en ny grupp i databasen';
$lang['join-group'] = 'SQL uttryck för att lägga till en användare i en existerande grupp';
$lang['leave-group'] = 'SQL uttryck för att ta bort en användare från en grupp';
$lang['check-pass'] = 'SQL uttryck för att kontrollera en användares lösenord. Kan lämnas tomt utifall informationen hämtas i "select-user".';

View File

@ -0,0 +1,8 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Mete Cuma <mcumax@gmail.com>
*/
$lang['connectfail'] = 'Veritabanına bağlantı kurulamadı.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Dmytro Marchenko <dmytro.marchenko1989@gmail.com>
*/
$lang['connectfail'] = 'Не вдалося підключитися до бази даних.';
$lang['userexists'] = 'На жаль, користувач із цим логіном вже існує.';
$lang['writefail'] = 'Неможливо змінити дані користувача. Будь-ласка, повідомте про це Wiki-Адміністратора';

View File

@ -0,0 +1,15 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Dmytro Marchenko <dmytro.marchenko1989@gmail.com>
*/
$lang['dsn'] = 'DSN для підключення до бази даних.';
$lang['user'] = 'Користувач для вищевказаного з\'єднання з базою даних (порожній для sqlite)';
$lang['pass'] = 'Пароль для вищезазначеного з\'єднання з базою даних (порожній для sqlite)';
$lang['select-user'] = 'Запит SQL для вибору даних одного користувача';
$lang['select-user-groups'] = 'Запит SQL для вибору всіх груп одного користувача';
$lang['select-groups'] = 'Запит SQL для вибору всіх доступних груп';
$lang['insert-user'] = 'Запит SQL для вставки нового користувача в базу даних';
$lang['delete-user'] = 'Запит SQL для видалення одного користувача з бази даних';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Thien Hau <thienhau.9a14@gmail.com>
*/
$lang['connectfail'] = 'Không thể kết nối với cơ sở dữ liệu.';
$lang['userexists'] = 'Xin lỗi, thành viên có thông tin đăng nhập này đã tồn tại.';
$lang['writefail'] = 'Không thể sửa đổi dữ liệu thành viên. Vui lòng thông báo cho Quản trị viên Wiki';

View File

@ -0,0 +1,25 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Thien Hau <thienhau.9a14@gmail.com>
*/
$lang['debug'] = 'In ra các thông báo lỗi chi tiết. Nên bị vô hiệu hóa sau khi thiết lập.';
$lang['dsn'] = 'DSN để kết nối với cơ sở dữ liệu.';
$lang['user'] = 'Thành viên cho kết nối cơ sở dữ liệu trên (trống cho sqlite)';
$lang['pass'] = 'Mật khẩu cho kết nối cơ sở dữ liệu trên (trống cho sqlite)';
$lang['select-user'] = 'Câu lệnh SQL để chọn dữ liệu của một thành viên';
$lang['select-user-groups'] = 'Câu lệnh SQL để chọn tất cả các nhóm của một thành viên';
$lang['select-groups'] = 'Câu lệnh SQL để chọn tất cả các nhóm có sẵn';
$lang['insert-user'] = 'Câu lệnh SQL để chèn thành viên mới vào cơ sở dữ liệu';
$lang['delete-user'] = 'Câu lệnh SQL để xóa một thành viên khỏi cơ sở dữ liệu';
$lang['list-users'] = 'Câu lệnh SQL để liệt kê thành viên khớp với bộ lọc';
$lang['count-users'] = 'Câu lệnh SQL để đếm thành viên khớp với bộ lọc';
$lang['update-user-info'] = 'Câu lệnh SQL để cập nhật tên đầy đủ và địa chỉ thư điện tử của một thành viên';
$lang['update-user-login'] = 'Câu lệnh SQL để cập nhật tên đăng nhập của một thành viên';
$lang['update-user-pass'] = 'Câu lệnh SQL để cập nhật mật khẩu của một thành viên';
$lang['insert-group'] = 'Câu lệnh SQL để chèn một nhóm mới vào cơ sở dữ liệu';
$lang['join-group'] = 'Câu lệnh SQL để thêm thành viên vào một nhóm hiện có';
$lang['leave-group'] = 'Câu lệnh SQL để xóa thành viên khỏi một nhóm';
$lang['check-pass'] = 'Câu lệnh SQL để kiểm tra mật khẩu của thành viên. Có thể để trống nếu thông tin mật khẩu được tìm nạp trong thành viên chọn.';

View File

@ -0,0 +1,10 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Errol <errol@hotmail.com>
*/
$lang['connectfail'] = '连接数据库失败';
$lang['userexists'] = '抱歉,用户名已被使用。';
$lang['writefail'] = '无法修改用户数据。请通知管理员';

View File

@ -0,0 +1,26 @@
<?php
/**
* @license GPL 2 (http://www.gnu.org/licenses/gpl.html)
*
* @author Phy <dokuwiki@phy25.com>
* @author Aaron Zhou <iradio@163.com>
*/
$lang['debug'] = '打印详细的错误信息。应该在设定完成后禁用。';
$lang['dsn'] = '连接到数据库的DSN';
$lang['user'] = '以上数据库连接的用户名sqlite 留空)';
$lang['pass'] = '以上数据库连接的密码 sqlite 留空)';
$lang['select-user'] = '选择单一用户数据的SQL语句';
$lang['select-user-groups'] = '选择单一用户所有用户组的SQL语句';
$lang['select-groups'] = '选择所有有效组的SQL语句';
$lang['insert-user'] = '向数据库插入一个新用户的SQL语句';
$lang['delete-user'] = '从数据库中移除单个用户的SQL语句';
$lang['list-users'] = '列出与筛选条件匹配用户的SQL语句';
$lang['count-users'] = '统计与筛选条件匹配的用户数量的SQL语句';
$lang['update-user-info'] = '更新单一用户全名和email地址的SQL语句';
$lang['update-user-login'] = '更新单一用户登录名的SQL语句';
$lang['update-user-pass'] = '更新单一用户密码的SQL语句';
$lang['insert-group'] = '向数据库中插入一个新组的SQL语句';
$lang['join-group'] = '把用户增加到现有用户组的 SQL 语句';
$lang['leave-group'] = '把用户移除出现有用户组的 SQL 语句';
$lang['check-pass'] = '查询用户密码的 SQL 语句(如密码在 select-user 查询时已经获取,则本设置可留空)';

View File

@ -0,0 +1,7 @@
base authpdo
author Andreas Gohr
email andi@splitbrain.org
date 2016-08-20
name authpdo plugin
desc Authenticate against a database via PDO
url https://www.dokuwiki.org/plugin:authpdo