135 lines
7.0 KiB
PHP
135 lines
7.0 KiB
PHP
<div class="d-flex justify-content-between align-items-center mb-4">
|
|
<h1 class="h3 mb-0 text-gray-800">จัดการสิทธิ์ผู้ใช้งาน (Roles)</h1>
|
|
<a href="<?= BASE_URL ?>/settings" class="btn btn-outline-secondary shadow-sm"><i class="fa-solid fa-arrow-left me-1"></i> กลับไปตั้งค่า</a>
|
|
</div>
|
|
|
|
<div class="row">
|
|
<!-- ฟอร์มเพิ่มสิทธิ์ -->
|
|
<div class="col-lg-4">
|
|
<div class="card shadow-sm border-0 rounded-4 mb-4 overflow-hidden">
|
|
<div class="card-header bg-primary text-white py-3">
|
|
<h6 class="m-0 font-weight-bold"><i class="fa-solid fa-user-plus me-2"></i>มอบสิทธิ์ให้ผู้ใช้</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<form action="<?= BASE_URL ?>/roles/assign" method="POST">
|
|
<input type="hidden" name="csrf_token" value="<?= $csrf_token ?>">
|
|
|
|
<div class="mb-3">
|
|
<label class="form-label fw-bold">ค้นหาผู้ใช้ (ชื่อ - นามสกุล)</label>
|
|
<select class="form-control" id="userSelect" name="user_id" required>
|
|
<option value="">-- พิมพ์ชื่อเพื่อค้นหา --</option>
|
|
</select>
|
|
<div class="form-text">ระบบจะค้นหาจากฐานข้อมูลบุคลากร (HR)</div>
|
|
</div>
|
|
|
|
<div class="mb-4">
|
|
<label class="form-label fw-bold">เลือกสิทธิ์ (Role)</label>
|
|
<select class="form-select" name="role_id" required>
|
|
<option value="">-- เลือกสิทธิ์ --</option>
|
|
<?php foreach($roles as $role): ?>
|
|
<option value="<?= $role['id'] ?>"><?= $role['name'] ?> (<?= $role['description'] ?>)</option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
|
|
<button type="submit" class="btn btn-primary w-100"><i class="fa-solid fa-check me-1"></i> มอบสิทธิ์</button>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- ตารางผู้ที่มีสิทธิ์ -->
|
|
<div class="col-lg-8">
|
|
<div class="card shadow-sm border-0 rounded-4 mb-4 overflow-hidden">
|
|
<div class="card-header bg-white py-3">
|
|
<h6 class="m-0 font-weight-bold text-primary"><i class="fa-solid fa-users-gear me-2"></i>รายชื่อผู้ที่ได้รับสิทธิ์ในระบบ</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="table-responsive">
|
|
<table class="table table-bordered table-hover align-middle" id="rolesTable">
|
|
<thead class="table-light">
|
|
<tr>
|
|
<th>รหัส (HR_CID)</th>
|
|
<th>ชื่อ - นามสกุล</th>
|
|
<th>สิทธิ์ที่ได้รับ</th>
|
|
<th class="text-center" width="100">จัดการ</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php if(empty($assigned)): ?>
|
|
<tr>
|
|
<td colspan="4" class="text-center py-3">ยังไม่มีผู้ได้รับสิทธิ์</td>
|
|
</tr>
|
|
<?php else: ?>
|
|
<?php foreach($assigned as $a): ?>
|
|
<tr>
|
|
<td><?= $a['user_id'] ?></td>
|
|
<td><?= htmlspecialchars($a['fullname']) ?></td>
|
|
<td>
|
|
<span class="badge bg-info text-dark">
|
|
<?= htmlspecialchars($a['role_name']) ?>
|
|
</span>
|
|
<small class="text-muted d-block"><?= htmlspecialchars($a['role_desc']) ?></small>
|
|
</td>
|
|
<td class="text-center">
|
|
<form action="<?= BASE_URL ?>/roles/remove" method="POST" onsubmit="return confirm('ยืนยันการลบสิทธิ์นี้?');">
|
|
<input type="hidden" name="csrf_token" value="<?= $csrf_token ?>">
|
|
<input type="hidden" name="user_id" value="<?= $a['user_id'] ?>">
|
|
<input type="hidden" name="role_id" value="<?= $a['role_id'] ?>">
|
|
<button type="submit" class="btn btn-sm btn-outline-danger"><i class="fa-solid fa-trash"></i></button>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
<?php endif; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<?php
|
|
// เพิ่ม Select2 CSS & JS
|
|
$extraScripts = '
|
|
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
|
|
<link href="https://cdn.jsdelivr.net/npm/select2-bootstrap-5-theme@1.3.0/dist/select2-bootstrap-5-theme.min.css" rel="stylesheet" />
|
|
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
|
|
<script>
|
|
$(document).ready(function() {
|
|
if($("#rolesTable tbody tr td").length > 1) {
|
|
$("#rolesTable").DataTable({
|
|
"language": {
|
|
"url": "//cdn.datatables.net/plug-ins/1.13.6/i18n/th.json"
|
|
}
|
|
});
|
|
}
|
|
|
|
$("#userSelect").select2({
|
|
theme: "bootstrap-5",
|
|
placeholder: "-- พิมพ์ชื่อเพื่อค้นหา --",
|
|
allowClear: true,
|
|
ajax: {
|
|
url: "'.BASE_URL.'/roles/search",
|
|
dataType: "json",
|
|
delay: 250,
|
|
data: function (params) {
|
|
return {
|
|
q: params.term
|
|
};
|
|
},
|
|
processResults: function (data) {
|
|
return {
|
|
results: data
|
|
};
|
|
},
|
|
cache: true
|
|
},
|
|
minimumInputLength: 2
|
|
});
|
|
});
|
|
</script>
|
|
';
|
|
?>
|