Browse Source

updated Controllers & Views

- added Admin/Users Controller
- added Language/en/Admin
- updated Libraries/Aauth
- updated Account Views
- added Admin Views
- added Pagers/bootstrap_full.php
- updatd HeaderAdmin Template
- added assets/css/admin/users/index.css
v3-dev
REJack 6 years ago
parent
commit
c9161092eb
No known key found for this signature in database
GPG Key ID: 4A44B48700429F46
  1. 3
      TODO.md
  2. 72
      application/Controllers/Admin/Users.php
  3. 53
      application/Language/en/Admin.php
  4. 35
      application/Libraries/Aauth.php
  5. 4
      application/Views/Account/Edit.php
  6. 4
      application/Views/Account/Login.php
  7. 4
      application/Views/Account/Register.php
  8. 4
      application/Views/Account/RemindPassword.php
  9. 4
      application/Views/Account/ResetPassword.php
  10. 4
      application/Views/Account/Verification.php
  11. 11
      application/Views/Admin/Home.php
  12. 57
      application/Views/Admin/Users/Home.php
  13. 18
      application/Views/Admin/Users/New.php
  14. 37
      application/Views/Pagers/bootstrap_full.php
  15. 21
      application/Views/Templates/HeaderAdmin.php
  16. 4
      public/assets/css/admin/users/index.css

3
TODO.md

@ -5,6 +5,9 @@
## Code
### Paginate
- ADD `'default_full' => 'App\Views\Pagers\bootstrap_full',` into Config/Pager for BS4 Paginate
### Login Tokens
- Config for Cookie Name
- Single Login (Only one Token per User)

72
application/Controllers/Admin/Users.php

@ -0,0 +1,72 @@
<?php
/**
* CodeIgniter-Aauth
*
* Aauth is a User Authorization Library for CodeIgniter 4.x, which aims to make
* easy some essential jobs such as login, permissions and access operations.
* Despite ease of use, it has also very advanced features like groupping,
* access management, public access etc..
*
* @package CodeIgniter-Aauth
* @author Magefly Team
* @copyright 2014-2017 Emre Akay
* @copyright 2018 Magefly
* @license https://opensource.org/licenses/MIT MIT License
* @link https://github.com/magefly/CodeIgniter-Aauth
*/
namespace App\Controllers\Admin;
use CodeIgniter\Controller;
use Config\Aauth as AauthConfig;
use App\Libraries\Aauth;
/**
* Aauth Admin/Users Controller
*
* @package CodeIgniter-Aauth
*/
class Users extends Controller
{
/**
* Constructor
*/
public function __construct()
{
$this->aauth = new Aauth();
helper('form');
helper('aauth');
}
/**
* Index
*
* @return void
*/
public function index()
{
$data = $this->aauth->listUsersPaginated();
$data['cssFiles'] = [
'/assets/css/admin/users/index.css'
];
echo view('Templates/HeaderAdmin', $data);
echo view('Admin/Users/Home', $data);
echo view('Templates/FooterAdmin');
}
/**
* New
*
* @return void
*/
public function new()
{
$data = $this->aauth->listUsersPaginated();
echo view('Templates/HeaderAdmin');
echo view('Admin/Users/New', $data);
echo view('Templates/FooterAdmin');
}
}

53
application/Language/en/Admin.php

@ -0,0 +1,53 @@
<?php
/**
* CodeIgniter-Aauth
*
* Aauth is a User Authorization Library for CodeIgniter 4.x, which aims to make
* easy some essential jobs such as login, permissions and access operations.
* Despite ease of use, it has also very advanced features like groupping,
* access management, public access etc..
*
* @package CodeIgniter-Aauth
* @author Magefly Team
* @copyright 2014-2017 Emre Akay
* @copyright 2018 Magefly
* @license https://opensource.org/licenses/MIT MIT License
* @link https://github.com/magefly/CodeIgniter-Aauth
*/
/**
* Admin language strings.
*
* Language English
*
* @package CodeIgniter-Aauth
*
* @codeCoverageIgnore
*/
return [
'homeHeader' => 'Admin Area',
'homeText' => 'Welcome to CodeIgniter-Aauth\'s Admin Area',
'homeBreadcrumbTitle' => 'Home',
'breadcrumbCommonNew' => 'New',
'breadcrumbCommonEdit' => 'Edit',
'breadcrumbCommonShow' => 'Show',
'breadcrumbCommonDelete' => 'Delete',
'usersIndexHeader' => 'Users',
'usersNewHeader' => 'New user',
'usersEditHeader' => 'Edit user',
'usersShowHeader' => 'Show user',
'usersDeleteHeader' => 'Delete user',
'usersBreadcrumbTitle' => 'Users',
'usersLabelId' => 'Id',
'usersLabelEmail' => 'Email address',
'usersLabelUsername' => 'Username',
'usersLabelBanned' => 'Banned',
'usersLabelCreatedAt' => 'Created at',
'usersLabelUpdatedAt' => 'Updated at',
'usersLabelLastIPAddress' => 'Last IP-Address',
'usersLabelLastActivity' => 'Last Activity',
'usersLabelLastLogin' => 'Last Login',
'usersLinkNew' => 'Create new user',
];

