all fix (next dict_tests)

This commit is contained in:
mahdahar 2024-11-20 16:55:21 +07:00
parent 0da54e8376
commit 7a4491c037
13 changed files with 425 additions and 285 deletions

View File

@ -17,15 +17,10 @@ $routes->get('/tubes/unreceive/(:any)/(:any)', 'Tubes::unreceive/$1/$2');
$routes->get('/tubes/unreceiveAll/(:any)', 'Tubes::unreceiveAll/$1');
$routes->post('/tubes/comment/(:any)/(:any)', 'Tubes::comment/$1/$2');
// Userroles
$routes->get('/userroles/', 'Userroles::index');
$routes->match(['get','post'],'/userroles/create', 'Userroles::edit/0');
$routes->match(['get','post'],'/userroles/edit/(:any)', 'Userroles::edit/$1');
// Users
$routes->get('/users/', 'Users::index');
$routes->match(['get','post'], '/users/editRole/(:any)', 'Users::editRole/$1');
$routes->match(['get','post'], '/users/editPass/(:any)', 'Users::editPass/$1');
// Pages
$routes->get('/userroles/', 'Pages::userroles_index');
$routes->get('/users/', 'Pages::users_index');
$routes->get('/changePass/', 'Pages::changePass');
// DICT_TESTS
$routes->get('/dict_tests/', 'Dict_tests::index');
@ -36,7 +31,13 @@ $routes->get('/auth/loginTD', 'Auth::loginTD');
$routes->match(['get','post'], '/auth/login', 'Auth::login');
$routes->match(['get','post'], '/auth/setpass/(:any)', 'Auth::setpass/$1');
// API
$routes->get('/api/userroles/index', 'Api::userroles_index');
$routes->get('/api/userroles/detail/(:any)', 'Api::userroles_detail/$1');
$routes->post('/api/userroles/save/(:any)', 'Api::userroles_save/$1');
// API - Userroles
$routes->get('/api/userroles/index', 'Userroles::index');
$routes->get('/api/userroles/detail/(:any)', 'Userroles::detail/$1');
$routes->post('/api/userroles/save/(:any)', 'Userroles::save/$1');
// API - Users
$routes->get('/api/users/index', 'Users::index');
$routes->get('/api/users/detail/(:any)', 'Users::detail/$1');
$routes->post('/api/users/savePass/(:any)', 'Users::savePass/$1');
$routes->post('/api/users/saveRole/(:any)', 'Users::saveRole/$1');

View File

@ -1,59 +0,0 @@
<?php
namespace App\Controllers;
use CodeIgniter\RESTful\ResourceController;
class Api extends ResourceController {
protected $format = 'json';
public function userroles_index() {
$db = \Config\Database::connect();
$sql = "select * from cmod.dbo.CM_USERROLES";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['userroles'] = $results;
return $this->respond($data, 200);
}
public function userroles_detail($userroleid) {
$db = \Config\Database::connect();
$sql = "select * from cmod.dbo.CM_USERROLES where USERROLEID='$userroleid'";
$query = $db->query($sql);
$results = $query->getResultArray();
$data = $results[0];
return $this->respond($data, 200);
}
public function userroles_edit($userroleid) {
$db = \Config\Database::connect();
$sql = "select * from cmod.dbo.CM_USERROLES where USERROLEID='$userroleid'";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['userroles'] = $results;
return $this->respond($data, 200);
}
public function userroles_save($userroleid) {
$userrolecode = $this->request->getPost('userrolecode');
$userrolename = $this->request->getPost('userrolename');
$db = \Config\Database::connect();
if($userroleid == 0) { // new
$sql = "INSERT INTO cmod.dbo.CM_USERROLES(USERROLECODE, USERROLENAME, CREATEDATE) VALUES ('$userrolecode', '$userrolename', GETDATE())";
} else { //update
$sql = "UPDATE cmod.dbo.CM_USERROLES set USERROLENAME='$userrolename', USERROLECODE='$userrolecode' where USERROLEID='$userroleid'";
}
if( $db->query($sql) ) {
return $this->respond(['message' => 'Save Success'],201);
} else {
$response = [
'errors' => $db->errors(),
'message' => 'Invalid Inputs'
];
return $this->fail($response , 409);
}
}
}

View File

