DokuWiki Admidio

Alles, was nicht in die anderen Foren passt, kannst du hier loswerden.
march
Beiträge: 4
Registriert: 14. Mai 2014, 10:13

DokuWiki Admidio

Beitrag von march »

Hi

ich hätte da mal eine Frage Admidio ist auf MySQL installiert und ich habe dort alle Benutzer
angelegt besteht die Möglichkeit die User für DokuWiki was ihr ja selbst im Einsatz habt aus
der Admidio UserDatenbank zu verwenden?

Ich hab mir mal ein wenig Arbeit gemacht aber hat jemand vielleicht eine Vorlage?
Das habe ich eingetragen aber wieder auskommentiert da es nicht geht!

# MySQL Auth
#$conf['authtype'] = 'authmysql'; //which authentication backend should be used
#$conf['auth']['mysql']['server'] = 'localhost';
#$conf['auth']['mysql']['user'] = 'admidio';
#$conf['auth']['mysql']['password'] = 'xxx';
#$conf['auth']['mysql']['database'] = 'admidio';
#$conf['auth']['mysql']['debug'] = 0;
#$conf['auth']['mysql']['forwardClearPass'] = 0;
#$conf['auth']['mysql']['TablesToLock']= array("users", "users AS u","groups", "groups AS g", "usergroup", "usergroup AS ug");
#$conf['auth']['mysql']['checkPass'] = "SELECT usr_password
# FROM adm_members AS ug
# JOIN adm_users AS u ON u.usr_id=ug.mem_usr_id
# JOIN adm_roles AS g ON g.rol_id=ug.mem_rol_id
# WHERE usr_login_name='%{user}'
# AND rol_name='%{dgroup}'";
#$conf['auth']['mysql']['getUserInfo'] = "SELECT usr_password, CONCAT(usr_login_name,' ',usr_login_name) AS name, usr_login_name AS mail
# FROM adm_users
# WHERE usr_login_name='%{user}'";
#$conf['auth']['mysql']['getGroups'] = "SELECT rol_name as `group`
# FROM adm_roles g, adm_users u, adm_members ug
# WHERE u.usr_id = ug.mem_usr_id
# AND g.rol_id = ug.mem_rol_id
# AND u.usr_login_name='%{user}'";


Marc
march
Beiträge: 4
Registriert: 14. Mai 2014, 10:13

Re: DokuWiki Admidio

Beitrag von march »

zur Zeile
"SELECT usr_password, CONCAT(usr_login_name,' ',usr_login_name) AS name, usr_login_name AS mail
# FROM adm_users
# WHERE usr_login_name='%{user}'";

den habe ich nicht weiter gebaut da ich schon mit den anderen 2 Statements nicht weiterkomme.
Benutzeravatar
fasse
Administrator
Beiträge: 6170
Registriert: 12. Nov 2005, 16:06

Re: DokuWiki Admidio

Beitrag von fasse »

Hi Marc,

dein Ansatz wird so nicht funktionieren. Du hast jetzt einfach ein SQL Statement dorthin gesetzt, wo der Username stehen soll. Aber das Statement wird nicht ausgeführt. Außerdem wird das Passwort in Admidio verschlüsselt gespeichert. Du würdest also nicht das Originalpasswort zurückbekommen, so dass dokowiki damit nichts anfangen kann.

Wir selber nutzen zwar Dokowiki, haben aber leider keine automatische Anbindung dorthin. Da müsste man noch etwas Logik einbauen.

Gruß
Fasse
march
Beiträge: 4
Registriert: 14. Mai 2014, 10:13

Re: DokuWiki Admidio

Beitrag von march »

Also ein langes Wochenende und ein paar tests
Desweiteren 3 Views und es geht

wenn du das haben willst gib mit einfach bescheid
march
Beiträge: 4
Registriert: 14. Mai 2014, 10:13

Re: DokuWiki Admidio

Beitrag von march »

Also ich habe Dokuwiki an Admidio angebunden und
das funktioniert nun seit einem halben Jahr ohne Probleme