35
application/Libraries/Aauth.php

@ -267,6 +267,41 @@ class Aauth
return $user->findAll();
}
/**
* List users with paginate
*
* Return users as an object array
*
* @param integer $limit Limit of users to be returned
* @param integer $offset Offset for limited number of users
* @param boolean $includeBanneds Include banned users
* @param string $orderBy Order by MYSQL string (e.g. 'name ASC', 'email DESC')
*
* @return array Array of users
*/
public function listUsersPaginated(int $limit = 10, bool $includeBanneds = null, string $orderBy = null)
{
$userModel = new UserModel();
$userModel->select('id, email, username, banned, created_at, updated_at, last_activity, last_ip_address, last_login');
// eanbool $group_par = null,
if (is_null($includeBanneds))
{
$userModel->where('banned', 0);
}
if (! is_null($orderBy))
{
$userModel->orderBy($orderBy);
}
return [
'users' => $userModel->paginate($limit),
'pager' => $userModel->pager,
];
}
/**
* Send verification email
*

4
application/Views/Account/Edit.php

@ -1,7 +1,7 @@
<div class="card">
<div class="card-header"><?=lang('Account.editHeader')?></div>
<div class="card-body">
<form method="POST">
<?= form_open('account/edit') ?>
<?if (isset($errors)):?>
<div class="alert alert-danger"><?=$errors?></div>
<?endif;?>
@ -27,6 +27,6 @@
</div>
</div>
<button class="btn btn-primary btn-block" type="submit"><?=lang('Account.editLabelSubmit')?></button>
</form>
<?= form_close() ?>
</div>
</div>

4
application/Views/Account/Login.php

@ -2,7 +2,7 @@
<div class="card card-login mx-auto mt-5">
<div class="card-header"><?=lang('Account.loginHeader')?></div>
<div class="card-body">
<form method="POST">
<?= form_open('account/login') ?>
<?if (isset($errors)):?>
<div class="alert alert-danger"><?=$errors?></div>
<?endif;?>
@ -32,7 +32,7 @@
</div>
</div>
<button class="btn btn-primary btn-block" type="submit"><?=lang('Account.loginLabelSubmit')?></button>
</form>
<?= form_close() ?>
</div>
<div class="card-footer">
<div class="row">

4
application/Views/Account/Register.php

@ -2,7 +2,7 @@
<div class="card card-register mx-auto mt-5">
<div class="card-header"><?=lang('Account.registerHeader')?></div>
<div class="card-body">
<form method="POST">
<?= form_open('account/register') ?>
<?if (isset($errors)):?>
<div class="alert alert-danger"><?=$errors?></div>
<?endif;?>
@ -29,7 +29,7 @@
</div>
<p class="small">* <?=lang('Account.registerRequired')?></p>
<button class="btn btn-primary btn-block" type="submit"><?=lang('Account.registerLabelSubmit')?></button>
</form>
<?= form_close() ?>
</div>
<div class="card-footer">
<div class="row">

4
application/Views/Account/RemindPassword.php

@ -2,7 +2,7 @@
<div class="card card-login mx-auto mt-5">
<div class="card-header"><?=lang('Account.remindPasswordHeader')?></div>
<div class="card-body">
<form method="POST">
<?= form_open('account/remind_password') ?>
<p><?=lang('Account.remindPasswordText')?></p>
<?if (isset($errors)):?>
<div class="alert alert-danger"><?=$errors?></div>
@ -17,7 +17,7 @@
</div>
</div>
<button class="btn btn-primary btn-block" type="submit"><?=lang('Account.remindPasswordLabelSubmit')?></button>
</form>
<?= form_close() ?>
</div>
<div class="card-footer">
<div class="row">

4
application/Views/Account/ResetPassword.php

@ -2,7 +2,7 @@
<div class="card card-login mx-auto mt-5">
<div class="card-header"><?=lang('Account.resetPasswordHeader')?></div>
<div class="card-body">
<form method="POST">
<?= form_open('account/reset_password') ?>
<p><?=lang('Account.resetPasswordText')?></p>
<?if (isset($errors)):?>
<div class="alert alert-danger"><?=$errors?></div>
@ -17,7 +17,7 @@
</div>
</div>
<button class="btn btn-primary btn-block" type="submit"><?=lang('Account.resetPasswordLabelSubmit')?></button>
</form>
<?= form_close() ?>
</div>
<div class="card-footer">
<div class="row">

4
application/Views/Account/Verification.php

@ -2,7 +2,7 @@
<div class="card card-login mx-auto mt-5">
<div class="card-header"><?=lang('Account.verificationHeader')?></div>
<div class="card-body">
<form method="POST">
<?= form_open('account/verification') ?>
<p><?=lang('Account.verificationText')?></p>
<?if (isset($errors)):?>
<div class="alert alert-danger"><?=$errors?></div>
@ -17,7 +17,7 @@
</div>
</div>
<button class="btn btn-primary btn-block" type="submit"><?=lang('Account.verificationLabelSubmit')?></button>
</form>
<?= form_close() ?>
</div>
<div class="card-footer">
<div class="row">

11
application/Views/Admin/Home.php

@ -0,0 +1,11 @@
<ol class="breadcrumb">
<li class="breadcrumb-item active"><?= lang('Admin.homeBreadcrumbTitle') ?></li>
</ol>
<div class="card mb-3">
<div class="card-header">
<?= lang('Admin.homeHeader') ?>
</div>
<div class="card-body">
<p class="lead"><?= lang('Admin.homeText') ?></p>
</div>
</div>

57
application/Views/Admin/Users/Home.php

@ -0,0 +1,57 @@
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="<?= site_url('admin') ?>"><?= lang('Admin.homeBreadcrumbTitle') ?></a>
</li>
<li class="breadcrumb-item active"><?= lang('Admin.usersBreadcrumbTitle') ?></li>
</ol>
<div class="card mb-3">
<div class="card-header">
<a href="<?= site_url('admin/users/new') ?>" class="btn btn-sm btn-success float-right"><?= lang('Admin.usersLinkNew') ?></a>
<div class="pt-1"><?= lang('Admin.usersIndexHeader') ?></div>
</div>
<div class="card-body p-0">
<div class="table-responsive">
<table class="table mb-0">
<thead>
<tr>
<th scope="col"><?= lang('Admin.usersLabelId') ?></th>
<th scope="col"><?= lang('Admin.usersLabelEmail') ?></th>
<th scope="col"><?= lang('Admin.usersLabelUsername') ?></th>
<th scope="col"><?= lang('Admin.usersLabelBanned') ?></th>
<th scope="col"><?= lang('Admin.usersLabelCreatedAt') ?></th>
<th scope="col"><?= lang('Admin.usersLabelUpdatedAt') ?></th>
<th scope="col"><?= lang('Admin.usersLabelLastIPAddress') ?></th>
<th scope="col"><?= lang('Admin.usersLabelLastActivity') ?></th>
<th scope="col"><?= lang('Admin.usersLabelLastLogin') ?></th>
<th scope="col"></th>
</tr>
</thead>
<tbody>
<? foreach ($users as $user): ?>
<tr>
<th scope="row"><?= $user['id'] ?></th>
<td><?= $user['email'] ?></td>
<td><?= $user['username'] ?></td>
<td><?= $user['banned'] == 1 ? 'Yes' : 'No' ?></td>
<td><?= $user['created_at'] ?></td>
<td><?= $user['updated_at'] ?></td>
<td><?= $user['last_ip_address'] ?></td>
<td><?= $user['last_activity'] ?></td>
<td><?= $user['last_login'] ?></td>
<td class="text-right p-1">
<div class="btn-group">
<a href="<?= site_url('admin/users/show/' . $user['id']) ?>" class="btn btn-info"><i class="fa fa-fw fa-info-circle"></i></a>
<a href="<?= site_url('admin/users/edit/' . $user['id']) ?>" class="btn btn-warning"><i class="fa fa-fw fa-pencil-alt"></i></a>
<a href="<?= site_url('admin/users/delete/' . $user['id']) ?>" class="btn btn-danger"><i class="fa fa-fw fa-times"></i></a>
</div>
</td>
</tr>
<? endforeach; ?>
</tbody>
</table>
</div>
</div>
<div class="card-footer">
<?= $pager->links() ?>
</div>
</div>

18
application/Views/Admin/Users/New.php

@ -0,0 +1,18 @@
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="<?= site_url('admin') ?>"><?= lang('Admin.homeBreadcrumbTitle') ?></a>
</li>
<li class="breadcrumb-item">
<a href="<?= site_url('admin/users') ?>"><?= lang('Admin.usersBreadcrumbTitle') ?></a>
</li>
<li class="breadcrumb-item active"><?= lang('Admin.breadcrumbCommonNew') ?></li>
</ol>
<div class="card mb-3">
<?= form_open('admin/users/create') ?>
<div class="card-body p-0">
</div>
<div class="card-footer">
</div>
</form>
</div>

37
application/Views/Pagers/bootstrap_full.php

@ -0,0 +1,37 @@
<nav aria-label="<?= lang('Pager.pageNavigation') ?>">
<ul class="pagination justify-content-center mb-0">
<?php if ($pager->hasPrevious()) : ?>
<li class="page-item">
<a href="<?= $pager->getFirst() ?>" class="page-link" aria-label="<?= lang('Pager.first') ?>">
<span aria-hidden="true"><?= lang('Pager.first') ?></span>
</a>
</li>
<li class="page-item">
<a href="<?= $pager->getPrevious() ?>" class="page-link" aria-label="<?= lang('Pager.previous') ?>">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
<?php endif ?>
<?php foreach ($pager->links() as $link) : ?>
<li <?= $link['active'] ? 'class="page-item active"' : 'class="page-item"' ?>>
<a href="<?= $link['uri'] ?>" class="page-link">
<?= $link['title'] ?>
</a>
</li>
<?php endforeach ?>
<?php if ($pager->hasNext()) : ?>
<li class="page-item">
<a href="<?= $pager->getNext() ?>" class="page-link" aria-label="<?= lang('Pager.next') ?>">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
<li class="page-item">
<a href="<?= $pager->getLast() ?>" class="page-link" aria-label="<?= lang('Pager.last') ?>">
<span aria-hidden="true"><?= lang('Pager.last') ?></span>
</a>
</li>
<?php endif ?>
</ul>
</nav>

21
application/Views/Templates/HeaderAdmin.php

@ -22,6 +22,11 @@
<button class="btn btn-link btn-sm text-white order-1 order-sm-0" id="sidebarToggle" href="#">
<i class="fas fa-bars"></i>
</button>
<ul class="navbar-nav ml-4">
<li class="nav-item">
<a href="<?= site_url() ?>">Home</a>
</li>
</ul>
<ul class="navbar-nav ml-auto">
<? if (is_loggedin()): ?>
<li class="nav-item dropdown no-arrow">
@ -29,9 +34,9 @@
<i class="fas fa-user-circle fa-fw"></i>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="userDropdown">
<!-- <a class="dropdown-item" href="#">Settings</a> -->
<!-- <div class="dropdown-divider"></div> -->
<a class="dropdown-item" href="#" data-toggle="modal" data-target="#logoutModal">Logout</a>
<a class="dropdown-item" href="<?= site_url('account/edit') ?>">Edit Profile</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="<?= site_url('account/logout') ?>">Logout</a>
</div>
</li>
<?php endif; ?>
@ -40,12 +45,18 @@
<div id="wrapper">
<ul class="sidebar navbar-nav">
<li class="nav-item">
<a class="nav-link" href="index.html">
<li class="nav-item <?= (uri_string() == 'admin' ? 'active' : '') ?>">
<a class="nav-link" href="<?= site_url('admin') ?>">
<i class="fas fa-fw fa-tachometer-alt"></i>
<span>Dashboard</span>
</a>
</li>
<li class="nav-item <?= (strpos(uri_string(), 'admin/users') !== false ? 'active' : '') ?>">
<a class="nav-link" href="<?= site_url('admin/users') ?>">
<i class="fas fa-fw fa-users"></i>
<span>Users</span>
</a>
</li>
</ul>
<div id="content-wrapper">

4
public/assets/css/admin/users/index.css

@ -0,0 +1,4 @@
.table thead td,
.table thead th {
border-top: none;
}
Loading…
Cancel
Save