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('/registration', array('controller' => 'registration', 'action' => 'main'));
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('/profil', array('controller' => 'user', 'action' => 'profil'));

View File

@ -12,7 +12,6 @@ class RegistrationController extends AppController {
public $componens = array('MiconwareSession');
public $uses = array('Mannerofaddress', 'DreamjobListGraducation', 'DreamjobListBranch', 'DreamjobWorker', 'DreamjobCompany', 'User', 'DreamjobListCity');
public function main() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
@ -136,6 +135,7 @@ class RegistrationController extends AppController {
$this->render('/Home/error');
}
}
public function active() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
@ -149,5 +149,59 @@ class RegistrationController extends AppController {
}
}
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!
@ -1182,3 +1208,10 @@ msgstr ""
msgid "dreamjob.error.opening.notFound.text"
msgstr ""
# -
msgid "dreamjob.error.link.title"
msgstr ""
msgid "dreamjob.error.link.text"
msgstr ""

View File

@ -1,5 +1,6 @@
<?php
App::uses('AppModel', 'Model');
App::uses('CakeEmail', 'Network/Email');
/**
* MicSysMicacc Model
*
@ -42,6 +43,15 @@ class User extends AppModel {
$Email->viewVars(array('data'=>$data,'key'=>$key));
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){
$dataSource = $this->getDataSource();
$dataSource->begin();
@ -60,6 +70,27 @@ class User extends AppModel {
}
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){
$dataSource = $this->getDataSource();
@ -192,6 +223,9 @@ class User extends AppModel {
//'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),
/*
* Legend: a=aktivierungscode, d=deaktivier zur Löschund, f=password vergessen
*/
'code' => array(
'notEmpty' => array(
'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>