aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/class/application.php1
-rw-r--r--app/class/controller.php10
-rw-r--r--app/class/controlleruser.php19
-rw-r--r--app/class/modeluser.php18
-rw-r--r--app/class/routes.php1
-rw-r--r--app/class/user.php3
-rw-r--r--app/view/templates/user.php20
-rw-r--r--app/view/templates/userconfirmdelete.php17
8 files changed, 75 insertions, 14 deletions
diff --git a/app/class/application.php b/app/class/application.php
index d75df51..39cdd8a 100644
--- a/app/class/application.php
+++ b/app/class/application.php
@@ -29,6 +29,7 @@ class Application
} elseif(isset($_POST['userinit'])) {
$userdata = $_POST['userinit'];
$userdata['level'] = 10;
+ //$userdata['id'] = idclean($userdata['id']);
$user = new User($userdata);
$this->usermanager->add($user);
header('Location: ./');
diff --git a/app/class/controller.php b/app/class/controller.php
index 956d3b5..5dfc09b 100644
--- a/app/class/controller.php
+++ b/app/class/controller.php
@@ -64,6 +64,16 @@ class Controller
$this->redirect($this->router->generate($route, $vars));
}
+ public function routedirectget(string $route, array $vars = [])
+ {
+ $get = '?';
+ foreach ($vars as $key => $value) {
+ $get .= $key .'='. $value. '&';
+ }
+ $get = rtrim($get, '&');
+ $this->redirect($this->router->generate($route, []) . $get);
+ }
+
}
diff --git a/app/class/controlleruser.php b/app/class/controlleruser.php
index 78dd6c1..00b7246 100644
--- a/app/class/controlleruser.php
+++ b/app/class/controlleruser.php
@@ -21,11 +21,28 @@ class Controlleruser extends Controller
{
if(isset($_POST['id'])) {
$user = new User($_POST);
- if(!$this->usermanager->get($user)) {
+ if(empty($user->id()) || $this->usermanager->get($user)) {
+ $this->routedirectget('user', ['error' => 'wrong_id']);
+ } elseif(empty($user->password()) || $this->usermanager->passwordexist($user->password())) {
+ $this->routedirectget('user', ['error' => 'wrong_password']);
+ } else {
$this->usermanager->add($user);
+ $this->routedirect('user');
}
}
}
+
+ public function update()
+ {
+ if($_POST['action'] === 'delete') {
+ $user = new User($_POST);
+ $this->showtemplate('userconfirmdelete', ['userdelete' => $user]);
+ } elseif ($_POST['action'] == 'confirmdelete') {
+ $user = new User($_POST);
+ $this->usermanager->delete($user);
+ $this->routedirect('user');
+ }
+ }
}
diff --git a/app/class/modeluser.php b/app/class/modeluser.php
index 3a5e9f0..e4b7eee 100644
--- a/app/class/modeluser.php
+++ b/app/class/modeluser.php
@@ -109,6 +109,19 @@ class Modeluser extends Modeldb
return true;
}
}
+
+ public function passwordexist(string $pass)
+ {
+ $userdatalist = $this->repo->query()
+ ->where('password', '==', $pass)
+ ->execute();
+
+ if($userdatalist->total() === 0) {
+ return false;
+ } else {
+ return true;
+ }
+ }
public function add(User $user)
{
@@ -133,6 +146,11 @@ class Modeluser extends Modeldb
} else {
return false;
}
+ }
+
+ public function delete(User $user)
+ {
+ $this->repo->delete($user->id());
}
diff --git a/app/class/routes.php b/app/class/routes.php
index 811422f..a72d2e9 100644
--- a/app/class/routes.php
+++ b/app/class/routes.php
@@ -27,7 +27,6 @@ class Routes
['GET', '/!user', 'Controlleruser#desktop', 'user'],
['POST', '/!user/add', 'Controlleruser#add', 'useradd'],
['POST', '/!user/update', 'Controlleruser#update', 'userupdate'],
- ['POST', '/!user/delete', 'Controlleruser#delete', 'userdelete'],
['GET', '/!info', 'Controllerinfo#desktop', 'info'],
['GET', '/!font/render', 'Controllerfont#render', 'fontrender'],
['POST', '/!font/add', 'Controllerfont#add', 'fontadd'],
diff --git a/app/class/user.php b/app/class/user.php
index fa6589c..8fb152f 100644
--- a/app/class/user.php
+++ b/app/class/user.php
@@ -59,8 +59,9 @@ class User
public function setid($id)
{
+ $id = idclean($id);
if (strlen($id) < Model::MAX_ID_LENGTH and is_string($id)) {
- $this->id = idclean($id);
+ $this->id = $id;
}
}
diff --git a/app/view/templates/user.php b/app/view/templates/user.php
index 8615f3d..f973fee 100644
--- a/app/view/templates/user.php
+++ b/app/view/templates/user.php
@@ -18,10 +18,10 @@
<tr>
<form action="<?= $this->url('useradd') ?>" method="post">
<td>
- <input type="text" name="id" required>
+ <input type="text" name="id" maxlength="128" required>
</td>
<td>
- <input type="password" name="password" minlength="4" maxlenght="64" required>
+ <input type="password" name="password" minlength="4" maxlength="64" required>
</td>
<td>
<select name="level" id="level">
@@ -29,6 +29,7 @@
<option value="2">invite</option>
<option value="3">editor</option>
<option value="4">super editor</option>
+ <option value="10">admin</option>
</select>
</td>
<td>
@@ -43,14 +44,14 @@ foreach ($userlist as $user ) {
?>
<tr>
- <form action="<?= $this->url('userupdate') ?>">
+ <form action="<?= $this->url('userupdate') ?>" method="post">
<td>
<?= $user->id() ?>
</td>
<td>
- <input type="password" name="password" placeholder="<?= str_repeat('°', $user->password('int')) ?>" min="4" max="64" required>
+ <input type="password" name="password" placeholder="<?= str_repeat('°', $user->password('int')) ?>" minlength="4" maxlength="64" >
</td>
<td>
@@ -59,16 +60,16 @@ foreach ($userlist as $user ) {
<option value="2" <?= $user->level() === 2 ? 'selected' : '' ?>>invite</option>
<option value="3" <?= $user->level() === 3 ? 'selected' : '' ?>>editor</option>
<option value="4" <?= $user->level() === 4 ? 'selected' : '' ?>>super editor</option>
+ <option value="10" <?= $user->level() === 10 ? 'selected' : '' ?>>admin</option>
</select>
</td>
<td>
- <input type="submit" value="update">
+ <input type="hidden" name="id" value="<?= $user->id() ?>">
+ <input type="submit" name="action" value="update">
+ <input type="submit" name="action" value="delete">
</form>
- <form action="<?= $this->url('userdelete') ?>" method="post">
- <input type="submit" value="delete">
- </form>
</td>
</tr>
@@ -79,9 +80,6 @@ foreach ($userlist as $user ) {
</table>
-<?php var_dump($userlist); ?>
-
-
</main>
</body>
diff --git a/app/view/templates/userconfirmdelete.php b/app/view/templates/userconfirmdelete.php
new file mode 100644
index 0000000..342775f
--- /dev/null
+++ b/app/view/templates/userconfirmdelete.php
@@ -0,0 +1,17 @@
+
+
+<h1>Delete User</h1>
+
+<h2>Id : <?= $userdelete->id() ?></h2>
+<h2>Level : <?= $userdelete->level() ?></h2>
+
+
+
+<form action="<?= $this->url('userupdate') ?>" method="post">
+
+<input type="hidden" name="id" value="<?= $userdelete->id() ?>">
+
+<input type="submit" name="action" value="confirmdelete">
+
+
+</form> \ No newline at end of file