This commit is contained in:
Martin Müller 2014-05-11 15:17:15 +02:00
parent 315fe1ab67
commit 3a4d58f6b9
8 changed files with 303 additions and 143 deletions

View File

@ -36,6 +36,8 @@
Router::connect('/company/registration', array('controller' => 'registration', 'action' => 'company')); Router::connect('/company/registration', array('controller' => 'registration', 'action' => 'company'));
//Router::connect('/registration', array('controller' => 'registration', 'action' => 'main')); //Router::connect('/registration', array('controller' => 'registration', 'action' => 'main'));
Router::connect('/registration', array('controller' => 'registration', 'action' => 'worker')); Router::connect('/registration', array('controller' => 'registration', 'action' => 'worker'));
Router::connect('/password/reset', array('controller' => 'registration', 'action' => 'password_reset'));
Router::connect('/password/replace/:code', array('controller' => 'registration', 'action' => 'password_replace'),array("code" => ".+"));
Router::connect('/registration/active/:code', array('controller' => 'registration', 'action' => 'active'),array("code" => ".+")); Router::connect('/registration/active/:code', array('controller' => 'registration', 'action' => 'active'),array("code" => ".+"));
Router::connect('/profil', array('controller' => 'user', 'action' => 'profil')); Router::connect('/profil', array('controller' => 'user', 'action' => 'profil'));

View File

