183 lines
6.4 KiB
PHP
183 lines
6.4 KiB
PHP
<?php
|
|
/**
|
|
* User Controller
|
|
*
|
|
* Der User-Controller enthält alle Funktionen zur Benutzerverwaltung
|
|
*
|
|
* @package baseContent
|
|
* @subpackage user
|
|
*/
|
|
class user_controller extends fl_controller {
|
|
var $defaultAction = 'admin';
|
|
var $from = '';
|
|
var $layout = 'admin';
|
|
|
|
function admin() {
|
|
$this->check_login('user/');
|
|
$this->data['title'] = 'Benutzer-Administration';
|
|
}
|
|
|
|
function add($param='') {
|
|
$this->check_login('user/add/');
|
|
$this->data['title'] = "Neuen Benutzer anlegen";
|
|
|
|
if ( $param == 'save') {
|
|
$data = ( isset( $_POST['fl'] ))? $_POST['fl']: $this->goToTarget('user/add/');
|
|
|
|
$this->functions->needs('validation');
|
|
$val = new validation();
|
|
|
|
$val->set_rule('mail', 'email');
|
|
$val->set_msg('mail', 'Bitten geben Sie eine gültige e-mail-Adresse an.');
|
|
|
|
$errors = $val->validate_form($data);
|
|
|
|
if( $this->model->doesnt_exist($data['name']) == FALSE ) {
|
|
$errors[] = 'Der Username ist bereits vergeben, bitte verwenden Sie einen anderen Namen.';
|
|
}
|
|
|
|
if ( !isset($data['password1']) OR ( empty($data['password1']) AND empty($data['password2']) ) ) {
|
|
$data['password1'] = $data['password2'] = $this->model->generate_PW();
|
|
}
|
|
|
|
if ( $data['password1'] != $data['password2'] ) {
|
|
$errors[] = 'Es wurden zwei verschiedene Passwörter eingetragen';
|
|
}
|
|
|
|
if ( count($errors) == 0 ) {
|
|
$created = $this->model->create_user($data);
|
|
$msg = ( $created == TRUE )?
|
|
'Benutzer '.$data['name'].' wurde angelegt':
|
|
'Fehler beim Anlegen des neuen Benutzers';
|
|
|
|
$this->flash($msg);
|
|
|
|
if ( $created == TRUE ) {
|
|
$sent = $this->model->notify_user($data['name'], $data['password1']);
|
|
$msg = ( $sent == TRUE )?
|
|
'Benutzer ' . $data['name'] . ' wurde per mail an ' . $data['mail'] . ' informiert.':
|
|
'Fehler beim versenden der mail: ' . $sent;
|
|
|
|
$this->flash($msg);
|
|
}
|
|
} else {
|
|
$this->data += $data;
|
|
$msg = implode( '<br>', $errors );
|
|
$this->flash($msg);
|
|
}
|
|
}
|
|
}
|
|
|
|
function edit($params) {
|
|
@list($user, $action) = explode('/', $params);
|
|
if ( !isset($user) OR !is_numeric($user) ) $this->goToTarget('user/');
|
|
|
|
$this->check_login('user/edit/'.$user);
|
|
|
|
if ( isset($action) AND $action == 'save' ) {
|
|
$data = ( isset( $_POST['fl'] ))? $_POST['fl']: $this->goToTarget('user/');
|
|
|
|
$this->functions->needs('validation');
|
|
$val = new validation();
|
|
|
|
$val->set_rule('email', 'email');
|
|
$val->set_msg('email', 'Bitten geben Sie eine gültige e-mail-Adresse an.');
|
|
|
|
$errors = $val->validate_form($data);
|
|
|
|
if ( $data['password1'] == '' ) {
|
|
unset($data['password1'], $data['password2']);
|
|
} else {
|
|
if ( $data['password1'] != $data['password2'] ) {
|
|
$errors[] = 'Es wurden zwei verschiedene Passwörter eingetragen';
|
|
}
|
|
}
|
|
|
|
if ( count($errors) == 0 ) {
|
|
$updated = $this->model->update_user($data, $user);
|
|
$msg = ( $updated == TRUE )?
|
|
'Benutzer '.$user.' wurde aktualisiert':
|
|
'Fehler beim Aktialisieren des Benutzers ('.$user.')' ;
|
|
|
|
$this->flash($msg);
|
|
$this->goToTarget('user/');
|
|
} else {
|
|
$this->data += $data;
|
|
$msg = implode( '<br>', $errors );
|
|
$this->flash($msg);
|
|
}
|
|
} else { /* Formular anzeigen */
|
|
$result = $this->datamodel->retrieve('user', '*', 'id="'.$user.'"', '' ,'1');
|
|
unset($result['password']);
|
|
$this->data += $result;
|
|
$this->data['title'] = "Benutzer ".$result['name']." bearbeiten";
|
|
}
|
|
}
|
|
|
|
function del($user) {
|
|
$user_number = (int) $user;
|
|
$this->check_login('user/del/'.$user);
|
|
$this->data['title'] = "Benutzeraccount löschen";
|
|
|
|
if ( $user_number > 0 AND $user_number == $user ) {
|
|
$user = $user_number;
|
|
}
|
|
|
|
$this->data = $this->model->get_data('user', $user, 'name');
|
|
if ( $this->data['name'] != $_SESSION['username'] ) {
|
|
$this->flash('Sie können nur Ihren eigenen Benutzeraccount löschen.');
|
|
$this->goToTarget('user/');
|
|
} else {
|
|
$this->data['title'] = 'Benutzer "'.$this->data['name'].'" löschen';
|
|
if ( is_string($user) ) {
|
|
$this->flash('Warnung: Der Benutzeraccount wird endgültig gelöscht, wenn sie den unten stehenden Löschknopf betätigen.');
|
|
} elseif ( is_numeric($user) OR empty($user) ) {
|
|
$result = ( $this->datamodel->del('user', $user) )? 'Benutzeraccount von '.$_SESSION['username'].' gelöscht.': 'Fehler beim Löschen des Benutzeraccounts '.$_SESSION['username'];
|
|
$this->flash($result);
|
|
$this->logaction($result);
|
|
$this->goToTarget(ADMINMODULE.'/logout/');
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Neuen Benutzer per e-mail informieren
|
|
*
|
|
* Ein neu angelegter Benutzer erhält eine e-mail mit den Zugangsdaten.
|
|
* Wenn die mail nicht abgeschickt werden kann, werden die Zugangsdaten
|
|
* auf dem Bildschirm ausgegeben.
|
|
*
|
|
* @param array $data Array aus Username, Passwort und e-mail-Adresse
|
|
* @return array erfolgreicher mailversand und Statusmeldung.
|
|
*/
|
|
function _notifyUser($data) {
|
|
$content = "Für Sie wurde ein Benutzerkonto für die Administration der Internetseite \"http://".$_SERVER['HTTP_HOST']."\" eingerichtet.\n\nIhre Zugangsdaten lauten:\nBenutzername:\t".$data['name']."\nPasswort:\t".$data['password']."\n\nBitte ändern Sie das Passwort bei Ihrer ersten Anmeldung auf \"http://".$_SERVER['HTTP_HOST']."/user/\".";
|
|
|
|
$result = $this->datamodel->retrieve(ADMINMODULE.'_options', '*', "optionname='SEITENTITEL'", '', '1');
|
|
$seitentitel = $result['value'];
|
|
|
|
$config[mailreceipient] = $data['email'];
|
|
$config[mailtopic] = '['.$seitentitel.'] Benutzerkonto angelegt';
|
|
$config[mailfrom] = 'usermanagement@'.$_SERVER['HTTP_HOST'];
|
|
|
|
if ( mail($config['mailreceipient'],$config['mailtopic'],$content, "From: {$config[mailfrom]}") ) {
|
|
$notify['mailed'] = TRUE;
|
|
$notify['status'] = "Benutzer wurde per e-mail informiert.";
|
|
} else {
|
|
$notify['mailed'] = FALSE;
|
|
$notify['status'] = "</p><h4>Fehler</h4><p>Auf diesem Server ist kein Mailversand möglich. Bitte teilen Sie dem neuangelegten Benutzer die folgende Nachricht mit:</p><p>".nl2br($content);
|
|
}
|
|
return $notify;
|
|
}
|
|
|
|
function common() {
|
|
if ( isset($_SESSION['username']) ) {
|
|
$this->data += $this->datamodel->retrieve('user', 'id AS my_id, email AS my_email, name AS my_name, level AS my_level', "name = '" . $_SESSION['username'] . "'", '', '1');
|
|
}
|
|
$this->functions->needs('bereiche');
|
|
|
|
return TRUE;
|
|
}
|
|
}
|
|
?>
|