mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
Code fuer Accountgenerierung
This commit is contained in:
@@ -28,6 +28,7 @@ require_once('../../../include/benutzer.class.php');
|
||||
require_once('../../../addons/ldap/vilesci/ldap.class.php');
|
||||
require_once('../../../include/phrasen.class.php');
|
||||
require_once('../../../include/Crypt_CHAP-1.5.0/CHAP.php');
|
||||
require_once('../../../include/'.EXT_FKT_PATH.'/passwort.inc.php');
|
||||
|
||||
$uid = get_uid();
|
||||
$db = new basis_db();
|
||||
@@ -99,7 +100,7 @@ if(isset($_POST['change']))
|
||||
if($passwort_neu==$passwort_neu_check)
|
||||
{
|
||||
// Passwort Policy pruefen
|
||||
if(($errormsg = check_policy($passwort_neu))===true)
|
||||
if(($errormsg = check_policy($passwort_neu, $p))===true)
|
||||
{
|
||||
// Passwort aendern
|
||||
if(($msg = change_password($passwort_alt, $passwort_neu, $uid))===true)
|
||||
@@ -108,7 +109,7 @@ if(isset($_POST['change']))
|
||||
}
|
||||
else
|
||||
{
|
||||
echo '<span class="error">'.$msg.'</span>';
|
||||
echo '<span class="error">ERR:'.$msg.'</span>';
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -125,133 +126,4 @@ if(isset($_POST['change']))
|
||||
echo '</body>
|
||||
</html>';
|
||||
|
||||
/**
|
||||
* Prueft die Passwort Policy
|
||||
* @param $passwort_neu das neue Passwort
|
||||
* @return errormsg wenn Policy nicht erfuellt ist oder true wenn ok
|
||||
*/
|
||||
function check_policy($passwort_neu)
|
||||
{
|
||||
global $p;
|
||||
|
||||
// Prüfung des neuen Passwortes
|
||||
$errormsg='';
|
||||
$error=false;
|
||||
// Laenge mindestens 8 Zeichen
|
||||
if(mb_strlen($passwort_neu)<8)
|
||||
{
|
||||
$error=true;
|
||||
$errormsg .= $p->t('passwort/MinLaenge');
|
||||
}
|
||||
|
||||
// Mindestens 1 Großbuchstabe
|
||||
if(!preg_match('/[A-Z]/', $passwort_neu))
|
||||
{
|
||||
$error=true;
|
||||
$errormsg .=$p->t('passwort/Grossbuchstabe');
|
||||
}
|
||||
// Mindestens 1 Kleinbuchstabe
|
||||
if(!preg_match('/[a-z]/', $passwort_neu))
|
||||
{
|
||||
$error=true;
|
||||
$errormsg .=$p->t('passwort/Kleinbuchstabe');
|
||||
}
|
||||
|
||||
// Mindestens 1 Ziffer
|
||||
if(!preg_match('/[0-9]/', $passwort_neu))
|
||||
{
|
||||
$error=true;
|
||||
$errormsg .=$p->t('passwort/Ziffer');
|
||||
}
|
||||
|
||||
// Keine Leerzeichen
|
||||
if(strstr($passwort_neu, ' '))
|
||||
{
|
||||
$error=true;
|
||||
$errormsg .=$p->t('passwort/Leerzeichen');
|
||||
}
|
||||
|
||||
// keine Umlaute
|
||||
if(preg_match('/[ÄÖÜäöü]/', $passwort_neu))
|
||||
{
|
||||
$error=true;
|
||||
$errormsg .=$p->t('passwort/Umlaute');
|
||||
}
|
||||
|
||||
// Sonderzeichen
|
||||
if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z\-\$#\[\]\{\}!\(\)\.,\*:;_]{8,1024}$/', $passwort_neu))
|
||||
{
|
||||
$error=true;
|
||||
$errormsg.=$p->t('passwort/Sonderzeichen');
|
||||
}
|
||||
|
||||
if($error)
|
||||
return $errormsg;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Aendert das Passwort im LDAP
|
||||
* @param $passwort_alt Altes (aktuelles) Passwort
|
||||
* @param $passwort_neu neues Passwort
|
||||
* @param $uid UID
|
||||
* @return true wenn erfolgreich sonst false
|
||||
*/
|
||||
function change_password($passwort_alt, $passwort_neu, $uid)
|
||||
{
|
||||
$ldap = new ldap();
|
||||
|
||||
// Normalen Bind zum LDAP Server
|
||||
if($ldap->connect())
|
||||
{
|
||||
// DN des Users holen
|
||||
if($user_dn = $ldap->GetUserDN($uid))
|
||||
{
|
||||
$ldap->unbind();
|
||||
$ldap = new ldap();
|
||||
|
||||
// Bind des User mit alten Passwort
|
||||
if($ldap->connect(LDAP_SERVER_MASTER,LDAP_PORT,$user_dn, $passwort_alt, LDAP_STARTTLS))
|
||||
{
|
||||
// Passwort verschlüsseln
|
||||
//SSHA
|
||||
$salt = substr(pack('H*',hash('sha1',substr(pack('h*',hash('md5',mt_rand())),0,8).$passwort_neu)),0,4);
|
||||
$encrypted = base64_encode(pack('H*',hash('sha1',$passwort_neu.$salt)).$salt);
|
||||
$ssha_password = '{SSHA}'.$encrypted;
|
||||
|
||||
// LM und NT
|
||||
$hash = new Crypt_CHAP_MSv2();
|
||||
$hash->password = $passwort_neu;
|
||||
// $lm_password = strtoupper(bin2hex($hash->lmPasswordHash()));
|
||||
$nt_password = strtoupper(bin2hex($hash->ntPasswordHash()));
|
||||
|
||||
// Neues Passwort setzen
|
||||
$data = array();
|
||||
$data['userPassword']=$ssha_password;
|
||||
// $data['sambaLMPassword']=$lm_password;
|
||||
$data['sambaNTPassword']=$nt_password;
|
||||
$data['sambaPwdLastSet']=time();
|
||||
$data['sambaPwdMustChange']=2147483647; // 2038-01-19 04:14:07
|
||||
|
||||
if($ldap->Modify($user_dn, $data))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $ldap->errormsg;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return $ldap->errormsg;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return $ldap->errormsg;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -0,0 +1,207 @@
|
||||
<?php
|
||||
/* Copyright (C) 2014 fhcomplete.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; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Österreicher <oesi@technikum-wien.at>
|
||||
*/
|
||||
require_once('../../config/cis.config.inc.php');
|
||||
require_once('../../include/phrasen.class.php');
|
||||
require_once('../../include/sprache.class.php');
|
||||
require_once('../../include/benutzer.class.php');
|
||||
require_once('../../include/securimage/securimage.php');
|
||||
require_once('../../include/'.EXT_FKT_PATH.'/passwort.inc.php');
|
||||
|
||||
if(isset($_GET['sprache']))
|
||||
{
|
||||
$sprache = new sprache();
|
||||
if($sprache->load($_GET['sprache']))
|
||||
{
|
||||
setSprache($_GET['sprache']);
|
||||
}
|
||||
else
|
||||
setSprache(DEFAULT_LANGUAGE);
|
||||
}
|
||||
|
||||
$sprache = getSprache();
|
||||
|
||||
$p = new phrasen($sprache);
|
||||
$securimage = new Securimage();
|
||||
$errormsg='';
|
||||
$db = new basis_db();
|
||||
|
||||
if(isset($_REQUEST['username']))
|
||||
$username = $_REQUEST['username'];
|
||||
else
|
||||
$username='';
|
||||
|
||||
if(isset($_REQUEST['code']))
|
||||
$code = $_REQUEST['code'];
|
||||
else
|
||||
$code ='';
|
||||
|
||||
|
||||
if(isset($_POST['submit']))
|
||||
{
|
||||
// Captcha Pruefen
|
||||
if ($securimage->check($_POST['captcha_code']) == true)
|
||||
{
|
||||
// Benutzer laden
|
||||
$benutzer = new benutzer();
|
||||
if($benutzer->load($username))
|
||||
{
|
||||
// Aktivierungscode pruefen
|
||||
if($benutzer->aktivierungscode==$code)
|
||||
{
|
||||
$passwort = $_POST['passwort'];
|
||||
$passwort2 = $_POST['passwort2'];
|
||||
|
||||
// Vergleichen ob beide Passwoerter gleich sind
|
||||
if($passwort==$passwort2)
|
||||
{
|
||||
// Passwort Policy pruefen
|
||||
if(($errormsg = check_policy($passwort, $p))===true)
|
||||
{
|
||||
// Passwort setzen
|
||||
if(($errormsg = change_password(ACCOUNT_ACTIVATION_PASSWORD, $passwort, $username))===true)
|
||||
{
|
||||
// Code entfernen
|
||||
$benutzer = new benutzer();
|
||||
$benutzer->DeleteAktivierungscode($username);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg='Passwoerter stimmen nicht ueberein';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg='Code oder Username falsch';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg='Code oder Username falsch';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$errormsg= 'Captcha Code falsch';
|
||||
}
|
||||
}
|
||||
|
||||
echo '<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Account Aktivierung</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
||||
<meta name="robots" content="noindex">
|
||||
<link href="../../skin/style.css.php" rel="stylesheet" type="text/css">
|
||||
|
||||
<script type="text/javascript">
|
||||
function changeSprache(sprache)
|
||||
{
|
||||
window.location.href="accountactivation.php?sprache="+sprache;
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<table width="100%" height="100%" cellspacing="0" cellpadding="0" border="0">
|
||||
<tr>
|
||||
<td class="rand"></td>
|
||||
<td class="boxshadow" align="center" valign="top"><br><br>';
|
||||
|
||||
echo ' <table width="100%" border="0">
|
||||
<tr>
|
||||
<td align="left"></td>
|
||||
<td align="right" width="10px">
|
||||
<select style="text-align: right; color: #0086CC; border: 0;" name="select">';
|
||||
$sprache2 = new sprache();
|
||||
$sprache2->getAll(true);
|
||||
foreach($sprache2->result as $row)
|
||||
{
|
||||
echo ' <option onclick="changeSprache(\''.$row->sprache.'\'); return false;" '.($row->sprache==$sprache?'selected':'').'>'.($row->bezeichnung_arr[getSprache()]).' </option>';
|
||||
}
|
||||
echo ' </select></td>
|
||||
</tr>
|
||||
</table>';
|
||||
|
||||
echo '
|
||||
<h1>'.$p->t('passwort/AccountAktivierung').'</h1>
|
||||
'.$p->t('passwort/PasswortWaehlen').'<br>'.
|
||||
$p->t('passwort/InfotextPolicy').'
|
||||
<br><br>';
|
||||
if(!isset($_SERVER['HTTPS']) || (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='off'))
|
||||
{
|
||||
|
||||
$httpspath = str_replace('http://','https://',APP_ROOT).'cis/public/accountactivation.php';
|
||||
echo '<div style="border: 2px solid red; text-align:center">'.$p->t('passwort/NoHttps').'<br>
|
||||
<a href="'.$httpspath.'">'.$p->t('passwort/ZuHttpsWechseln').'</a></div><br>';
|
||||
}
|
||||
|
||||
echo '<br>
|
||||
<span class="error">'.$errormsg.'</span>
|
||||
<br>
|
||||
<form method="POST">
|
||||
<table>
|
||||
<tr>
|
||||
<td>Username</td>
|
||||
<td><input type="text" name="username" value="'.$db->convert_html_chars($username).'"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Code</td>
|
||||
<td><input type="text" size="32" name="code" value="'.$db->convert_html_chars($code).'"/></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>'.$p->t('passwort/NeuesPasswort').'</td>
|
||||
<td><input type="password" name="passwort" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>'.$p->t('passwort/PasswortWiederholung').'</td>
|
||||
<td><input type="password" name="passwort2" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td valign="top">
|
||||
'.$p->t('passwort/CaptchaEingabe').'
|
||||
<br>
|
||||
<a href="#" onclick="document.getElementById(\'captcha\').src = \'../../include/securimage/securimage_show.php?\'+Math.random(); return false">'.$p->t('passwort/ReloadCaptcha').'</a>
|
||||
</td>
|
||||
<td>
|
||||
<img id="captcha" src="../../include/securimage/securimage_show.php" alt="CAPTCHA Image" style="border:1px solid;" />
|
||||
<br>
|
||||
<input type="text" name="captcha_code" size="10" maxlength="6" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td><input type="submit" name="submit" value="Absenden" /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
<td class="rand">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
';
|
||||
?>
|
||||
@@ -1061,6 +1061,7 @@ if(!$error)
|
||||
$benutzer->uid = $uid;
|
||||
$benutzer->person_id = $prestd->person_id;
|
||||
$benutzer->aktiv = true;
|
||||
$benutzer->aktivierungscode = generateActivationKey();
|
||||
|
||||
$nachname_clean = mb_strtolower(convertProblemChars($prestd->nachname));
|
||||
$vorname_clean = mb_strtolower(convertProblemChars($prestd->vorname));
|
||||
|
||||
@@ -28,6 +28,7 @@ class benutzer extends person
|
||||
public $bnaktiv=true; // boolean
|
||||
public $alias; // varchar(256)
|
||||
public $bn_ext_id;
|
||||
public $aktivierungscode;
|
||||
public $result = array();
|
||||
|
||||
/**
|
||||
@@ -57,6 +58,8 @@ class benutzer extends person
|
||||
$this->uid = $row->uid;
|
||||
$this->bnaktiv = $this->db_parse_bool($row->aktiv);
|
||||
$this->alias = $row->alias;
|
||||
$this->aktivierungscode = $row->aktivierungscode;
|
||||
|
||||
if(!person::load($row->person_id))
|
||||
return false;
|
||||
else
|
||||
@@ -152,7 +155,7 @@ class benutzer extends person
|
||||
|
||||
if($new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE
|
||||
{
|
||||
$qry = 'INSERT INTO public.tbl_benutzer (uid, aktiv, alias, person_id, insertamum, insertvon, updateamum, updatevon, ext_id) VALUES('.
|
||||
$qry = 'INSERT INTO public.tbl_benutzer (uid, aktiv, alias, person_id, insertamum, insertvon, updateamum, updatevon, ext_id, aktivierungscode) VALUES('.
|
||||
$this->db_add_param($this->uid).",".
|
||||
$this->db_add_param($this->bnaktiv,FHC_BOOLEAN).",".
|
||||
$this->db_add_param($this->alias).",".
|
||||
@@ -161,7 +164,8 @@ class benutzer extends person
|
||||
$this->db_add_param($this->insertvon).",".
|
||||
$this->db_add_param($this->updateamum).",".
|
||||
$this->db_add_param($this->updatevon).",".
|
||||
$this->db_add_param($this->bn_ext_id).");";
|
||||
$this->db_add_param($this->bn_ext_id).",".
|
||||
$this->db_add_param($this->aktivierungscode).");";
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -404,5 +408,21 @@ class benutzer extends person
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Entfernt den Aktivierungscode eines Users
|
||||
* @param $username
|
||||
*/
|
||||
public function DeleteAktivierungscode($username)
|
||||
{
|
||||
$qry = "UPDATE public.tbl_benutzer SET aktivierungscode=null WHERE uid=".$db->db_add_param($username);
|
||||
if($this->db_query($qry))
|
||||
return true;
|
||||
else
|
||||
{
|
||||
$this->errormsg = 'Fehler beim Loeschen des Aktivierungscodes';
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -943,4 +943,16 @@ function generateSemesterList($semester, $anzahlFolgesemester)
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generiert einen Aktivierungscode
|
||||
*/
|
||||
function generateActivationKey()
|
||||
{
|
||||
$keyvalues=array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');
|
||||
$key='';
|
||||
for($i=0;$i<32;$i++)
|
||||
$key.=$keyvalues[mt_rand(0,15)];
|
||||
|
||||
return md5(encryptData(uniqid(mt_rand(), true),$key));
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -31,7 +31,7 @@ class rdf
|
||||
public $xml_header='<?xml version="1.0" encoding="UTF-8" standalone="yes"?>'; // string
|
||||
public $xml_ns; // string
|
||||
protected $rdf_url; // string
|
||||
protected static $rdf_text;
|
||||
protected $rdf_text;
|
||||
protected static $nl="\n";
|
||||
protected static $tb="\t";
|
||||
|
||||
|
||||
@@ -0,0 +1,182 @@
|
||||
<?php
|
||||
/* Copyright (C) 2014 fhcomplete.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; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
||||
*
|
||||
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
|
||||
*/
|
||||
/**
|
||||
* Funktionen zum Pruefen der Passwort Policy und setzen des Passworts
|
||||
*/
|
||||
require_once(dirname(__FILE__).'/../addon.class.php');
|
||||
|
||||
// die aktiven Addons werden durchsucht, ob eines davon eine eigene UID Generierung vorsieht
|
||||
// falls ja, wird die Version des Addons genommen, ansonsten die Default Generierung
|
||||
$passwort_addon_found=false;
|
||||
$passwort_addons = new addon();
|
||||
|
||||
foreach($passwort_addons->aktive_addons as $addon)
|
||||
{
|
||||
$passwort_addon_filename = dirname(__FILE__).'/../../addons/'.$addon.'/vilesci/passwort.inc.php';
|
||||
|
||||
if(file_exists($passwort_addon_filename))
|
||||
{
|
||||
include($passwort_addon_filename);
|
||||
$passwort_addon_found=true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!$passwort_addon_found)
|
||||
{
|
||||
|
||||
/**
|
||||
* Prueft die Passwort Policy
|
||||
* Das Passwort muss zumindest 8 Zeichen enthalten, davon mindestens 1 Großbuchstabe,
|
||||
* 1 Kleinbuchstabe und eine Ziffer!
|
||||
* Das Passwort darf keine Leerzeichen und Umlaute enthalten!
|
||||
* Erlaubte Sonderzeichen sind: -$#[]{}!().,*:;_
|
||||
*
|
||||
* @param $passwort_neu das neue Passwort
|
||||
* @param $p Phrasen Objekt - Wenn nicht uebergeben werden die Fehler in der Default Langauge angezeigt
|
||||
* @return errormsg wenn Policy nicht erfuellt ist oder true wenn ok
|
||||
*/
|
||||
function check_policy($passwort_neu, $p=null)
|
||||
{
|
||||
if(is_null($p))
|
||||
$p = new phrase(DEFAULT_LANGUAGE);
|
||||
|
||||
// Prüfung des neuen Passwortes
|
||||
$errormsg='';
|
||||
$error=false;
|
||||
// Laenge mindestens 8 Zeichen
|
||||
if(mb_strlen($passwort_neu)<8)
|
||||
{
|
||||
$error=true;
|
||||
$errormsg .= $p->t('passwort/MinLaenge');
|
||||
}
|
||||
|
||||
// Mindestens 1 Großbuchstabe
|
||||
if(!preg_match('/[A-Z]/', $passwort_neu))
|
||||
{
|
||||
$error=true;
|
||||
$errormsg .=$p->t('passwort/Grossbuchstabe');
|
||||
}
|
||||
// Mindestens 1 Kleinbuchstabe
|
||||
if(!preg_match('/[a-z]/', $passwort_neu))
|
||||
{
|
||||
$error=true;
|
||||
$errormsg .=$p->t('passwort/Kleinbuchstabe');
|
||||
}
|
||||
|
||||
// Mindestens 1 Ziffer
|
||||
if(!preg_match('/[0-9]/', $passwort_neu))
|
||||
{
|
||||
$error=true;
|
||||
$errormsg .=$p->t('passwort/Ziffer');
|
||||
}
|
||||
|
||||
// Keine Leerzeichen
|
||||
if(strstr($passwort_neu, ' '))
|
||||
{
|
||||
$error=true;
|
||||
$errormsg .=$p->t('passwort/Leerzeichen');
|
||||
}
|
||||
|
||||
// keine Umlaute
|
||||
if(preg_match('/[ÄÖÜäöü]/', $passwort_neu))
|
||||
{
|
||||
$error=true;
|
||||
$errormsg .=$p->t('passwort/Umlaute');
|
||||
}
|
||||
|
||||
// Sonderzeichen
|
||||
if(!preg_match('/^(?=.*\d)(?=.*[A-Za-z])[0-9A-Za-z\-\$#\[\]\{\}!\(\)\.,\*:;_]{8,1024}$/', $passwort_neu))
|
||||
{
|
||||
$error=true;
|
||||
$errormsg.=$p->t('passwort/Sonderzeichen');
|
||||
}
|
||||
|
||||
if($error)
|
||||
return $errormsg;
|
||||
else
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Aendert das Passwort im LDAP
|
||||
* @param $passwort_alt Altes (aktuelles) Passwort
|
||||
* @param $passwort_neu neues Passwort
|
||||
* @param $uid UID
|
||||
* @return true wenn erfolgreich sonst false
|
||||
*/
|
||||
function change_password($passwort_alt, $passwort_neu, $uid)
|
||||
{
|
||||
$ldap = new ldap();
|
||||
|
||||
// Normalen Bind zum LDAP Server
|
||||
if($ldap->connect())
|
||||
{
|
||||
// DN des Users holen
|
||||
if($user_dn = $ldap->GetUserDN($uid))
|
||||
{
|
||||
$ldap->unbind();
|
||||
$ldap = new ldap();
|
||||
|
||||
// Bind des User mit alten Passwort
|
||||
if($ldap->connect(LDAP_SERVER_MASTER,LDAP_PORT,$user_dn, $passwort_alt, LDAP_STARTTLS))
|
||||
{
|
||||
// Passwort verschlüsseln
|
||||
//SSHA
|
||||
$salt = substr(pack('H*',hash('sha1',substr(pack('h*',hash('md5',mt_rand())),0,8).$passwort_neu)),0,4);
|
||||
$encrypted = base64_encode(pack('H*',hash('sha1',$passwort_neu.$salt)).$salt);
|
||||
$ssha_password = '{SSHA}'.$encrypted;
|
||||
|
||||
// LM und NT
|
||||
$hash = new Crypt_CHAP_MSv2();
|
||||
$hash->password = $passwort_neu;
|
||||
// $lm_password = strtoupper(bin2hex($hash->lmPasswordHash()));
|
||||
$nt_password = strtoupper(bin2hex($hash->ntPasswordHash()));
|
||||
|
||||
// Neues Passwort setzen
|
||||
$data = array();
|
||||
$data['userPassword']=$ssha_password;
|
||||
// $data['sambaLMPassword']=$lm_password;
|
||||
$data['sambaNTPassword']=$nt_password;
|
||||
$data['sambaPwdLastSet']=time();
|
||||
$data['sambaPwdMustChange']=2147483647; // 2038-01-19 04:14:07
|
||||
|
||||
if($ldap->Modify($user_dn, $data))
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $ldap->errormsg;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return $ldap->errormsg;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return $ldap->errormsg;
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -22,5 +22,9 @@ $this->phrasen['passwort/AenderungFehler']='Passwort Änderung fehlgeschlagen:%s
|
||||
$this->phrasen['passwort/NichtUebereinstimmend']='Passwörter stimmen nicht überein';
|
||||
$this->phrasen['passwort/NoHttps']='ACHTUNG - Sie verwenden eine unverschlüsselte Verbindung. Sie sollten Ihr Passwort nur über eine verschlüsselte Verbindung ändern.';
|
||||
$this->phrasen['passwort/ZuHttpsWechseln']='Jetzt zu verschlüsselter Verbindung wechseln';
|
||||
$this->phrasen['passwort/CaptchaEingabe']='Tippen Sie die angezeigten<br>Zeichen in das untere Feld.';
|
||||
$this->phrasen['passwort/ReloadCaptcha']='Ich kann das Bild nicht lesen - neu laden';
|
||||
$this->phrasen['passwort/PasswortWaehlen']='Bitte wählen Sie ein Passwort für Ihren Account';
|
||||
$this->phrasen['passwort/AccountAktivierung']='Account Aktivierung';
|
||||
|
||||
?>
|
||||
|
||||
+37
-1
@@ -1265,6 +1265,42 @@ if($result = @$db->db_query("SELECT 1 FROM information_schema.columns WHERE tabl
|
||||
}
|
||||
}
|
||||
|
||||
// aktivierungscode in tbl_benutzer
|
||||
if(!$result = @$db->db_query("SELECT aktivierungscode FROM public.tbl_benutzer LIMIT 1"))
|
||||
{
|
||||
$qry = "ALTER TABLE public.tbl_benutzer ADD COLUMN aktivierungscode varchar(64);";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>public.tbl_benutzer: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'public.tbl_benutzer: Spalte aktivierungscode hinzugefuegt';
|
||||
}
|
||||
|
||||
// Diverse neue Indexe
|
||||
if($result = $db->db_query("SELECT * FROM pg_class WHERE relname='idx_lehrveranstaltung_studiengang'"))
|
||||
{
|
||||
if($db->db_num_rows($result)==0)
|
||||
{
|
||||
|
||||
$qry = "
|
||||
DROP INDEX idx_lehreinheit_lehrfach_id;
|
||||
CREATE INDEX idx_lehrveranstaltung_studiengang ON lehre.tbl_lehrveranstaltung USING btree (studiengang_kz);
|
||||
CREATE INDEX idx_lehrveranstaltung_semester ON lehre.tbl_lehrveranstaltung USING btree (semester);
|
||||
CREATE INDEX idx_lehreinheit_lehrveranstaltung_id ON lehre.tbl_lehreinheit USING btree (lehrveranstaltung_id);
|
||||
CREATE INDEX idx_studienplan_studienordnung_id ON lehre.tbl_studienplan USING btree (studienordnung_id);
|
||||
CREATE INDEX idx_studienplan_lehrveranstaltung_lehrveranstaltung_id ON lehre.tbl_studienplan_lehrveranstaltung USING btree (lehrveranstaltung_id);
|
||||
CREATE INDEX idx_studienplan_lehrveranstaltung_stpllvid ON lehre.tbl_studienplan_lehrveranstaltung USING btree (studienplan_id, lehrveranstaltung_id);
|
||||
CREATE INDEX idx_studienplan_lehrveranstaltung_studienplan_id ON lehre.tbl_studienplan_lehrveranstaltung USING btree (studienplan_id);
|
||||
CREATE INDEX idx_studienplan_lehrveranstaltung_parent_id ON lehre.tbl_studienplan_lehrveranstaltung USING btree (studienplan_lehrveranstaltung_id_parent);
|
||||
CREATE INDEX idx_lehreinheit_lehrfach_id ON lehre.tbl_lehreinheit USING btree (lehrfach_id)
|
||||
";
|
||||
|
||||
if(!$db->db_query($qry))
|
||||
echo '<strong>Indizes: '.$db->db_last_error().'</strong><br>';
|
||||
else
|
||||
echo 'Diverse Indexe fuer Studienpan und Lehrveranstaltung hinzugefuegt';
|
||||
}
|
||||
|
||||
echo '<br><br><br>';
|
||||
|
||||
$tabellen=array(
|
||||
@@ -1400,7 +1436,7 @@ $tabellen=array(
|
||||
"public.tbl_aufmerksamdurch" => array("aufmerksamdurch_kurzbz","beschreibung","ext_id"),
|
||||
"public.tbl_aufnahmeschluessel" => array("aufnahmeschluessel"),
|
||||
"public.tbl_bankverbindung" => array("bankverbindung_id","person_id","name","anschrift","bic","blz","iban","kontonr","typ","verrechnung","updateamum","updatevon","insertamum","insertvon","ext_id","oe_kurzbz"),
|
||||
"public.tbl_benutzer" => array("uid","person_id","aktiv","alias","insertamum","insertvon","updateamum","updatevon","ext_id","updateaktivvon","updateaktivam"),
|
||||
"public.tbl_benutzer" => array("uid","person_id","aktiv","alias","insertamum","insertvon","updateamum","updatevon","ext_id","updateaktivvon","updateaktivam","aktivierungscode"),
|
||||
"public.tbl_benutzerfunktion" => array("benutzerfunktion_id","fachbereich_kurzbz","uid","oe_kurzbz","funktion_kurzbz","semester", "datum_von","datum_bis", "updateamum","updatevon","insertamum","insertvon","ext_id","bezeichnung"),
|
||||
"public.tbl_benutzergruppe" => array("uid","gruppe_kurzbz","studiensemester_kurzbz","updateamum","updatevon","insertamum","insertvon","ext_id"),
|
||||
"public.tbl_buchungstyp" => array("buchungstyp_kurzbz","beschreibung","standardbetrag","standardtext","aktiv","credit_points"),
|
||||
|
||||
@@ -126,11 +126,11 @@ if(isset($_GET['type']) && $_GET['type']=='getortcontent' && isset($_GET['plz'])
|
||||
echo getOrtDropDown($_GET['plz'], $_GET['gemeinde']);
|
||||
exit;
|
||||
}
|
||||
|
||||
function getStudienplanDropDown($studiengang_kz, $orgform_kurzbz='', $studienplan_id='')
|
||||
{
|
||||
$db = new basis_db();
|
||||
|
||||
|
||||
function getStudienplanDropDown($studiengang_kz, $orgform_kurzbz='', $studienplan_id='')
|
||||
{
|
||||
$db = new basis_db();
|
||||
|
||||
$content= '<SELECT id="studienplan_id" name="studienplan_id">
|
||||
<OPTION value="">-- keine Auswahl --</OPTION>';
|
||||
$studienplan = new studienplan();
|
||||
@@ -148,21 +148,21 @@ function getStudienplanDropDown($studiengang_kz, $orgform_kurzbz='', $studienpla
|
||||
|
||||
if($row->aktiv)
|
||||
{
|
||||
if($orgform_kurzbz=='' || $row->orgform_kurzbz=='' || $row->orgform_kurzbz==$orgform_kurzbz)
|
||||
if($orgform_kurzbz=='' || $row->orgform_kurzbz=='' || $row->orgform_kurzbz==$orgform_kurzbz)
|
||||
$content.="<option value='$row->studienplan_id' $selected>$row->bezeichnung</option>";
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
$content.= '</SELECT>';
|
||||
return $content;
|
||||
}
|
||||
|
||||
if(isset($_GET['type']) && $_GET['type']=='getstudienplancontent' && isset($_GET['studiengang_kz']) && isset($_GET['orgform_kurzbz']))
|
||||
{
|
||||
header('Content-Type: text/html; charset=UTF-8');
|
||||
|
||||
echo getStudienplanDropDown($_GET['studiengang_kz'], $_GET['orgform_kurzbz']);
|
||||
exit;
|
||||
return $content;
|
||||
}
|
||||
|
||||
if(isset($_GET['type']) && $_GET['type']=='getstudienplancontent' && isset($_GET['studiengang_kz']) && isset($_GET['orgform_kurzbz']))
|
||||
{
|
||||
header('Content-Type: text/html; charset=UTF-8');
|
||||
|
||||
echo getStudienplanDropDown($_GET['studiengang_kz'], $_GET['orgform_kurzbz']);
|
||||
exit;
|
||||
}
|
||||
?><!DOCTYPE HTML>
|
||||
<html>
|
||||
@@ -472,6 +472,9 @@ $anmerkungen = (isset($_REQUEST['anmerkungen'])?$_REQUEST['anmerkungen']:'');
|
||||
$studiengang_kz = (isset($_REQUEST['studiengang_kz'])?$_REQUEST['studiengang_kz']:'');
|
||||
if($studiengang_kz=='' && isset($_GET['studiengang_kz']))
|
||||
$studiengang_kz = $_GET['studiengang_kz'];
|
||||
if($studiengang_kz=='undefined')
|
||||
$studiengang_kz='';
|
||||
|
||||
$person_id = (isset($_REQUEST['person_id'])?$_REQUEST['person_id']:'');
|
||||
$ueberschreiben = (isset($_REQUEST['ueberschreiben'])?$_REQUEST['ueberschreiben']:'');
|
||||
$studiensemester_kurzbz = (isset($_REQUEST['studiensemester_kurzbz'])?$_REQUEST['studiensemester_kurzbz']:'');
|
||||
@@ -885,6 +888,7 @@ if(isset($_POST['save']))
|
||||
$benutzer->uid = $uid;
|
||||
$benutzer->person_id = $person->person_id;
|
||||
$benutzer->aktiv = true;
|
||||
$benutzer->aktivierungscode = generateActivationKey();
|
||||
|
||||
$nachname_clean = mb_strtolower(convertProblemChars($person->nachname));
|
||||
$vorname_clean = mb_strtolower(convertProblemChars($person->vorname));
|
||||
@@ -1131,7 +1135,7 @@ if($studiengang_kz!='')
|
||||
else
|
||||
echo '<font color="gray">Bitte zuerst einen Studiengang waehlen</font>';
|
||||
echo '</div></td>
|
||||
</tr>';
|
||||
</tr>';
|
||||
|
||||
echo '<tr><td>Incoming:</td><td><input type="checkbox" id="incoming" name="incoming" '.($incoming?'checked':'').' onclick="cmdIncoming()" /></td></tr>';
|
||||
echo '<tr><tr><td></td><td>';
|
||||
@@ -1221,4 +1225,4 @@ if($where!='')
|
||||
</table>
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
</html>
|
||||
|
||||
@@ -500,6 +500,7 @@ if(isset($_POST['save']))
|
||||
$benutzer->alias = $alias;
|
||||
$benutzer->insertamum=date('Y-m-d H:i:s');
|
||||
$benutzer->insertvon = $user;
|
||||
$benutzer->aktivierungscode = generateActivationKey();
|
||||
|
||||
if($benutzer->save(true,false))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user