Erstmal vielen Dank für die schnellen Antworten.
So in etwa habe ich das auch versucht, nur nicht mit der Abfrage
if( $this->Auth->user() ). Das leuchtet mir jetzt aber ein. Sonst wurde der Status zwar gespeichert aber immer wenn ich den login aufrufe. Nun wird der Status aber gar nicht gespeichert. Da ich aber auch den
lastLogin speichern will konnte ich den Code von
mbrod direkt übernehmen, musste nur den Tabellennamen ändern. Es wird aber dennoch nichts gespeichert. Nichtmal wenn ich nur den
lastLogin speichern möchte.
So sieht es jetzt bei mir aus:
- Code: Alles auswählen
function login
(){ if( $this->Auth->user() ) { $this->User->id = $this->Auth->user('id'); $this->User->saveField('lastLogin', date('Y-m-d H:i:s')); $this->User->saveField('loginStatus', '1'); }}
Ich habe bei loginStatus auch schon als Wert
true bzw.
1 ohne einfache Anführungszeichen verwendet aber da passiert leider auch nichts.
Ich vermute das die Auth-Informationen beim Login bzw. beim Abspeichern der Daten noch nicht vorhanden sind. Also das ich bei der SQL-Anweisung noch gar nicht sagen kann um welchen Benutzer es sich handelt.
Die Auth-Komponente nutze ich tatsächlig und ich weiß auch halbwegs das Auth nicht unbedingt was mit der ACL zu tun hat. So ganz verstehe ich das System aber noch nicht, da ich auch das erste mal mit ACL arbeite. Die ACL will ich aber erst einbauen wenn ich meine Interaktionen perfektioniert habe.
Was ich schon schaffe ist die einzelnen Datensätze, die nach dem Login angelegt werden können, mit der jeweiligen user_id abzuspeichern und auch für die Datensätze einen
inProgress zu speichern. Also inProgress = true, wenn ein Datensatz geöffnet wurde und wieder auf false wenn er geschlossen wurde. Das Ganze soll verhindern das später zwei Benutzer gleichzeitig an einem Datensatz arbeiten und die nur Änderungen des letzten Speicherns übernommen werden. Da ist das aber nicht das Problem, da der Benutzer ja schon eingeloggt ist und ich auf die aktiven Benutzerdaten zugreifen kann.
Sieht dann so aus:
- Code: Alles auswählen
function edit
($id = null) { $this->User->updateAll( array('User.inProgress' => 1 ), array('User.id =' => $id ) ); if (!$id &
;&
; empty($this->data)) { $this->Session->setFlash(__
('Invalid user', true)); $this->redirect(array('action' => 'index')); } if (!empty($this->data)) { $this->data['User']['inProgress'] = 0; if ($this->User->save($this->data)) { $this->Session->setFlash(__
('The user has been saved', true)); $this->redirect(array('action' => 'index')); } else { $this->Session->setFlash(__
('The user could not be saved. Please, try again.', true)); } } if (empty($this->data)) { $this->data = $this->User->read(null, $id); } $groups = $this->User->Groups->find('list'); $this->set(compact('groups'));}
Also, wie gesagt, ich vermute das
$this->Auth->user() beim Login noch gar nicht verhanden ist, das ich da was auslesen könnte.