Und unsere User haben nur einen Benutzer
Benutzeravatar
fasse
Administrator
Beiträge: 6170
Registriert: 12. Nov 2005, 16:06

Re: DokuWiki Admidio

Beitrag von fasse »

Wie hast du die Schnittstelle gemacht? Hast du im Admidio Code fest Dokuwiki verdrahtete?

Kannst du mir mal den Code zuschicken? Ich will mir das mal anschauen.

Viele Grüße
Fasse
matcauthon
Beiträge: 12
Registriert: 21. Dez 2015, 12:06

Re: DokuWiki Admidio

Beitrag von matcauthon »

Auch ich wäre an einer Integration von DokuWiki interessiert. Wenn du deine Lösung veröffentlichen magst, wäre das super.
webtist_hanschur
Beiträge: 8
Registriert: 9. Okt 2020, 19:31

Re: DokuWiki Admidio

Beitrag von webtist_hanschur »

ich habe ja die damalige Integration gemacht DokuWiki <=> Admidio anbei der Code
doch das geht in der neuen Version nicht mehr und ich hänge irgenwie wer kann mir weiterhelfen ?

Views für DokuWiki in Admidio Version 2.4 MySQL
-- --------------------------------------------------------

--
-- Stellvertreter-Struktur des Views `groups`
--
DROP VIEW IF EXISTS `groups`;
CREATE TABLE IF NOT EXISTS `groups` (
`gid` int(10) unsigned
,`name` varchar(50)
);
-- --------------------------------------------------------

--
-- Stellvertreter-Struktur des Views `usergroup`
--
DROP VIEW IF EXISTS `usergroup`;
CREATE TABLE IF NOT EXISTS `usergroup` (
`uid` int(10) unsigned
,`gid` int(10) unsigned
);
-- --------------------------------------------------------

--
-- Stellvertreter-Struktur des Views `users`
--
DROP VIEW IF EXISTS `users`;
CREATE TABLE IF NOT EXISTS `users` (
`uid` int(10) unsigned
,`login` varchar(35)
,`password` varchar(35)
,`firstname` varchar(255)
,`lastname` varchar(255)
,`email` varchar(255)
);
-- --------------------------------------------------------

--
-- Struktur des Views `groups`
--
DROP TABLE IF EXISTS `groups`;

CREATE ALGORITHM=UNDEFINED DEFINER=`apdf_admidio`@`%` SQL SECURITY DEFINER VIEW `groups` AS select `adm_roles`.`rol_id` AS `gid`,`adm_roles`.`rol_name` AS `name` from `adm_roles`;

-- --------------------------------------------------------

--
-- Struktur des Views `usergroup`
--
DROP TABLE IF EXISTS `usergroup`;

CREATE ALGORITHM=UNDEFINED DEFINER=`apdf_admidio`@`%` SQL SECURITY DEFINER VIEW `usergroup` AS select `adm_members`.`mem_usr_id` AS `uid`,`adm_members`.`mem_rol_id` AS `gid` from `adm_members`;

-- --------------------------------------------------------

--
-- Struktur des Views `users`
--
DROP TABLE IF EXISTS `users`;

CREATE ALGORITHM=UNDEFINED DEFINER=`apdf_admidio`@`%` SQL SECURITY DEFINER VIEW `users` AS select `T1`.`usr_id` AS `uid`,`T1`.`usr_login_name` AS `login`,`T1`.`usr_password` AS `password`,`T2`.`usd_value` AS `firstname`,`T3`.`usd_value` AS `lastname`,`T4`.`usd_value` AS `email` from (((`adm_users` `T1` left join `adm_user_data` `T2` on(((`T2`.`usd_usr_id` = `T1`.`usr_id`) and (`T2`.`usd_usf_id` = '2')))) left join `adm_user_data` `T3` on(((`T3`.`usd_usr_id` = `T1`.`usr_id`) and (`T3`.`usd_usf_id` = '1')))) left join `adm_user_data` `T4` on(((`T4`.`usd_usr_id` = `T1`.`usr_id`) and (`T4`.`usd_usf_id` = '12')))) where (`T1`.`usr_password` is not null) group by `T1`.`usr_id` order by `T1`.`usr_id` desc;