@ -67,23 +67,18 @@ class Auth extends BaseController {
return redirect()->to('/auth/login');;
}
public function setPass($userid) {
public function setpass($userid) {
if ($this->request->getMethod() === 'POST') {
$password1 = $this->request->getVar('password1');
$password2 = $this->request->getVar('password2');
$data['password1'] = $password1;
$data['password2'] = $password2;
if($password1 == $password2) {
$password = password_hash($password1,PASSWORD_DEFAULT);
$db = \Config\Database::connect();
$sql = "update cmod.dbo.CM_USERS set PASSWORD='$password' where USERID='$userid'";
$db->query($sql);
return redirect()->to("/auth/login");
} else {
return redirect()->to("/auth/setpass/$userid")->with('flash_error', 'password is not the same.');
}
$password = $this->request->getPost('password');
$password = password_hash($password,PASSWORD_DEFAULT);
$db = \Config\Database::connect();
$sql = "update cmod.dbo.CM_USERS set PASSWORD='$password' where USERID='$userid'";
$db->query($sql);
return redirect()->to("/auth/login");
} else {
$data['userid'] = strtoupper($userid);
return view('auth_setpass', $data);
}
return view('auth_setpass');
}
public function loginTD() {

38
app/Controllers/Pages.php Normal file
View File

@ -0,0 +1,38 @@
<?php
namespace App\Controllers;
class Pages extends BaseController {
public function userroles_index(): string {
return view('userroles_index');
}
public function users_index(): string {
$db = \Config\Database::connect();
$sql = "select * from cmod.dbo.CM_USERROLES";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['userroles'] = $results;
return view('users_index', $data);
}
public function changePass() {
if ($this->request->getMethod() === 'POST') {
$password1 = $this->request->getVar('password1');
$password2 = $this->request->getVar('password2');
$data['password1'] = $password1;
$data['password2'] = $password2;
if($password1 == $password2) {
$password = password_hash($password1,PASSWORD_DEFAULT);
$db = \Config\Database::connect();
$sql = "update cmod.dbo.CM_USERS set PASSWORD='$password' where USERID='$userid'";
$db->query($sql);
return redirect()->to("/");
} else {
return redirect()->to("/auth/setpass/$userid")->with('flash_error', 'password is not the same.');
}
}
return view('changePass');
}
}

View File

@ -1,11 +1,49 @@
<?php
namespace App\Controllers;
class Userroles extends BaseController {
use CodeIgniter\RESTful\ResourceController;
public function index(): string {
return view('userroles_index');
}
class Userroles extends ResourceController {
protected $format = 'json';
public function index() {
$db = \Config\Database::connect();
$sql = "select * from cmod.dbo.CM_USERROLES";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['userroles'] = $results;
return $this->respond($data, 200);
}
public function detail($userroleid) {
$db = \Config\Database::connect();
$sql = "select * from cmod.dbo.CM_USERROLES where USERROLEID='$userroleid'";
$query = $db->query($sql);
$results = $query->getResultArray();
$data = $results[0];
return $this->respond($data, 200);
}
public function save($userroleid) {
$userrolecode = $this->request->getPost('userrolecode');
$userrolename = $this->request->getPost('userrolename');
$db = \Config\Database::connect();
if($userroleid == 0) { // new
$sql = "INSERT INTO cmod.dbo.CM_USERROLES(USERROLECODE, USERROLENAME, CREATEDATE) VALUES ('$userrolecode', '$userrolename', GETDATE())";
} else { //update
$sql = "UPDATE cmod.dbo.CM_USERROLES set USERROLENAME='$userrolename', USERROLECODE='$userrolecode' where USERROLEID='$userroleid'";
}
if( $db->query($sql) ) {
return $this->respond(['message' => 'Save Success'],201);
} else {
$response = [
'errors' => $db->errors(),
'message' => 'Invalid Inputs'
];
return $this->fail($response , 409);
}
}
}

View File

@ -1,61 +1,59 @@
<?php
namespace App\Controllers;
class Users extends BaseController {
use CodeIgniter\RESTful\ResourceController;
public function index(): string {
class Users extends ResourceController {
protected $format = 'json';
public function index() {
$db = \Config\Database::connect();
$sql = "select u.USERID, u.USERNAME, u1.USERROLEID from cmod.dbo.CM_USERS u1
$sql = "select u.USERID, u.USERNAME, u1.USERROLEID, ur.USERROLENAME from cmod.dbo.CM_USERS u1
full join USERS u on u.USERID=u1.USERID
left join cmod.dbo.CM_USERROLES ur on ur.USERROLEID=u1.USERROLEID
where ( u.LOCKEDACCOUNT is null or u.LOCKEDACCOUNT=0 )";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['users'] = $results;
return view('users_index', $data);
}
public function editRole($userid) {
if ($this->request->getMethod() == 'POST') {
$request = service('request');
$jsonData = $request->getJSON();
$userrolecode = $jsonData->userrolecode;
$db = \Config\Database::connect();
$sql = "if (not exists (select * from cmod.dbo.CM_USERS where USERID='$userid')) BEGIN
INSERT INTO cmod.dbo.CM_USERS(USERID, USERROLECODE, CREATEDATE) VALUES
('$userid','$userrolecode', GETDATE())
END ELSE BEGIN
UPDATE cmod.dbo.CM_USERS set USERROLECODE='$userrolecode' where USERID='$userid'
END";
$query = $db->query($sql);
} else {
$db = \Config\Database::connect();
$sql = "select u.USERID, u.USERNAME, u1.USERROLECODE from cmod.dbo.CM_USERS u1
full join USERS u on u.USERID=u1.USERID
where u.USERID='$userid'";
$query = $db->query($sql);
$results = $query->getResultArray();
$data['users'] = $results;
$data['userroles'] = $this->userrole;
return view('users_editRole', $data);
}
return $this->respond($data,200);
}
public function comment($access, $sample) {
$userid = session()->userid;
$request = service('request');
$jsonData = $request->getJSON();
public function savePass() {
$db = \Config\Database::connect();
$comment = $jsonData->comment;
$sql = "if (not exists (select * from cmod.dbo.CM_TUBES where ACCESSNUMBER='$access' AND SAMPLETYPE='$sample')) BEGIN
INSERT INTO cmod.dbo.CM_TUBES(ACCESSNUMBER, SAMPLETYPE, COLL_USERID, TUBECOMMENT, CREATEDATE) VALUES
('$access','$sample', '$userid', '$comment', GETDATE())
END ELSE BEGIN
UPDATE cmod.dbo.CM_TUBES set TUBECOMMENT='$comment' where ACCESSNUMBER='$access' and SAMPLETYPE='$sample'
END";
echo "$sql";
$query = $db->query($sql);
}
$userid = $this->request->getPost('userid');
$pass = $this->request->getPost('pass');
$password = password_hash($pass,PASSWORD_DEFAULT);
$sql = "update cmod.dbo.CM_USERS set PASSWORD='$password' where USERID='$userid'";
if( $db->query($sql) ) {
return $this->respond(['message' => 'Save Success'],201);
} else {
$response = [
'errors' => $db->errors(),
'message' => 'Invalids'
];
return $this->fail($response , 409);
}
}
public function saveRole() {
$db = \Config\Database::connect();
$userid = $this->request->getPost('userid');
$userroleid = $this->request->getPost('userroleid');
$sql = "if (not exists (select * from cmod.dbo.CM_USERS where USERID='$userid')) BEGIN
INSERT INTO cmod.dbo.CM_USERS(USERID, USERROLEID, CREATEDATE) VALUES
('$userid','$userroleid', GETDATE())
END ELSE BEGIN
UPDATE cmod.dbo.CM_USERS set USERROLEID='$userroleid' where USERID='$userid'
END";
if( $db->query($sql) ) {
return $this->respond(['message' => 'Save Success'],201);
} else {
$response = [
'errors' => $db->errors(),
'message' => 'Invalids'
];
return $this->fail($response , 409);
}
}
}

View File

@ -21,51 +21,38 @@
<body class='bg-login'>
<section class="vh-100">
<div class="container h-100">
<div class="row d-flex justify-content-center align-items-center h-100">
<div class="col col-xl-10 login-form">
<div class="card shadoww" style="border-radius: 1rem;" >
<div class="row g-0">
<div class="col d-flex align-items-center text-center">
<div class="card-body pb-md-5 px-md-5 text-black">
<div class="d-flex align-items-center m-0" bg='dark'>
<img src="<?=base_url();?>assets/img/login-logo.png" alt="" id="icon-login" class="mx-auto m-0">
<!-- <h1 class="mx-auto">Logo</h1> -->
</div>
<form class="m-0" method='POST'>
<!-- <hr class="w-75 mx-auto"> -->
<h5 class="fw-normal mt-4 mb-2 pb-2" style="letter-spacing: 1px;">Sign into your account</h5>
<div class="form-outline mb-4">
<input type="text" id="userid" name='userid' value='<?=$userid?>' class="form-control form-control-lg" oninput="this.value = this.value.toUpperCase();" />
<label class="form-label" for="userid">UserID</label>
</div>
<div class="form-outline mb-4">
<input type="password" id="password" name='password' value='<?=$password;?>' class="form-control form-control-lg" />
<label class="form-label" for="password">Password</label>
</div>
<div class="pt-1 mb-4">
<button type='submit' class="btn bg-primary-luxury btn-lg btn-block" type="button">
<span class="font-primary-luxury"> Login </span>
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<script type="text/javascript" src="<?=base_url();?>assets/js/mdb.min.js"></script>
@ -75,5 +62,4 @@
}
</script>
</body>
</html>

View File

@ -0,0 +1,61 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<title>CMOD - Login</title>
<link rel="icon" href="favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700;900&display=swap" />
<link rel="stylesheet" href="<?=base_url();?>assets/css/bootstrap-login-form.min.css" />
<style>
.bg-primary-luxury{ background-color: #1C2B19; }
.font-primary-luxury{ color: #E9E3C9;}
#icon-login { max-width: 80%; height: auto; }
.shadoww { box-shadow: 0 4px 8px #1c2b193f; /* Bayangan merah */ }
.login-form {width:490px;}
.bg-login { background-color:#1c1c1c; }
</style>
</head>
<body class='bg-login'>
<section class="vh-100">
<div class="container h-100">
<div class="row d-flex justify-content-center align-items-center h-100">
<div class="col col-xl-10 login-form">
<div class="card shadoww" style="border-radius: 1rem;" >
<div class="row g-0">
<div class="col d-flex align-items-center text-center">
<div class="card-body pb-md-5 px-md-5 text-black">
<form class="m-0" method='POST'>
<h5 class="fw-normal mt-4 mb-2 pb-2" style="letter-spacing: 1px;">Setting Password</h5>
<div class="form-outline mb-4">
<input type="text" id="userid" name='userid' value='<?=$userid?>' class="form-control form-control-lg" oninput="this.value = this.value.toUpperCase();" disabled />
<label class="form-label" for="userid">UserID</label>
</div>
<div class="form-outline mb-4">
<input type="password" id="password" name='password' class="form-control form-control-lg" />
<label class="form-label" for="password">Password</label>
</div>
<div class="pt-1 mb-4">
<button type='submit' class="btn bg-primary-luxury btn-lg btn-block" type="button">
<span class="font-primary-luxury"> Set </span>
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<script type="text/javascript" src="<?=base_url();?>assets/js/mdb.min.js"></script>
<script>
window.onload = function() {
document.getElementById("userid").focus();
}
</script>
</body>
</html>

63
app/Views/changePass.php Normal file
View File

@ -0,0 +1,63 @@
<?= $this->extend('layouts/main.php') ?>
<?= $this->section('content') ?>
<div class="row">
<div class="col-6">
<div class="card">
<div class="card-body">
<div class='card-title'> Password Editor </div>
<div id='alertPass'></div>
<table class="table table-sm table-borderless">
<tr class="align-middle"> <th>Password</th> <th>:</th> <td><input class='form-control' type='password' id='pass1'/></td> </tr>
<tr class="align-middle"> <th>Conf. Password</th> <th>:</th> <td><input class='form-control' type='password' id='pass2'/></td> </tr>
</table>
<button class='btn btn-sm btn-primary' onclick='savePass()'>Save</button>
<button class='btn btn-sm btn-secondary' data-bs-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
<?= $this->endSection() ?>
<?= $this->section('script') ?>
<script>
window.onload = function() {
document.getElementById("pass1").focus();
}
function savePass() {
var userid = '<?=$_SESSION['userid'];?>';
var pass1 = $("#pass1").val();
var pass2 = $("#pass2").val();
if(pass1 == pass2) {
let url = '<?=base_url('');?>api/users/savePass/'+userid ;
let data = { userid: userid, pass : pass1 };
$.ajax({
url: url,
method: "POST",
data: data,
success: function(response) {
$("#pass1").val('');
$("#pass2").val('');
$('#alertPass').html(
"<div class='alert alert-success alert-dismissible fade show' role='alert'> "+
"Password updated!" +
"<button type='button' class='btn-close' data-bs-dismiss='alert' aria-label='Close'></button>"+
"</div>"
);
},
error: function(response) {
console.log(response.responseJSON)
}
});
} else {
$('#alertPass').html(
"<div class='alert alert-danger alert-dismissible fade show' role='alert'> "+
"Password is not the same!" +
"<button type='button' class='btn-close' data-bs-dismiss='alert' aria-label='Close'></button>"+
"</div>"
);
}
}
</script>
<?= $this->endSection() ?>

View File

@ -2,8 +2,11 @@
<nav class="sb-sidenav accordion sb-sidenav-light" id="sidenavAccordion">
<div class="sb-sidenav-menu">
<div class="nav">
<div class="sb-sidenav-menu-heading">Main</div>
<a class="nav-link" href="<?=base_url();?>"><div class="sb-nav-link-icon"><i class="bi bi-speedometer"></i></div>Dashboard</a>
<a class="nav-link" href="<?=base_url();?>changePass/"><div class="sb-nav-link-icon"><i class="bi bi-key"></i></div>Change Password</a>
<div class="sb-sidenav-menu-heading">Administration</div>
<a class="nav-link" href="#"> <div class="sb-nav-link-icon"><i class="fas bi-journal-album"></i></div> Dictionary Test </a>
<a class="nav-link" href="#"> <div class="sb-nav-link-icon"><i class="bi bi-journal-album"></i></div> Dictionary Test </a>
<a class="nav-link" href="<?=base_url();?>users/"> <div class="sb-nav-link-icon"><i class="bi bi-person-circle"></i></div> Users </a>
<a class="nav-link" href="<?=base_url();?>userroles/"> <div class="sb-nav-link-icon"><i class="bi bi-person-lock"></i></div> User Roles </a>
</div>

View File

@ -1,39 +0,0 @@
<?php
if(!isset($userrolename)) { $userrolename = ''; }
?>
<div class="modal-header">
<h1 class="modal-title fs-5" id="exampleModalToggleLabel">Edit UserRoles</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" ></button>
</div>
<div class="modal-body" style='background-color:#F4F6FF'>
<div class="row">
<div class="col-12">
<table class="table table-sm table-borderless">
<tr class="align-middle"> <th>User Role Code</th> <th>:</th>
<?php
if($userrolecode==0) { echo "<td><input class='form-control' type='text' id='userrolecode' oninput='this.value = this.value.toUpperCase();'/></td> "; }
else { echo "<td><input class='form-control' type='text' value='$userrolecode' disabled/></td> <input type='hidden' id='userrolecode' value='$userrolecode'>"; }
?>
</tr>
<tr class="align-middle"> <th>User Role Name</th> <th>:</th> <td><input class='form-control' type='text' id='userrolename' value='<?=$userrolename;?>' /></td> </tr>
</table>
<button class='btn btn-sm btn-primary' onclick='save("<?=$userrolecode;?>")'>Save</button>
<button class='btn btn-sm btn-secondary' data-bs-dismiss="modal">Cancel</button>
</div>
</div>
</div>
<script>
function save(userid) {
const userrolecode = $("#userrolecode").val();
const userrolename = $("#userrolename").val();
const url = '<?=base_url();?>userroles/edit/<?=$userrolecode?>';
console.log(url+' '+userrolecode+' '+userrolename);
fetch(url, {
method: "POST",
body: JSON.stringify({ userrolecode : userrolecode, userrolename : userrolename }),
headers: { "Content-type": "application/json; charset=UTF-8" }
})
.catch(error => { console.error('Error:',error); });
$('#modal').modal('toggle');
}
</script>

View File

@ -1,50 +0,0 @@
<?php
$userid = $users[0]['USERID'];
$username = $users[0]['USERNAME'];
$userroleid = $users[0]['USERROLEID'];
?>
<div class="modal-header">
<h1 class="modal-title fs-5" id="exampleModalToggleLabel">Edit Users Role</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" ></button>
</div>
<div class="modal-body" style='background-color:#F4F6FF'>
<div class="row">
<div class="col-12">
<table class="table table-sm table-borderless">
<tr> <th>Userid</th> <th>:</th> <td><?=$userid;?></td> </tr>
<tr> <th>Username</th> <th>:</th> <td><?=$username;?></td> </tr>
<tr class="align-middle"> <th>User Role</th> <th>:</th>
<td>
<select class='form-control' id='userroleid'>
<?php
foreach($userroles as $quserroleid => $quserrole) {
if($userroleid == $quserroleid) { echo "<option value='$quserroleid' selected>$quserrole</option>"; }
else { echo "<option value='$quserroleid'>$quserrole</option>"; }
}
?>
</select>
</td>
</tr>
</table>
<button class='btn btn-sm btn-primary' onclick='save("<?=$userid;?>")'>Save</button>
<button class='btn btn-sm btn-secondary' data-bs-dismiss="modal">Cancel</button>
</div>
</div>
</div>
<script>
function save(userid) {
// Assuming your select element has an ID of "mySelect"
const userroleid = $("#userroleid").val();
const userroletext = $("#userroleid").find(":selected").text();
const url = '<?=base_url();?>users/editRole/'+userid;
console.log(url+' '+userroleid+' '+userroletext);
fetch(url, {
method: "POST",
body: JSON.stringify({ userroleid : userroleid }),
headers: { "Content-type": "application/json; charset=UTF-8" }
})
.catch(error => { console.error('Error:',error); });
$('#modal').modal('toggle');
$('#userrole'+userid).html(userroletext);
}
</script>

View File

@ -4,45 +4,74 @@
<div class="card border-0">
<div class="body-card">
<div class="table-responsive">
<table id="table_dashboard" class="table">
<table id="myTable" class="table">
<thead>
<tr>
<th>#</th>
<th>Userid</th>
<th>Name</th>
<th>Role</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<?php
$i = 1;
foreach ($users as $data) {
$userid = $data['USERID'];
$username = $data['USERNAME'];
$userrolecode = $data['USERROLEID'];
?>
<tr class="table-row">
<td><?=$i;?></td>
<td><?=$userid;?></td>
<td><?=$username;?></td>
<td>
<button class='badge text-bg-dark editRole' data-bs-toggle="modal" data-bs-target="#modal" data-userid='<?=$userid;?>'>edit role</button>
<button class='badge text-bg-warning editPass' data-userid='<?=$userid;?>'>edit password</button>
</td>
</tr>
<?php
$i++;
}
?>
<tbody id='table-body'>
</tbody>
</table>
</div>
</div>
</div>
<div class="modal fade" id="modal" aria-hidden="true" tabindex="-1">
<div class="modal fade" id="modal_editRole" aria-hidden="true" tabindex="-1">
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<div class='modal-header'> Role Editor </div>
<div class='modal-content p-3' style='background-color:#F4F6FF'>
<div class="row">
<div class="col-12">
<table class="table table-sm table-borderless">
<tr class="align-middle"> <th>Userid</th> <th>:</th> <td><input class='form-control' type='text' id='useridRole' disabled /></td> </tr>
<tr class="align-middle"> <th>Role</th> <th>:</th>
<td>
<select id='userroleid' class='form-control'>
<option value='0'></option>
<?php
foreach($userroles as $data) {
$userroleid = $data['USERROLEID'];
$userrolecode = $data['USERROLECODE'];
$userrolename = $data['USERROLENAME'];
echo "<option value='$userroleid'>$userrolecode - $userrolename</option>";
}
?>
</select>
</td>
</tr>
</table>
<button class='btn btn-sm btn-primary' onclick='saveRole()'>Save</button>
<button class='btn btn-sm btn-secondary' data-bs-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modal_editPass" aria-hidden="true" tabindex="-1">
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">
<div class="modal-content">
<div class='modal-header'> Password Editor </div>
<div class='modal-content p-3' style='background-color:#F4F6FF'>
<div id='alertPass'></div>
<div class="row">
<div class="col-12">
<table class="table table-sm table-borderless">
<tr class="align-middle"> <th>Userid</th> <th>:</th> <td><input class='form-control' type='text' id='useridPass' disabled /></td> </tr>
<tr class="align-middle"> <th>Password</th> <th>:</th> <td><input class='form-control' type='password' id='pass1'/></td> </tr>
<tr class="align-middle"> <th>Conf. Password</th> <th>:</th> <td><input class='form-control' type='password' id='pass2'/></td> </tr>
</table>
<button class='btn btn-sm btn-primary' onclick='savePass()'>Save</button>
<button class='btn btn-sm btn-secondary' data-bs-dismiss="modal">Cancel</button>
</div>
</div>
</div>
</div>
</div>
</div>
@ -50,25 +79,101 @@
<?= $this->section('script') ?>
<script>
$(document).ready(function() {
$('#table_dashboard').DataTable({
order: [],
pageLength: 25
});
});
var tb = $('#mytable').DataTable();
$('.editPass').on('click',function(){
var userid = $(this).data('userid');
$('.modal-content').load('<?=base_url();?>users/editPass/'+userid, function(){
$('#modal').modal('show');
index();
function index() {
let url = '<?=base_url('');?>api/users/index';
$.ajax({
url: url,
method: 'GET',
success: function(response) {
$("#table-body").html("");
var data = response['users'];
for (var i = 0; i < data.length; i++) {
let userid = data[i].USERID;
let username = data[i].USERNAME;
let userroleid = data[i].USERROLEID;
let userrolename = '';
if(data[i].USERROLENAME != null) { userrolename = data[i].USERROLENAME; }
let editBtn = '<button class="btn btn-sm btn-secondary" ' + ' onclick="editRole(\'' + userid + '\',\''+ userroleid +'\')">Edit Role' + '</button> ';
editBtn += '<button class="btn btn-sm btn-warning" ' + ' onclick="editPass(\'' + userid + '\')">Edit Password' + '</button> ';
let datarow = '<tr class="align-middle">' +
'<td>' + userid + '</td>' + '<td>' + username + '</td>' + '<td>' + userrolename + '</td>' + '<td>' + editBtn + '</td>' +
'</tr>';
$("#table-body").append(datarow);
}
tb.ajax.reload();
},
error: function(response) { console.log(response.responseJSON); }
});
});
}
$('.editRole').on('click',function(){
var userid = $(this).data('userid');
$('.modal-content').load('<?=base_url();?>users/editRole/'+userid , function(){
$('#modal').modal('show');
function editPass(userid) {
$('#useridPass').val(userid);
$('#pass1').val('');
$('#pass2').val('');
$('#modal_editPass').modal('show');
}
function editRole(userid,userroleid) {
$('#useridRole').val(userid);
$(`#userroleid option[value='${userroleid}']`).prop('selected', true);
$('#modal_editRole').modal('show');
}
function savePass() {
var userid = $("#useridPass").val();
var pass1 = $("#pass1").val();
var pass2 = $("#pass2").val();
if(pass1 == pass2) {
let url = '<?=base_url('');?>api/users/savePass/'+userid ;
let data = { userid: userid, pass : pass1 };
$.ajax({
url: url,
method: "POST",
data: data,
success: function(response) {
$("#alertPass").html("");
$("#useridPass").val("");
$("#pass1").val("");
$("#pass2").val("");
$("#modal_editPass").modal('hide');
},
error: function(response) {
console.log(response.responseJSON)
}
});
} else {
$('#alertPass').html(
"<div class='alert alert-danger alert-dismissible fade show' role='alert'> "+
"Password is not the same!" +
"<button type='button' class='btn-close' data-bs-dismiss='alert' aria-label='Close'></button>"+
"</div>"
);
}
}
function saveRole() {
var userid = $("#useridRole").val();
var userroleid = $("#userroleid").val();
let url = '<?=base_url('');?>api/users/saveRole/'+userid ;
let data = { userid: userid, userroleid : userroleid};
$.ajax({
url: url,
method: "POST",
data: data,
success: function(response) {
$("#alertPass").html("");
$("#useridRole").val("");
$("#userroleid").val("");
$("#modal_editRole").modal('hide');
index();
},
error: function(response) {
console.log(response.responseJSON)
}
});
});
}
</script>
<?= $this->endSection() ?>