aboutsummaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorvincent-peugnet <v.peugnet@free.fr>2019-08-09 02:56:29 +0200
committervincent-peugnet <v.peugnet@free.fr>2019-08-09 02:56:29 +0200
commit49f827b172dd3c07e3c4562a261557feb1ef03f6 (patch)
treec24e1ff26ccfcd4451de660e5307353b5d787b02 /app
parent87ca0b50e624feacd2caff2057c5ebfb62a7977f (diff)
downloadwcms-49f827b172dd3c07e3c4562a261557feb1ef03f6.tar.gz
wcms-49f827b172dd3c07e3c4562a261557feb1ef03f6.zip
Feature : Users may expire
- user have expiredate - admins can set up this date
Diffstat (limited to 'app')
-rw-r--r--app/class/controllerconnect.php12
-rw-r--r--app/class/controlleruser.php2
-rw-r--r--app/class/modeluser.php17
-rw-r--r--app/class/user.php37
-rw-r--r--app/view/templates/user.php39
5 files changed, 82 insertions, 25 deletions
diff --git a/app/class/controllerconnect.php b/app/class/controllerconnect.php
index 303abf2..bf1b72d 100644
--- a/app/class/controllerconnect.php
+++ b/app/class/controllerconnect.php
@@ -37,11 +37,13 @@ class Controllerconnect extends Controller
if (isset($_POST['pass'])) {
$this->user = $this->usermanager->passwordcheck($_POST['pass']);
if($this->user != false) {
- $this->usermanager->connectcounter($this->user);
- $this->usermanager->writesession($this->user);
- $_SESSION['workspace']['showleftpanel'] = true;
- $_SESSION['workspace']['showrightpanel'] = false;
-
+ if($this->user->expiredate() === false || $this->user->level() === 10 || $this->user->expiredate('date') > $this->now) {
+ $this->user->connectcounter();
+ $this->usermanager->add($this->user);
+ $this->usermanager->writesession($this->user);
+ $_SESSION['workspace']['showleftpanel'] = true;
+ $_SESSION['workspace']['showrightpanel'] = false;
+ }
}
}
if ($id !== null) {
diff --git a/app/class/controlleruser.php b/app/class/controlleruser.php
index 78daa04..d56d999 100644
--- a/app/class/controlleruser.php
+++ b/app/class/controlleruser.php
@@ -13,7 +13,7 @@ class Controlleruser extends Controller
$getuser = $this->usermanager->get($this->user);
if($this->user->isadmin()) {
$userlist = $this->usermanager->getlister();
- $this->showtemplate('user', ['userlist' => $userlist, 'getuser' => $getuser]);
+ $this->showtemplate('user', ['userlist' => $userlist, 'getuser' => $getuser, 'now' => $this->now->format('Y-m-d')]);
} else {
$this->showtemplate('user', ['getuser' => $getuser]);
}
diff --git a/app/class/modeluser.php b/app/class/modeluser.php
index ed8b254..7d14f95 100644
--- a/app/class/modeluser.php
+++ b/app/class/modeluser.php
@@ -50,6 +50,9 @@ class Modeluser extends Modeldb
+ /**
+ * @return array list of User objects
+ */
public function getlister()
{
$userlist = [];
@@ -177,20 +180,6 @@ class Modeluser extends Modeldb
$this->repo->delete($user->id());
}
- /**
- * Incerment connection counter
- *
- * @param string|User $id
- *
- * @return bool
- */
- public function connectcounter($id)
- {
- $user = $this->get($id);
- $user->connectcounter();
- return $this->add($user);
- }
-
}
diff --git a/app/class/user.php b/app/class/user.php
index 7a05f7b..ba3dfea 100644
--- a/app/class/user.php
+++ b/app/class/user.php
@@ -10,6 +10,7 @@ class User
protected $cookie = 0;
protected $columns = ['title', 'datemodif', 'datecreation', 'secure', 'visitcount'];
protected $connectcount = 0;
+ protected $expiredate = false;
public function __construct($datas = [])
{
@@ -85,6 +86,33 @@ class User
return $this->connectcount;
}
+ public function expiredate(string $type = 'string')
+ {
+ if ($type == 'string') {
+ if(!empty($this->expiredate)) {
+ return $this->expiredate->format('Y-m-d');
+ } else {
+ return false;
+ }
+ } elseif ($type == 'date') {
+ if(!empty($this->expiredate)) {
+ return $this->expiredate;
+ } else {
+ return false;
+ }
+ } elseif ($type == 'hrdi') {
+ if(empty($this->expiredate)) {
+ return 'never';
+ } else {
+ $now = new DateTimeImmutable(null, timezone_open("Europe/Paris"));
+ if($this->expiredate < $now) {
+ return 'expired';
+ } else {
+ return hrdi($this->expiredate->diff($now));
+ }
+ }
+ }
+ }
// _______________________ S E T _______________________
@@ -148,6 +176,15 @@ class User
}
}
+ public function setexpiredate($expiredate)
+ {
+ if ($expiredate instanceof DateTimeImmutable) {
+ $this->expiredate = $expiredate;
+ } else {
+ $this->expiredate = DateTimeImmutable::createFromFormat('Y-m-d', $expiredate, new DateTimeZone('Europe/Paris'));
+ }
+ }
+
diff --git a/app/view/templates/user.php b/app/view/templates/user.php
index 7512267..4717ee6 100644
--- a/app/view/templates/user.php
+++ b/app/view/templates/user.php
@@ -16,17 +16,26 @@
<h1>User : <?= $user->id() ?></h1>
+<h2>Infos</h2>
+
+
+<p>Connections count : <?= $getuser->connectcount() ?></p>
+
+<p>Account will expire in : <?= $getuser->expiredate('hrdi') ?></p>
-<form action="<?= $this->url('userpref') ?>" method="post">
<h2>Preferences</h2>
-<input type="number" name="cookie" value="<?= $getuser->cookie() ?>" id="cookie" min="0" max="365">
-<label for="cookie">Cookie conservation time <i>(In days)</i></label>
-<input type="submit" value="submit">
+<form action="<?= $this->url('userpref') ?>" method="post">
+<p>
+ <input type="number" name="cookie" value="<?= $getuser->cookie() ?>" id="cookie" min="0" max="365">
+ <label for="cookie">Cookie conservation time <i>(In days)</i></label>
+ <input type="submit" value="submit">
+</p>
+
</form>
</article>
@@ -40,7 +49,7 @@
<table>
<tr>
-<th>id</th><th>password</th><th>hash</th><th>level</th><th>action</th>
+<th>id</th><th>password</th><th>hash</th><th>level</th><th>set expiration date</th><th>action</th><th>expire</th>
</tr>
<tr>
@@ -67,8 +76,14 @@
</select>
</td>
<td>
+ <input type="date" name="expiredate" id="expiredate" min="<?= $now ?>">
+ </td>
+ <td>
<input type="submit" value="add">
</td>
+ <td>
+
+ </td>
</form>
</tr>
@@ -102,6 +117,13 @@ foreach ($userlist as $user ) {
</select>
</td>
+
+ <td>
+ <input type="date" name="expiredate" id="expiredate"<?= $user->expiredate() !== false ? 'value="' . $user->expiredate('string') . '"' : '' ?>>
+ <span>reset<input type="checkbox" name="expiredate" id="expiredate" value="null"></span>
+
+ </td>
+
<td>
<input type="hidden" name="id" value="<?= $user->id() ?>">
<input type="submit" name="action" value="update">
@@ -110,6 +132,13 @@ foreach ($userlist as $user ) {
</td>
+
+
+ <td>
+ <?= $user->expiredate('hrdi') ?>
+ </td>
+
+
</tr>
<?php