* TABLE users
* uid login pass firstname lastname email
CREATE VIEW users SELECT T1.usr_id AS uid, T1.usr_login_name AS login, T1.usr_password AS password, T2.usd_value AS firstname, T3.usd_value AS lastname, T4.usd_value AS email
FROM adm_users AS T1
LEFT JOIN adm_user_data T2 ON T2.usd_usr_id=T1.usr_id AND T2.usd_usf_id='2'
LEFT JOIN adm_user_data T3 ON T3.usd_usr_id=T1.usr_id AND T3.usd_usf_id='1'
LEFT JOIN adm_user_data T4 ON T4.usd_usr_id=T1.usr_id AND T4.usd_usf_id='12'
WHERE T1.usr_password IS NOT NULL
GROUP BY T1.usr_id
ORDER BY T1.usr_id DESC

*
* TABLE groups
* gid name
CREATE VIEW groups SELECT rol_id AS gid, rol_name AS name FROM adm_roles
*
* TABLE usergroup
* uid gid
CREATE VIEW usergroup AS SELECT mem_usr_id AS uid, mem_rol_id AS gid FROM `adm_members`

*
* To use this configuration you have to copy them to local.protected.php
* or at least include this file in local.protected.php.
*/

/* Options to configure database access. You need to set up this
* options carefully, otherwise you won't be able to access you
* database.
*/


Config im Dokuwiki
$conf['authtype'] = 'authmysql';
$conf['defaultgroup'] = 'wiki_user';


$conf['plugin']['authmysql']['server'] = ' ';
$conf['plugin']['authmysql']['user'] = ' ';
$conf['plugin']['authmysql']['password'] = ' ';
$conf['plugin']['authmysql']['database'] = ' ';
$conf['plugin']['authmysql']['debug'] = '1';
$conf['plugin']['authmysql']['forwardClearPass'] = 1;
$conf['plugin']['authmysql']['TablesToLock'] = array('users', 'users AS u', 'groups', 'groups AS g', 'usergroup', 'usergroup AS ug');
$conf['plugin']['authmysql']['checkPass'] = 'SELECT password
FROM usergroup AS ug
JOIN users AS u ON u.uid=ug.uid
JOIN groups AS g ON g.gid=ug.gid
WHERE login=\'%{user}\'
AND name=\'%{dgroup}\'';
$conf['plugin']['authmysql']['getUserInfo'] = 'SELECT password, CONCAT(firstname,\' \',lastname) AS name, email AS mail
FROM users
WHERE login=\'%{user}\'';
$conf['plugin']['authmysql']['getGroups'] = 'SELECT name as `group`
FROM groups g, users u, usergroup ug
WHERE u.uid = ug.uid
AND g.gid = ug.gid
AND u.login=\'%{user}\'';
$conf['plugin']['authmysql']['getUsers'] = 'SELECT DISTINCT login AS user
FROM users AS u
LEFT JOIN usergroup AS ug ON u.uid=ug.uid
LEFT JOIN groups AS g ON ug.gid=g.gid';
$conf['plugin']['authmysql']['FilterLogin'] = 'login LIKE \'%{user}\'';
$conf['plugin']['authmysql']['FilterName'] = 'fullname LIKE \'%{name}\'';
$conf['plugin']['authmysql']['FilterEmail'] = 'email LIKE \'%{email}\'';
$conf['plugin']['authmysql']['FilterGroup'] = 'name LIKE \'%{group}\'';
$conf['plugin']['authmysql']['SortOrder'] = 'ORDER BY login';
Benutzeravatar
fasse
Administrator
Beiträge: 6170
Registriert: 12. Nov 2005, 16:06

Re: DokuWiki Admidio

Beitrag von fasse »

Hier wäre jetzt die Fehlermeldung der Datenbank interessant.

Grob wurde an der Struktur nicht soviel geändert.
webtist_hanschur
Beiträge: 8
Registriert: 9. Okt 2020, 19:31

Re: DokuWiki Admidio

