user creation portal

This commit is contained in:
Joshua Perry 2023-02-05 15:36:11 +00:00
parent 2e21773018
commit 86bb50cc47
6 changed files with 113 additions and 17 deletions

View File

@ -8,7 +8,7 @@ class Routes extends \CSY2028\Routes {
$this->setDbTables(); $this->setDbTables();
$this->controllers = [ $this->controllers = [
"jobs" => new \jobs\controllers\Jobs($this->databaseTables["jobs"], $this->databaseTables["categories"], $this->databaseTables["applicants"]), "jobs" => new \jobs\controllers\Jobs($this->databaseTables["jobs"], $this->databaseTables["categories"], $this->databaseTables["applicants"]),
"portal" => new \jobs\controllers\Portal($this->databaseTables["categories"], $this->databaseTables["jobs"], $this->databaseTables["applicants"]), "portal" => new \jobs\controllers\Portal($this->databaseTables["categories"], $this->databaseTables["jobs"], $this->databaseTables["applicants"], $this->databaseTables['users']),
"user" => new \jobs\controllers\User($this->databaseTables["users"], $this->databaseTables["categories"]) "user" => new \jobs\controllers\User($this->databaseTables["users"], $this->databaseTables["categories"])
]; ];
$this->loginControllers = [ $this->loginControllers = [

View File

@ -4,12 +4,14 @@ class Portal {
private $catsTable; private $catsTable;
private $jobsTable; private $jobsTable;
private $appsTable; private $appsTable;
private $usersTable;
private $vars; private $vars;
public function __construct(\jobs\JobDatabaseTable $catsTable, \jobs\JobDatabaseTable $jobsTable, \jobs\JobDatabaseTable $appsTable) { public function __construct(\jobs\JobDatabaseTable $catsTable, \jobs\JobDatabaseTable $jobsTable, \jobs\JobDatabaseTable $appsTable, \jobs\JobDatabaseTable $usersTable) {
$this->catsTable = $catsTable; $this->catsTable = $catsTable;
$this->jobsTable = $jobsTable; $this->jobsTable = $jobsTable;
$this->appsTable = $appsTable; $this->appsTable = $appsTable;
$this->usersTable = $usersTable;
$this->vars['cats'] = $this->catsTable->findAll(); $this->vars['cats'] = $this->catsTable->findAll();
$this->vars['table'] = 'job_table.html.php'; $this->vars['table'] = 'job_table.html.php';
} }
@ -63,18 +65,19 @@ class Portal {
} }
return $this->categories(); return $this->categories();
} }
if (isset($_POST['user_id'])) {
if($_POST['user_type'] == 'client') {
$this->usersTable->delete('id', $_POST['user_id']);
$jobs = $this->jobsTable->find(['clientId'], ['value0' => $_POST['user_id']]);
foreach ($jobs as $job) {
$this->jobsTable->delete('id', $job->id);
}
return $this->users();
}
}
} }
} }
public function secondHomeSubmit() {
$this->vars['response'] = 'Update successful';
return ['template' => 'response.html.php',
'title' => 'Jo\'s Jobs- Success',
'vars' => $this->vars
];
}
public function categories() { public function categories() {
if ($_SESSION['userType'] == 'admin') { if ($_SESSION['userType'] == 'admin') {
$this->vars['table'] = 'category_table.html.php'; $this->vars['table'] = 'category_table.html.php';
@ -95,8 +98,54 @@ class Portal {
'vars' => $this->vars]; 'vars' => $this->vars];
} }
public function edit() { //TODO: finish this function public function users() {
if ($_SESSION['userType'] == 'admin') {
$this->vars['table'] = 'user_table.html.php';
$this->vars['users'] = $this->usersTable->findAll();
return ['template' => 'portal.html.php',
'title' => 'Jo\'s Jobs- Users',
'vars' => $this->vars
];
}
}
public function addUser() {
if ($_SESSION['userType'] == 'admin') {
if (isset($_GET['user_id'])) {
$this->vars['user'] = $this->usersTable->find(['id'], ['value0' => $_GET['user_id']])[0];
$this->vars['update'] = true;
}
else {
$this->vars['update'] = false;
}
return ['template' => 'user_add.html.php',
'title' => 'Jo\'s Jobs- Edit user',
'vars' => $this->vars
];
}
}
public function addUserSubmit() {
if ($_SESSION['userType'] == 'admin') {
$record = [
'username' => $_POST['username'],
'password' => password_hash($_POST['password'], PASSWORD_DEFAULT),
'userType' => $_POST['type']
];
if ($_POST['submit'] == 'Update') {
$record['id'] = $_POST['user_id'];
$this->vars['response'] = 'User Updated Successfully';
}
else {
$this->vars['response'] = 'User Created Successfully';
}
$this->usersTable->save($record);
return [
'template' => 'response.html.php',
'title' => 'Jo\'s Jobs- Edit user',
'vars' => $this->vars
];
}
} }
public function addJob() { public function addJob() {
@ -110,7 +159,7 @@ class Portal {
$this->vars['update'] = false; $this->vars['update'] = false;
} }
return ['template' => 'job_add.html.php', return ['template' => 'job_add.html.php',
'title' => 'Jo\'s Jobs- Add Job', 'title' => 'Jo\'s Jobs- Edit Job',
'vars' => $this->vars 'vars' => $this->vars
]; ];
} }
@ -158,7 +207,7 @@ class Portal {
$this->vars['update'] = false; $this->vars['update'] = false;
} }
return ['template' => 'category_add.html.php', return ['template' => 'category_add.html.php',
'title' => 'Jo\'s Jobs- Add Category', 'title' => 'Jo\'s Jobs- Edit Category',
'vars' => $this->vars 'vars' => $this->vars
]; ];
} }

