summaryrefslogblamecommitdiffstats
path: root/modules/sysconfig/addmodule_ad.inc.php
blob: ab8970960d6a03021d678bc6d5e7780f95959de7 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16















                                                                                                                       

                                                





                                                                                                           
                                                        






                                                     

                         







                                                                             
                                                                                                                

                               

                                                                

                                              













                                                                                                                



                                           
















































                                                                                                                      

         







                                                                                                      
<?php

/*
 * Wizard for setting up active directory integration for authentication.
 */

AddModule_Base::addModule('active_directory', 'AdModule_Start', 'Active Directory Authentifizierung',
	'Mit diesem Modul ist die Anmeldung an den Client PCs mit den Benutzerkonten eines Active Directory'
	. ' möglich. Je nach Konfiguration ist auch die Nutzung eines Benutzerverzeichnisses auf dem Client möglich.'
);

class AdModule_Start extends AddModule_Base
{

	protected function renderInternal()
	{
		Session::set('ad_check', false);
		Session::save();
		Render::addDialog('Active Directory Authentifizierung', false, 'sysconfig/ad-start', array(
			'step' => 'AdModule_CheckConnection',
			'server' => Request::post('server'),
			'searchbase' => Request::post('searchbase'),
			'binddn' => Request::post('binddn'),
			'bindpw' => Request::post('bindpw'),
			'token' => Session::get('token')
		));
	}

}

class AdModule_CheckConnection extends AddModule_Base
{
	private $taskIds;

	protected function preprocessInternal()
	{
		$server = Request::post('server');
		$searchbase = Request::post('searchbase');
		$binddn = Request::post('binddn');
		$bindpw = Request::post('bindpw');
		if (empty($server) || empty($searchbase) || empty($binddn)) {
			Message::addError('empty-field');
			AddModule_Base::setStep('AdModule_Start'); // Continues with AdModule_Start for render()
			return;
		}
		/*
		$data = Taskmanager::submit('LdapSearch', array(
			'id' => $this->taskId,
			'uri' => ''
		));
		*/
		$ldapSearch = Taskmanager::submit('DummyTask', array());
		if (isset($ldapSearch['id'])) {
			$dummy = Taskmanager::submit('DummyTask', array('parentTask' => $ldapSearch['id']));
		}
		if (!isset($ldapSearch['id']) || !isset($dummy['id'])) {
			AddModule_Base::setStep('AdModule_Start'); // Continues with AdModule_Start for render()
			return;
		}
		$this->taskIds = array(
			'tm-search' => $ldapSearch['id'],
			'tm-dummy' => $dummy['id']
		);
	}
	
	protected function renderInternal()
	{
		Render::addDialog('Active Directory Authentifizierung', false, 'sysconfig/ad-checkconnection', 
			array_merge($this->taskIds, array(
				'server' => Request::post('server'),
				'searchbase' => Request::post('searchbase'),
				'binddn' => Request::post('binddn'),
				'bindpw' => Request::post('bindpw'),
				'token' => Session::get('token'),
				'step' => 'AdModule_Finish'
			))
		);
	}

}

class AdModule_Finish extends AddModule_Base
{

	private $taskIds;

	protected function preprocessInternal()
	{
		$data = json_encode(array(
			'server' => Request::post('server'),
			'searchbase' => Request::post('searchbase'),
			'binddn' => Request::post('binddn'),
			'bindpw' => Request::post('bindpw'),
		));
		Database::exec("INSERT INTO configtgz_module (title, moduletype, filename, contents) "
			. " VALUES (:title, 'AD_AUTH', '', :content)", array(
				'title' => 'AD: ' . Request::post('server'),
				'content' => $data));
		$id = Database::lastInsertId();
		$name = CONFIG_TGZ_LIST_DIR . '/modules/AD_AUTH_id_' . $id . '.' . mt_rand() . '.tgz';
		Database::exec("UPDATE configtgz_module SET filename = :filename WHERE moduleid = :id LIMIT 1", array(
			'id' => $id,
			'filename' => $name
		));
		$tgz = Taskmanager::submit('DummyTask', array());
		if (isset($tgz['id'])) {
			$ldadp = Taskmanager::submit('DummyTask', array('parentTask' => $tgz['id']));
		}
		if (!isset($tgz['id']) || !isset($ldadp['id'])) {
			AddModule_Base::setStep('AdModule_Start'); // Continues with AdModule_Start for render()
			return;
		}
		$this->taskIds = array(
			'tm-module' => $tgz['id'],
			'tm-ldadp' => $ldadp['id'] 
		);
	}
	
	protected function renderInternal()
	{
		Render::addDialog('Active Directory Authentifizierung', false, 'sysconfig/ad-finish', 
			$this->taskIds
		);
	}

}