Beitrag von webtist_hanschur »

View 'dbname.groups' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

View 'dbname.usergroup' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them

View 'dbname.users' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
webtist_hanschur
Beiträge: 8
Registriert: 9. Okt 2020, 19:31

Re: DokuWiki Admidio

Beitrag von webtist_hanschur »

CREATE VIEW dbname.usergroup AS SELECT mem_usr_id AS uid, mem_rol_id AS gid FROM `adm_members`
CREATE VIEW dbname.groups AS SELECT rol_id AS gid, rol_name AS name FROM adm_roles
CREATE VIEW dbanme.users AS SELECT T1.usr_id AS uid, T1.usr_login_name AS login, T1.usr_password AS password, T2.usd_value AS firstname, T3.usd_value AS lastname, T4.usd_value AS email
FROM adm_users AS T1
LEFT JOIN adm_user_data T2 ON T2.usd_usr_id=T1.usr_id AND T2.usd_usf_id='2'
LEFT JOIN adm_user_data T3 ON T3.usd_usr_id=T1.usr_id AND T3.usd_usf_id='1'
LEFT JOIN adm_user_data T4 ON T4.usd_usr_id=T1.usr_id AND T4.usd_usf_id='12'
WHERE T1.usr_password IS NOT NULL
AND T1.usr_number_invalid=0
GROUP BY T1.usr_id
ORDER BY T1.usr_id DESC

Fasse ich habe Fertig :-) und es geht jetzt brauche ich nur noch die Logik wie nur aktuelle Mitgliedsuser selektiert werden nicht die Ehemaligen
Zuletzt geändert von webtist_hanschur am 9. Okt 2020, 21:00, insgesamt 1-mal geändert.
Benutzeravatar
fasse
Administrator
Beiträge: 6170
Registriert: 12. Nov 2005, 16:06

Re: DokuWiki Admidio

Beitrag von fasse »

Super. Ich hatte auch zwischenzeitlich gesehen, dass wir doch dazwischen die große Umstellung der Datenstrukturen hatten
webtist_hanschur
Beiträge: 8
Registriert: 9. Okt 2020, 19:31

Re: DokuWiki Admidio

Beitrag von webtist_hanschur »

Logik wird noch benötigt wie ich nur aktuelle user ziehen kann per SQL

mach jetzt aber erst mal schicht .... morgen ist auch noch ein Tag
webtist_hanschur
Beiträge: 8
Registriert: 9. Okt 2020, 19:31

Re: DokuWiki Admidio

Beitrag von webtist_hanschur »

Habe Fertig ....
mit Prüfung ob das Mitglied auch mitglied ist Gruppe mem_rol=2 und aktives Mitglied ist

CREATE VIEW dbanme.users AS SELECT T1.usr_id AS uid, T1.usr_login_name AS login, T1.usr_password AS password, T2.usd_value AS firstname, T3.usd_value AS lastname, T4.usd_value AS email, T5.mem_end FROM adm_users AS T1
LEFT JOIN adm_user_data T2 ON T2.usd_usr_id=T1.usr_id AND T2.usd_usf_id='2'
LEFT JOIN adm_user_data T3 ON T3.usd_usr_id=T1.usr_id AND T3.usd_usf_id='1'
LEFT JOIN adm_user_data T4 ON T4.usd_usr_id=T1.usr_id AND T4.usd_usf_id='12'
LEFT JOIN adm_members T5 ON T5.mem_usr_id=T1.usr_id AND T5.mem_rol_id='2'
WHERE T1.usr_password IS NOT NULL
AND T1.usr_number_invalid=0
AND T5.mem_end>CURDATE()
GROUP BY T1.usr_id
ORDER BY T1.usr_id DESC
webtist_hanschur
Beiträge: 8
Registriert: 9. Okt 2020, 19:31

Re: DokuWiki Admidio

Beitrag von webtist_hanschur »

Funktioniert hat das ganze nun mit dem alten Dokuwiki noch mit authmysql nun baue ich das um auf https://www.dokuwiki.org/plugin:authpdo der Post kommt wie es dann klappt
Antworten