aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvincent-peugnet <v.peugnet@free.fr>2020-05-25 17:05:08 +0200
committervincent-peugnet <v.peugnet@free.fr>2020-05-25 17:05:08 +0200
commit55fc826f9827dd86427534c11594c0d9c4f0b8d1 (patch)
tree173075f643de38d6ac79dc86cd4b1099f99a3eaf
parentbab3d969f6ab1846d818e4ef4d4f777c13575d88 (diff)
downloadwcms-55fc826f9827dd86427534c11594c0d9c4f0b8d1.tar.gz
wcms-55fc826f9827dd86427534c11594c0d9c4f0b8d1.zip
add /login and /logout close #117
-rw-r--r--MANUAL.md8
-rw-r--r--app/class/Controller.php12
-rw-r--r--app/class/Controllerconnect.php2
-rw-r--r--app/class/Controllerpage.php19
-rw-r--r--app/class/Routes.php2
-rw-r--r--app/view/templates/alert.php2
6 files changed, 44 insertions, 1 deletions
diff --git a/MANUAL.md b/MANUAL.md
index c80d525..98113c8 100644
--- a/MANUAL.md
+++ b/MANUAL.md
@@ -597,6 +597,14 @@ Show a `var_dump` of the page object. This could be usefull for debbuging.
<pageid>/duplicate:<newpageid>
+##### /login
+
+If you are not connected yet, this will ask you for credentials.
+
+
+##### /logout
+
+If you were connected, this will disconnect you.
#### Home commands
diff --git a/app/class/Controller.php b/app/class/Controller.php
index c631726..2b38988 100644
--- a/app/class/Controller.php
+++ b/app/class/Controller.php
@@ -161,4 +161,16 @@ class Controller
Model::sendflashmessage($count . ' / ' . $total . ' ' . $message, 'error');
}
}
+
+ /**
+ * Destroy session and cookie token in user database
+ */
+ public function disconnect()
+ {
+ $this->session->addtosession('user', '');
+ $this->user->destroysession($this->session->wsession);
+ $this->session->addtosession('wsession', '');
+ $this->usermanager->add($this->user);
+
+ }
}
diff --git a/app/class/Controllerconnect.php b/app/class/Controllerconnect.php
index 4790c63..bd9f9a3 100644
--- a/app/class/Controllerconnect.php
+++ b/app/class/Controllerconnect.php
@@ -54,7 +54,7 @@ class Controllerconnect extends Controller
$this->usermanager->add($this->user);
$this->session->addtosession('user', $this->user->id());
- if ($_POST['rememberme']) {
+ if (!empty($_POST['rememberme'])) {
if ($this->user->cookie() > 0) {
try {
$this->modelconnect = new Modelconnect();
diff --git a/app/class/Controllerpage.php b/app/class/Controllerpage.php
index c7e1f98..e864dd3 100644
--- a/app/class/Controllerpage.php
+++ b/app/class/Controllerpage.php
@@ -311,6 +311,25 @@ class Controllerpage extends Controller
$this->routedirect('home');
}
+ public function logout(string $id)
+ {
+ if (!$this->user->isvisitor()) {
+ $this->disconnect();
+ $this->routedirect('pageread', ['page' => $id]);
+ } else {
+ $this->routedirect('pageread/', ['page' => $id]);
+ }
+ }
+
+ public function login(string $id)
+ {
+ if ($this->user->isvisitor()) {
+ $this->showtemplate('connect', ['id' => $id, 'route' => 'pageread/']);
+ } else {
+ $this->routedirect('pageread/', ['page' => $id]);
+ }
+ }
+
public function delete($id)
{
$this->setpage($id, 'pagedelete');
diff --git a/app/class/Routes.php b/app/class/Routes.php
index 65d8444..c59531d 100644
--- a/app/class/Routes.php
+++ b/app/class/Routes.php
@@ -61,6 +61,8 @@ class Routes
['GET', '/[cid:page]/render', 'Controllerpage#render', 'pagerender'],
['GET', '/[cid:page]/log', 'Controllerpage#log', 'pagelog'],
['GET', '/[cid:page]/download', 'Controllerpage#download', 'pagedownload'],
+ ['GET', '/[cid:page]/logout', 'Controllerpage#logout', 'pagelogout'],
+ ['GET', '/[cid:page]/login', 'Controllerpage#login', 'pagelogin'],
['POST', '/[cid:page]/edit', 'Controllerpage#update', 'pageupdate'],
['POST', '/[cid:page]/editby', 'Controllerpage#editby', 'pageeditby'],
['POST', '/[cid:page]/removeeditby', 'Controllerpage#removeeditby', 'pageremoveeditby'],
diff --git a/app/view/templates/alert.php b/app/view/templates/alert.php
index 1672443..e4aced5 100644
--- a/app/view/templates/alert.php
+++ b/app/view/templates/alert.php
@@ -38,6 +38,8 @@ $this->stop();
<input type="password" name="pass" id="loginpass" placeholder="password">
<input type="hidden" name="route" value="pageread/">
<input type="hidden" name="id" value="' . $page->id() . '">
+ <input type="checkbox" name="rememberme" id="rememberme" value="1">
+ <label for="rememberme">Remember me</label>
<input type="submit" name="log" value="login" id="button">
</form>
</p>';