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

@ -4,150 +4,204 @@ App::uses('AppController', 'Controller');
class RegistrationController extends AppController {
/**
* This controller use User Model
*
* @var array
*/
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);
if(!$this->MiconwareSession->isLoggedin()){
$this->render('/Registration/main');
}else{
$this->set('error', 'dreamjob.error.loggedin');
$this->render('/Home/error');
}
}
public function company() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
if(!$this->MiconwareSession->isLoggedin()){
$regResult = false;
if ($this->request->is('post')){
if($this->request->data['DreamjobCompany']['agb']) {
unset($this->request->data['DreamjobCompany']['agb']);
if($this->request->data['User']['password1'] == $this->request->data['User']['password2']) {
$data = array();
$data['User']['password'] = $this->MiconwareSession->create_hash($this->request->data['User']['password1']);
$data['User']['mail'] = $this->request->data['User']['mail'];
$data['DreamjobUser']['city_id'] = $this->request->data['DreamjobUser']['city_id'];
$data['DreamjobUser']['street'] = $this->request->data['DreamjobUser']['street'];
$data['DreamjobUser']['postcode'] = $this->request->data['DreamjobUser']['postcode'];
$data['AppUser']['nickname'] = $this->request->data['AppUser']['nickname'];
$data['AppUser']['take_systemwide'] = true;
$data['DreamjobCompany']['corporateform'] = $this->request->data['DreamjobCompany']['corporateform'];
$data['DreamjobCompany']['owner'] = $this->request->data['DreamjobCompany']['owner'];
$data['DreamjobCompany']['branch_id'] = $this->request->data['DreamjobCompany']['branch_id'];
$data['DreamjobCompany']['headcount'] = $this->request->data['DreamjobCompany']['headcount'];
$data['DreamjobCompany']['bank_details'] = '';
//$data['DreamjobCompany']['bank_details'] = $this->request->data['DreamjobCompany']['bank_details'];
$data['DreamjobCompany']['website'] = $this->request->data['DreamjobCompany']['website'];
$key = $this->MiconwareSession->generateKey();
$data['User']['code'] = "a:".$key;
$data['User']['is_active'] = false;
$result = $this->DreamjobCompany->registration($data);
if ($result) {
$regResult = true;
$this->MiconwareSession->setFlash(__('dreamjob.registration.done'),'flash',array('alert'=>'success'));
}else{
$this->MiconwareSession->setFlash(__('dreamjob.registration.error'),'flash',array('alert'=>'danger'));
}
}else if($this->request->data['User']['password1']!='' or $this->request->data['User']['password2']!=''){
$this->MiconwareSession->setFlash(__('dreamjob.error.password.notEqual'),'flash',array('alert'=>'danger'));
}
}else{
$this->MiconwareSession->setFlash(__('dreamjob.agb.error.notAccept'),'flash',array('alert'=>'danger'));
}
}else
if(empty($this->request->data['DreamjobCompany']['website']))
$this->request->data['DreamjobCompany']['website'] ='http://';
$this->set('result',$regResult);
$this->set('cities',$this->DreamjobListCity->find('list'));
$this->set('branches',$this->DreamjobListBranch->find('list'));
$this->render('/Registration/company');
}else{
$this->set('error', 'dreamjob.error.loggedin');
$this->render('/Home/error');
}
}
public function worker() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
if(!$this->MiconwareSession->isLoggedin()){
$regResult = false;
if ($this->request->is('post')){
if($this->request->data['DreamjobWorker']['agb']) {
unset($this->request->data['DreamjobWorker']['agb']);
if($this->request->data['User']['password1'] == $this->request->data['User']['password2']) {
$data = array();
$data['User']['password'] = $this->MiconwareSession->create_hash($this->request->data['User']['password1']);
$data['User']['mail'] = $this->request->data['User']['mail'];
$data['DreamjobUser']['city_id'] = $this->request->data['DreamjobUser']['city_id'];
$data['DreamjobUser']['street'] = $this->request->data['DreamjobUser']['street'];
$data['DreamjobUser']['postcode'] = $this->request->data['DreamjobUser']['postcode'];
$data['AppUser']['bday'] = $this->request->data['AppUser']['bday'];
$data['AppUser']['first_name'] = $this->request->data['AppUser']['first_name'];
$data['AppUser']['last_name'] = $this->request->data['AppUser']['last_name'];
$data['AppUser']['take_systemwide'] = true;
/**
* This controller use User Model
*
* @var array
*/
public $componens = array('MiconwareSession');
public $uses = array('Mannerofaddress', 'DreamjobListGraducation', 'DreamjobListBranch', 'DreamjobWorker', 'DreamjobCompany', 'User', 'DreamjobListCity');
//WORKER
$data['AppUser']['mannerofaddress_id'] = $this->request->data['AppUser']['mannerofaddress_id'];
$data['DreamjobWorker']['country'] = $this->request->data['DreamjobWorker']['country'];
$data['DreamjobWorker']['iam'] = $this->request->data['DreamjobWorker']['iam'];
$data['DreamjobWorker']['graducation_id'] = $this->request->data['DreamjobWorker']['graducation_id'];
$data['DreamjobWorker']['searchhidden'] = true;
$data['DreamjobWorker']['workexperience'] = $this->request->data['DreamjobWorker']['workexperience'];
$key = $this->MiconwareSession->generateKey();
$data['User']['code'] = "a:".$key;
$data['User']['is_active'] = false;
$result = $this->DreamjobWorker->registration($data);
if ($result) {
$regResult = true;
$this->MiconwareSession->setFlash(__('dreamjob.registration.done'),'flash',array('alert'=>'success'));
}else{
$this->MiconwareSession->setFlash(__('dreamjob.registration.error'),'flash',array('alert'=>'danger'));
}
}else if($this->request->data['User']['password1']!='' or $this->request->data['User']['password2']!=''){
$this->MiconwareSession->setFlash(__('dreamjob.error.password.notEqual'),'flash',array('alert'=>'danger'));
}
}else{
$this->MiconwareSession->setFlash(__('dreamjob.agb.error.notAccept'),'flash',array('alert'=>'danger'));
}
}
$this->set('result',$regResult);
$this->set('cities',$this->DreamjobListCity->find('list'));
$this->set('mannerofaddresses',$this->Mannerofaddress->find('list'));
$this->set('graducations',$this->DreamjobListGraducation->find('list'));
$this->render('/Registration/worker');
}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->render('/Home/error');
}
}
public function main() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
if (!$this->MiconwareSession->isLoggedin()) {
$this->render('/Registration/main');
} else {
$this->set('error', 'dreamjob.error.loggedin');
$this->render('/Home/error');
}
}
public function company() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
if (!$this->MiconwareSession->isLoggedin()) {
$regResult = false;
if ($this->request->is('post')) {
if ($this->request->data['DreamjobCompany']['agb']) {
unset($this->request->data['DreamjobCompany']['agb']);
if ($this->request->data['User']['password1'] == $this->request->data['User']['password2']) {
$data = array();
$data['User']['password'] = $this->MiconwareSession->create_hash($this->request->data['User']['password1']);
$data['User']['mail'] = $this->request->data['User']['mail'];
$data['DreamjobUser']['city_id'] = $this->request->data['DreamjobUser']['city_id'];
$data['DreamjobUser']['street'] = $this->request->data['DreamjobUser']['street'];
$data['DreamjobUser']['postcode'] = $this->request->data['DreamjobUser']['postcode'];
$data['AppUser']['nickname'] = $this->request->data['AppUser']['nickname'];
$data['AppUser']['take_systemwide'] = true;
$data['DreamjobCompany']['corporateform'] = $this->request->data['DreamjobCompany']['corporateform'];
$data['DreamjobCompany']['owner'] = $this->request->data['DreamjobCompany']['owner'];
$data['DreamjobCompany']['branch_id'] = $this->request->data['DreamjobCompany']['branch_id'];
$data['DreamjobCompany']['headcount'] = $this->request->data['DreamjobCompany']['headcount'];
$data['DreamjobCompany']['bank_details'] = '';
//$data['DreamjobCompany']['bank_details'] = $this->request->data['DreamjobCompany']['bank_details'];
$data['DreamjobCompany']['website'] = $this->request->data['DreamjobCompany']['website'];
$key = $this->MiconwareSession->generateKey();
$data['User']['code'] = "a:" . $key;
$data['User']['is_active'] = false;
$result = $this->DreamjobCompany->registration($data);
if ($result) {
$regResult = true;
$this->MiconwareSession->setFlash(__('dreamjob.registration.done'), 'flash', array('alert' => 'success'));
} else {
$this->MiconwareSession->setFlash(__('dreamjob.registration.error'), 'flash', array('alert' => 'danger'));
}
} else if ($this->request->data['User']['password1'] != '' or $this->request->data['User']['password2'] != '') {
$this->MiconwareSession->setFlash(__('dreamjob.error.password.notEqual'), 'flash', array('alert' => 'danger'));
}
} else {
$this->MiconwareSession->setFlash(__('dreamjob.agb.error.notAccept'), 'flash', array('alert' => 'danger'));
}
} else
if (empty($this->request->data['DreamjobCompany']['website']))
$this->request->data['DreamjobCompany']['website'] = 'http://';
$this->set('result', $regResult);
$this->set('cities', $this->DreamjobListCity->find('list'));
$this->set('branches', $this->DreamjobListBranch->find('list'));
$this->render('/Registration/company');
}else {
$this->set('error', 'dreamjob.error.loggedin');
$this->render('/Home/error');
}
}
public function worker() {
$this->MiconwareSession->init($this);
$this->MiconwareSession->initWeb($this);
if (!$this->MiconwareSession->isLoggedin()) {
$regResult = false;
if ($this->request->is('post')) {
if ($this->request->data['DreamjobWorker']['agb']) {
unset($this->request->data['DreamjobWorker']['agb']);
if ($this->request->data['User']['password1'] == $this->request->data['User']['password2']) {
$data = array();
$data['User']['password'] = $this->MiconwareSession->create_hash($this->request->data['User']['password1']);
$data['User']['mail'] = $this->request->data['User']['mail'];
$data['DreamjobUser']['city_id'] = $this->request->data['DreamjobUser']['city_id'];
$data['DreamjobUser']['street'] = $this->request->data['DreamjobUser']['street'];
$data['DreamjobUser']['postcode'] = $this->request->data['DreamjobUser']['postcode'];
$data['AppUser']['bday'] = $this->request->data['AppUser']['bday'];
$data['AppUser']['first_name'] = $this->request->data['AppUser']['first_name'];
$data['AppUser']['last_name'] = $this->request->data['AppUser']['last_name'];
$data['AppUser']['take_systemwide'] = true;
//WORKER
$data['AppUser']['mannerofaddress_id'] = $this->request->data['AppUser']['mannerofaddress_id'];
$data['DreamjobWorker']['country'] = $this->request->data['DreamjobWorker']['country'];
$data['DreamjobWorker']['iam'] = $this->request->data['DreamjobWorker']['iam'];
$data['DreamjobWorker']['graducation_id'] = $this->request->data['DreamjobWorker']['graducation_id'];
$data['DreamjobWorker']['searchhidden'] = true;
$data['DreamjobWorker']['workexperience'] = $this->request->data['DreamjobWorker']['workexperience'];
$key = $this->MiconwareSession->generateKey();
$data['User']['code'] = "a:" . $key;
$data['User']['is_active'] = false;
$result = $this->DreamjobWorker->registration($data);
if ($result) {
$regResult = true;
$this->MiconwareSession->setFlash(__('dreamjob.registration.done'), 'flash', array('alert' => 'success'));
} else {
$this->MiconwareSession->setFlash(__('dreamjob.registration.error'), 'flash', array('alert' => 'danger'));
}
} else if ($this->request->data['User']['password1'] != '' or $this->request->data['User']['password2'] != '') {
$this->MiconwareSession->setFlash(__('dreamjob.error.password.notEqual'), 'flash', array('alert' => 'danger'));
}
} else {
$this->MiconwareSession->setFlash(__('dreamjob.agb.error.notAccept'), 'flash', array('alert' => 'danger'));
}
}
$this->set('result', $regResult);
$this->set('cities', $this->DreamjobListCity->find('list'));
$this->set('mannerofaddresses', $this->Mannerofaddress->find('list'));
$this->set('graducations', $this->DreamjobListGraducation->find('list'));
$this->render('/Registration/worker');
} 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->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!
@ -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
*
@ -40,6 +41,15 @@ class User extends AppModel {
$Email->template('delete_order');
$key = substr($data['User']['code'],2);
$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){
@ -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>