@ -10,15 +10,14 @@ class RegistrationController extends AppController {
* @var array * @var array
*/ */
public $componens = array('MiconwareSession'); public $componens = array('MiconwareSession');
public $uses = array('Mannerofaddress','DreamjobListGraducation','DreamjobListBranch','DreamjobWorker','DreamjobCompany','User','DreamjobListCity'); public $uses = array('Mannerofaddress', 'DreamjobListGraducation', 'DreamjobListBranch', 'DreamjobWorker', 'DreamjobCompany', 'User', 'DreamjobListCity');
public function main() { public function main() {
$this->MiconwareSession->init($this); $this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this); $this->MiconwareSession->initWeb($this);
if(!$this->MiconwareSession->isLoggedin()){ if (!$this->MiconwareSession->isLoggedin()) {
$this->render('/Registration/main'); $this->render('/Registration/main');
}else{ } else {
$this->set('error', 'dreamjob.error.loggedin'); $this->set('error', 'dreamjob.error.loggedin');
$this->render('/Home/error'); $this->render('/Home/error');
} }
@ -27,12 +26,12 @@ class RegistrationController extends AppController {
public function company() { public function company() {
$this->MiconwareSession->init($this); $this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this); $this->MiconwareSession->initWeb($this);
if(!$this->MiconwareSession->isLoggedin()){ if (!$this->MiconwareSession->isLoggedin()) {
$regResult = false; $regResult = false;
if ($this->request->is('post')){ if ($this->request->is('post')) {
if($this->request->data['DreamjobCompany']['agb']) { if ($this->request->data['DreamjobCompany']['agb']) {
unset($this->request->data['DreamjobCompany']['agb']); unset($this->request->data['DreamjobCompany']['agb']);
if($this->request->data['User']['password1'] == $this->request->data['User']['password2']) { if ($this->request->data['User']['password1'] == $this->request->data['User']['password2']) {
$data = array(); $data = array();
$data['User']['password'] = $this->MiconwareSession->create_hash($this->request->data['User']['password1']); $data['User']['password'] = $this->MiconwareSession->create_hash($this->request->data['User']['password1']);
$data['User']['mail'] = $this->request->data['User']['mail']; $data['User']['mail'] = $this->request->data['User']['mail'];
@ -50,30 +49,30 @@ class RegistrationController extends AppController {
//$data['DreamjobCompany']['bank_details'] = $this->request->data['DreamjobCompany']['bank_details']; //$data['DreamjobCompany']['bank_details'] = $this->request->data['DreamjobCompany']['bank_details'];
$data['DreamjobCompany']['website'] = $this->request->data['DreamjobCompany']['website']; $data['DreamjobCompany']['website'] = $this->request->data['DreamjobCompany']['website'];
$key = $this->MiconwareSession->generateKey(); $key = $this->MiconwareSession->generateKey();
$data['User']['code'] = "a:".$key; $data['User']['code'] = "a:" . $key;
$data['User']['is_active'] = false; $data['User']['is_active'] = false;
$result = $this->DreamjobCompany->registration($data); $result = $this->DreamjobCompany->registration($data);
if ($result) { if ($result) {
$regResult = true; $regResult = true;
$this->MiconwareSession->setFlash(__('dreamjob.registration.done'),'flash',array('alert'=>'success')); $this->MiconwareSession->setFlash(__('dreamjob.registration.done'), 'flash', array('alert' => 'success'));
}else{ } else {
$this->MiconwareSession->setFlash(__('dreamjob.registration.error'),'flash',array('alert'=>'danger')); $this->MiconwareSession->setFlash(__('dreamjob.registration.error'), 'flash', array('alert' => 'danger'));
} }
}else if($this->request->data['User']['password1']!='' or $this->request->data['User']['password2']!=''){ } else if ($this->request->data['User']['password1'] != '' or $this->request->data['User']['password2'] != '') {
$this->MiconwareSession->setFlash(__('dreamjob.error.password.notEqual'),'flash',array('alert'=>'danger')); $this->MiconwareSession->setFlash(__('dreamjob.error.password.notEqual'), 'flash', array('alert' => 'danger'));
} }
}else{ } else {
$this->MiconwareSession->setFlash(__('dreamjob.agb.error.notAccept'),'flash',array('alert'=>'danger')); $this->MiconwareSession->setFlash(__('dreamjob.agb.error.notAccept'), 'flash', array('alert' => 'danger'));
} }
}else } else
if(empty($this->request->data['DreamjobCompany']['website'])) if (empty($this->request->data['DreamjobCompany']['website']))
$this->request->data['DreamjobCompany']['website'] ='http://'; $this->request->data['DreamjobCompany']['website'] = 'http://';
$this->set('result',$regResult); $this->set('result', $regResult);
$this->set('cities',$this->DreamjobListCity->find('list')); $this->set('cities', $this->DreamjobListCity->find('list'));
$this->set('branches',$this->DreamjobListBranch->find('list')); $this->set('branches', $this->DreamjobListBranch->find('list'));
$this->render('/Registration/company'); $this->render('/Registration/company');
}else{ }else {
$this->set('error', 'dreamjob.error.loggedin'); $this->set('error', 'dreamjob.error.loggedin');
$this->render('/Home/error'); $this->render('/Home/error');
} }
@ -82,12 +81,12 @@ class RegistrationController extends AppController {
public function worker() { public function worker() {
$this->MiconwareSession->init($this); $this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this); $this->MiconwareSession->initWeb($this);
if(!$this->MiconwareSession->isLoggedin()){ if (!$this->MiconwareSession->isLoggedin()) {
$regResult = false; $regResult = false;
if ($this->request->is('post')){ if ($this->request->is('post')) {
if($this->request->data['DreamjobWorker']['agb']) { if ($this->request->data['DreamjobWorker']['agb']) {
unset($this->request->data['DreamjobWorker']['agb']); unset($this->request->data['DreamjobWorker']['agb']);
if($this->request->data['User']['password1'] == $this->request->data['User']['password2']) { if ($this->request->data['User']['password1'] == $this->request->data['User']['password2']) {
$data = array(); $data = array();
$data['User']['password'] = $this->MiconwareSession->create_hash($this->request->data['User']['password1']); $data['User']['password'] = $this->MiconwareSession->create_hash($this->request->data['User']['password1']);
$data['User']['mail'] = $this->request->data['User']['mail']; $data['User']['mail'] = $this->request->data['User']['mail'];
@ -108,46 +107,101 @@ class RegistrationController extends AppController {
$data['DreamjobWorker']['workexperience'] = $this->request->data['DreamjobWorker']['workexperience']; $data['DreamjobWorker']['workexperience'] = $this->request->data['DreamjobWorker']['workexperience'];
$key = $this->MiconwareSession->generateKey(); $key = $this->MiconwareSession->generateKey();
$data['User']['code'] = "a:".$key; $data['User']['code'] = "a:" . $key;
$data['User']['is_active'] = false; $data['User']['is_active'] = false;
$result = $this->DreamjobWorker->registration($data); $result = $this->DreamjobWorker->registration($data);
if ($result) { if ($result) {
$regResult = true; $regResult = true;
$this->MiconwareSession->setFlash(__('dreamjob.registration.done'),'flash',array('alert'=>'success')); $this->MiconwareSession->setFlash(__('dreamjob.registration.done'), 'flash', array('alert' => 'success'));
}else{ } else {
$this->MiconwareSession->setFlash(__('dreamjob.registration.error'),'flash',array('alert'=>'danger')); $this->MiconwareSession->setFlash(__('dreamjob.registration.error'), 'flash', array('alert' => 'danger'));
} }
}else if($this->request->data['User']['password1']!='' or $this->request->data['User']['password2']!=''){ } else if ($this->request->data['User']['password1'] != '' or $this->request->data['User']['password2'] != '') {
$this->MiconwareSession->setFlash(__('dreamjob.error.password.notEqual'),'flash',array('alert'=>'danger')); $this->MiconwareSession->setFlash(__('dreamjob.error.password.notEqual'), 'flash', array('alert' => 'danger'));
} }
}else{ } else {
$this->MiconwareSession->setFlash(__('dreamjob.agb.error.notAccept'),'flash',array('alert'=>'danger')); $this->MiconwareSession->setFlash(__('dreamjob.agb.error.notAccept'), 'flash', array('alert' => 'danger'));
} }
} }
$this->set('result',$regResult); $this->set('result', $regResult);
$this->set('cities',$this->DreamjobListCity->find('list')); $this->set('cities', $this->DreamjobListCity->find('list'));
$this->set('mannerofaddresses',$this->Mannerofaddress->find('list')); $this->set('mannerofaddresses', $this->Mannerofaddress->find('list'));
$this->set('graducations',$this->DreamjobListGraducation->find('list')); $this->set('graducations', $this->DreamjobListGraducation->find('list'));
$this->render('/Registration/worker'); $this->render('/Registration/worker');
}else{ } else {
$this->set('error', 'dreamjob.error.loggedin');
$this->render('/Home/error');
}
}
public function active(){
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
if(!$this->MiconwareSession->isLoggedin() and !empty($this->request->params['code']) and !empty($this->request->query['mail']) ){
$result = $this->User->activeLinkUser($this->request->query['mail'],$this->request->params['code']);
$this->set("result",$result);
$this->render('/Registration/active');
}else{
$this->set('error', 'dreamjob.error.loggedin'); $this->set('error', 'dreamjob.error.loggedin');
$this->render('/Home/error'); $this->render('/Home/error');
} }
} }
public function active() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
if (!$this->MiconwareSession->isLoggedin() and ! empty($this->request->params['code']) and ! empty($this->request->query['mail'])) {
$result = $this->User->activeLinkUser($this->request->query['mail'], $this->request->params['code']);
$this->set("result", $result);
$this->render('/Registration/active');
} else {
$this->set('error', 'dreamjob.error.loggedin');
$this->render('/Home/error');
}
}
public function password_reset() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
if (!$this->MiconwareSession->isLoggedin()) {
if ($this->request->is('post')) {
$key = $this->MiconwareSession->generateKey();
$profil['User']['mail'] = $this->request->data['User']['mail'];
$profil['User']['code'] = "f:" . $key;
$result = $this->User->sendPasswortReset($profil);
if ($result) {
$this->MiconwareSession->setFlash(__('dreamjob.password_reset.send'), 'flash', array('alert' => 'success'));
} else {
$this->MiconwareSession->setFlash(__('dreamjob.password_reset.send.error'), 'flash', array('alert' => 'danger'));
}
}
$this->render('/Registration/password_reset');
} else {
$this->set('error', 'dreamjob.error.loggedin');
$this->render('/Home/error');
}
}
public function password_replace() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
if (!$this->MiconwareSession->isLoggedin() and ! empty($this->request->params['code']) and ! empty($this->request->query['mail'])) {
$send = false;
$try = $this->User->find('first',array('conditions'=>array('User.code LIKE'=>'_:'.$this->request->params['code'],'User.mail'=>$this->request->query['mail'])));
if (count($try)<2) {
$this->MiconwareSession->setFlash(__('dreamjob.password_replace.notFound'), 'flash', array('alert' => 'danger'));
$send = true;
}
if (!$send and $this->request->is('post')) {
if ($this->request->data['User']['password1'] == $this->request->data['User']['password2']) {
$profil['User']['password'] = $this->MiconwareSession->create_hash($this->request->data['User']['password1']);
$this->User->id=$try['User']['id'];
$result = $this->User->saveField('password',$profil['User']['password']);
if ($result) {
$this->MiconwareSession->setFlash(__('dreamjob.password_replace.done'), 'flash', array('alert' => 'success'));
} else {
$this->MiconwareSession->setFlash(__('dreamjob.password_replace.error'), 'flash', array('alert' => 'danger'));
}
}else
$this->MiconwareSession->setFlash(__('dreamjob.error.password.notEqual'), 'flash', array('alert' => 'danger'));
}
$this->render('/Registration/password_replace');
} else {
$this->set('error', 'dreamjob.error.link');
$this->render('/Home/error');
}
}
} }
?> ?>

View File

@ -1142,6 +1142,32 @@ msgstr ""
msgid "dreamjob.password.reset"
msgstr ""
msgid "dreamjob.password.replace"
msgstr ""
msgid "dreamjob.password.send"
msgstr ""
msgid "dreamjob.password_reset.send"
msgstr ""
msgid "dreamjob.password_reset.send.error"
msgstr ""
msgid "dreamjob.password_replace.error"
msgstr ""
msgid "dreamjob.password_replace.done"
msgstr ""
msgid "dreamjob.password_replace.notFound"
msgstr ""
# #
# Generierte Fehlermeldungen eigenarbeit! # Generierte Fehlermeldungen eigenarbeit!
@ -1182,3 +1208,10 @@ msgstr ""
msgid "dreamjob.error.opening.notFound.text" msgid "dreamjob.error.opening.notFound.text"
msgstr "" msgstr ""
# -
msgid "dreamjob.error.link.title"
msgstr ""
msgid "dreamjob.error.link.text"
msgstr ""

View File

@ -1,5 +1,6 @@
<?php <?php
App::uses('AppModel', 'Model'); App::uses('AppModel', 'Model');
App::uses('CakeEmail', 'Network/Email');
/** /**
* MicSysMicacc Model * MicSysMicacc Model
* *
@ -42,6 +43,15 @@ class User extends AppModel {
$Email->viewVars(array('data'=>$data,'key'=>$key)); $Email->viewVars(array('data'=>$data,'key'=>$key));
return $Email->send(); return $Email->send();
} }
public static function sendPasswortResetMail($data){
$Email = new CakeEmail('dreamjobMain');
$Email->to($data['User']['mail']);
$Email->subject('Welcome to our really cool thing');
$Email->template('password_reset');
$key = substr($data['User']['code'],2);
$Email->viewVars(array('data'=>$data,'key'=>$key));
return $Email->send();
}
public function sendDelete($data){ public function sendDelete($data){
$dataSource = $this->getDataSource(); $dataSource = $this->getDataSource();
$dataSource->begin(); $dataSource->begin();
@ -60,6 +70,27 @@ class User extends AppModel {
} }
return false; return false;
} }
public function sendPasswortReset($data){
$dataSource = $this->getDataSource();
$dataSource->begin();
$result = $this->findByMail($data['User']['mail']);
if($result)
$this->id = $result['User']['id'];
if($result)
$result = $this->saveField('code',$data['User']['code']);
if($result)
$result = $this->saveField('is_active',false);
if($result)
$result=self::sendPasswortResetMail($data);
if($result) {
$dataSource->commit();
return true;
} else {
$dataSource->rollback();
}
return false;
}
public function activeLinkUser($mail,$key){ public function activeLinkUser($mail,$key){
$dataSource = $this->getDataSource(); $dataSource = $this->getDataSource();
@ -192,6 +223,9 @@ class User extends AppModel {
//'on' => 'create', // Limit validation to 'create' or 'update' operations //'on' => 'create', // Limit validation to 'create' or 'update' operations
), ),
), ),
/*
* Legend: a=aktivierungscode, d=deaktivier zur Löschund, f=password vergessen
*/
'code' => array( 'code' => array(
'notEmpty' => array( 'notEmpty' => array(
'rule' => array('notEmpty'), 'rule' => array('notEmpty'),

View File

@ -0,0 +1,4 @@
<?php
echo $this->Html->link(__('dreamjob.password.reset.link'),array('controller' => 'registration', 'action' => 'password_replace','code'=>$key,
'?'=>array('mail'=>$data['User']['mail']),'full_base' => true) );
?>

View File

@ -0,0 +1,4 @@
<?php
echo $this->Html->url(array('controller'=>'registration','action'=>'password_replace','code'=>$key,
'?'=>array('mail'=>$data['User']['mail'])),true);
?>

View File

@ -0,0 +1,15 @@
<?php
?>
<div class="box">
<h1><?=__('dreamjob.password.replace');?></h1>
<?php
echo $this->Form->create(false,$default_Form);
echo $this->Form->input('User.password1',array('label'=>array('text'=>__("dreamjob.password"),"class"=>$default_Form['inputDefaults']['label']['class']),'type'=>'password'));
echo $this->Form->input('User.password2',array('label'=>array('text'=>__("dreamjob.password2"),"class"=>$default_Form['inputDefaults']['label']['class']),'type'=>'password'));
?>
<div class="buttonrow">
<?=$this->Form->button(__('dreamjob.save'),array('div' => false,'class'=>"btn btn-primary ",'type' => 'submit'));?>
</div>
<?php echo $this->Form->end(); ?>
</div>

View File

@ -0,0 +1,14 @@
<?php
?>
<div class="box">
<h1><?=__('dreamjob.password.reset');?></h1>
<?php
echo $this->Form->create(false,$default_Form);
echo $this->Form->input('User.mail',array('label'=>array('text'=>__("dreamjob.mail"),"class"=>$default_Form['inputDefaults']['label']['class'])));
?>
<div class="buttonrow">
<?=$this->Form->button(__('dreamjob.password.send'),array('div' => false,'class'=>"btn btn-primary ",'type' => 'submit'));?>
</div>
<?php echo $this->Form->end(); ?>
</div>