View File

@ -4,6 +4,7 @@
<li><a href="/portal">Jobs</a></li> <li><a href="/portal">Jobs</a></li>
<?php if ($_SESSION['userType'] == 'admin') { ?> <?php if ($_SESSION['userType'] == 'admin') { ?>
<li><a href="/portal/categories">Categories</a></li> <li><a href="/portal/categories">Categories</a></li>
<li><a href="/portal/users">Users</a></li>
<?php } ?> <?php } ?>
</ul> </ul>
</section> </section>

View File

@ -0,0 +1,23 @@
<main class="home">
<form method="post" action="/portal/addUser">
<?php if ($update) {?>
<label>Enter Username</label>
<input type="username" name="username" value="<?=$user->username?>"/>
<label>Enter Password</label>
<input type="password" name="password" value="<?=$user->password?>"/>
<label>Enter User Type</label>
<input type="text" name="type" value="<?=$user->userType?>"/>
<input type="hidden" name="user_id" value="<?=$user->id?>" />
<input type="submit" name="submit" value="Update"/>
<?php }
else { ?>
<label>Enter Username</label>
<input type="username" name="username" />
<label>Enter Password</label>
<input type="password" name="password" />
<label>Enter User Type</label>
<input type="text" name="type" />
<input type="submit" name="submit" value="Create"/>
<?php } ?>
</form>
</main>

View File

@ -0,0 +1,23 @@
<h2>Users</h2>
<a class="new" href="/portal/addUser">Add new user</a>
<table>
<thead>
<tr>
<th>Username</th>
<th>User Type</th>
<th style="width: 5%">&nbsp;</th>
<th style="width: 5%">&nbsp;</th>
</tr>
<?php foreach ($users as $user) { ?>
<tr>
<td><?=$user->username?></td>
<td><a style="float: right" href="/portal/addUser?user_id=<?=$user->id?>">Edit</a></td>
<td><form method="post" action="/portal/">
<input type="hidden" name="user_id" value="<?=$user->id?>" />
<input type="hidden" name="user_type" value="<?=$user->userType?>" />
<input type="submit" name="submit" value="Delete" />
</form></td>
</tr>
<?php } ?>
</thead>
</table>

4
todo
View File

@ -14,8 +14,8 @@ Assignment 2:
- Fix Adding categories @done - Fix Adding categories @done
- Archive jobs instead of delete @done - Archive jobs instead of delete @done
- Relist archived jobs with new closing date @done - Relist archived jobs with new closing date @done
- Add admin user control to admin portal - Add admin user control to admin portal @done
- User accounts made in admin portal - User accounts made in admin portal @done
- Client user accounts @done - Client user accounts @done
- restricted admin panel @done - restricted admin panel @done
- add and archive jobs @done - add and archive jobs @done