Role-based Access Control (RBAC) একটি নিরাপত্তা কৌশল যা ব্যবহারকারীদের বিভিন্ন ভূমিকা (Role) ভিত্তিক অনুমতি প্রদান করে। এতে ব্যবহারকারীদের বিভিন্ন রিসোর্স বা পেজ অ্যাক্সেস করার অনুমতি ভূমিকার উপর নির্ভর করে। Ajax এর মাধ্যমে আপনি ব্যবহারকারীদের অনুমতি এবং ভূমিকা যাচাই করার প্রক্রিয়া সহজভাবে বাস্তবায়ন করতে পারেন, যেখানে পেজ রিফ্রেশ ছাড়াই ডেটা এবং রিসোর্স অ্যাক্সেস নিয়ন্ত্রণ করা সম্ভব হয়।
এই টিউটোরিয়ালে, Ajax ব্যবহার করে RBAC কিভাবে কাজ করে তা ব্যাখ্যা করা হবে।
RBAC এর মধ্যে মূলত দুটি মৌলিক উপাদান থাকে:
প্রথমে একটি সাধারণ ফর্ম তৈরি করা হবে, যা ব্যবহারকারীকে লগইন করতে দিবে এবং তার ভূমিকা যাচাই করবে।
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>RBAC Example</title>
</head>
<body>
<h1>Login</h1>
<form id="loginForm">
<label for="username">Username:</label>
<input type="text" id="username" name="username" required>
<br>
<label for="password">Password:</label>
<input type="password" id="password" name="password" required>
<br>
<button type="button" onclick="login()">Login</button>
</form>
<div id="response"></div>
<div id="content"></div>
<script src="script.js"></script>
</body>
</html>
এখন, script.js
ফাইলে একটি Ajax কল তৈরি করতে হবে, যা লগইন তথ্য সার্ভারে পাঠাবে এবং ব্যবহারকারীর ভূমিকা যাচাই করবে।
script.js:
function login() {
const username = document.getElementById("username").value;
const password = document.getElementById("password").value;
const loginData = {
username: username,
password: password
};
const xhr = new XMLHttpRequest();
xhr.open("POST", "login.php", true); // PHP ফাইল যেখানে Authentication হবে
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onload = function () {
if (xhr.status === 200) {
const response = JSON.parse(xhr.responseText);
if (response.status === "success") {
document.getElementById("response").innerHTML = "Login Successful!";
displayContent(response.role);
} else {
document.getElementById("response").innerHTML = "Invalid username or password!";
}
} else {
document.getElementById("response").innerHTML = "Error: Unable to process login request.";
}
};
xhr.send(JSON.stringify(loginData)); // ফর্ম ডেটা পাঠানো
}
function displayContent(role) {
const contentDiv = document.getElementById("content");
// ভূমিকা অনুযায়ী কন্টেন্ট শো করা
if (role === "admin") {
contentDiv.innerHTML = "<h2>Welcome Admin!</h2><p>You have full access to all resources.</p>";
} else if (role === "user") {
contentDiv.innerHTML = "<h2>Welcome User!</h2><p>You have limited access.</p>";
} else {
contentDiv.innerHTML = "<h2>Access Denied</h2><p>Your role does not have access to this page.</p>";
}
}
এখন, সার্ভারে একটি PHP ফাইল তৈরি করা হবে যা ইউজারনেম এবং পাসওয়ার্ড যাচাই করবে এবং সঠিক হলে ব্যবহারকারীর ভূমিকা রিটার্ন করবে।
login.php:
<?php
session_start();
// ভূমিকা সহ ইউজারনেম এবং পাসওয়ার্ড যাচাই
$users = [
'admin' => ['password' => 'admin123', 'role' => 'admin'],
'user1' => ['password' => 'user123', 'role' => 'user'],
'guest' => ['password' => 'guest123', 'role' => 'guest'],
];
$data = json_decode(file_get_contents("php://input"), true);
$username = $data['username'];
$password = $data['password'];
if (isset($users[$username]) && $users[$username]['password'] === $password) {
$_SESSION['username'] = $username;
$_SESSION['role'] = $users[$username]['role']; // ভূমিকা সেশন সেট করা
echo json_encode(["status" => "success", "role" => $users[$username]['role']]);
} else {
echo json_encode(["status" => "error"]);
}
?>
এখন, আমরা সার্ভারের একটি পেজ তৈরি করবো যা প্রমাণীকৃত ইউজারের ভূমিকা চেক করবে এবং সেই অনুযায়ী তার অ্যাক্সেস কন্ট্রোল করবে।
role_check.php:
<?php
session_start();
if (!isset($_SESSION['role'])) {
echo "Access Denied: Please login first.";
exit();
}
$role = $_SESSION['role'];
if ($role === "admin") {
echo "Welcome Admin! You have full access.";
} elseif ($role === "user") {
echo "Welcome User! You have limited access.";
} else {
echo "Access Denied: Unauthorized role.";
}
?>
RBAC বাস্তবায়নের সময় কিছু নিরাপত্তা বিষয় অবশ্যই খেয়াল রাখতে হবে:
Ajax এবং PHP ব্যবহার করে Role-based Access Control (RBAC) বাস্তবায়ন করা খুবই কার্যকরী পদ্ধতি, যা ওয়েব অ্যাপ্লিকেশনের নিরাপত্তা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করে। Ajax ব্যবহার করে ব্যবহারকারী লগইন করার পর, তার ভূমিকা চেক করে ডেটা এবং রিসোর্সের অ্যাক্সেস নিয়ন্ত্রণ করা যায়। এটি ওয়েব অ্যাপ্লিকেশনকে আরও নিরাপদ এবং দ্রুত করে তোলে।