User Roles এবং Permissions ম্যানেজ করা

Web Development - কোডইগনাইটার (Codeigniter) - CodeIgniter এর Authentication এবং Authorization |

User Roles এবং Permissions ব্যবস্থাপনা একটি ওয়েব অ্যাপ্লিকেশনের নিরাপত্তা এবং অ্যাক্সেস কন্ট্রোলের জন্য অত্যন্ত গুরুত্বপূর্ণ। CodeIgniter এ User Roles এবং Permissions ম্যানেজ করা সাধারণত ডাটাবেসে ইউজার, রোল এবং পারমিশন সম্পর্কিত টেবিল তৈরি করে পরিচালনা করা হয়।

এখানে, আমরা দেখবো কীভাবে Roles এবং Permissions সিস্টেম তৈরি করা যায়, যা ইউজারের অ্যাক্সেস নিয়ন্ত্রণে সহায়ক।


Step 1: ডাটাবেস টেবিল ডিজাইন

প্রথমে ডাটাবেসে তিনটি টেবিল তৈরি করা হবে:

  1. users: ইউজার তথ্য সংরক্ষণ করবে।
  2. roles: বিভিন্ন রোল সংরক্ষণ করবে (যেমন: admin, user, manager)।
  3. permissions: বিভিন্ন পারমিশন সংরক্ষণ করবে (যেমন: create, edit, delete, view)।

১.1 users টেবিল

CREATE TABLE `users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(100) NOT NULL,
  `password` VARCHAR(255) NOT NULL,
  `email` VARCHAR(100) NOT NULL,
  `role_id` INT NOT NULL,
  PRIMARY KEY (`id`),
  FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`)
);

১.2 roles টেবিল

CREATE TABLE `roles` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `role_name` VARCHAR(100) NOT NULL,
  PRIMARY KEY (`id`)
);

১.3 permissions টেবিল

CREATE TABLE `permissions` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `permission_name` VARCHAR(100) NOT NULL,
  PRIMARY KEY (`id`)
);

১.4 role_permissions টেবিল

এটি roles এবং permissions টেবিলের মধ্যে সম্পর্ক তৈরি করবে।

CREATE TABLE `role_permissions` (
  `role_id` INT NOT NULL,
  `permission_id` INT NOT NULL,
  FOREIGN KEY (`role_id`) REFERENCES `roles`(`id`),
  FOREIGN KEY (`permission_id`) REFERENCES `permissions`(`id`)
);

Step 2: CodeIgniter মডেল তৈরি

এখন আমরা CodeIgniter এর Model তৈরি করব, যা ডাটাবেসের টেবিল থেকে ডেটা সঠিকভাবে প্রসেস করবে।

২.1 Role_model.php মডেল

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Role_model extends CI_Model {

    public function get_roles() {
        $query = $this->db->get('roles');
        return $query->result();
    }

    public function get_permissions_by_role($role_id) {
        $this->db->select('permissions.permission_name');
        $this->db->from('role_permissions');
        $this->db->join('permissions', 'permissions.id = role_permissions.permission_id');
        $this->db->where('role_permissions.role_id', $role_id);
        $query = $this->db->get();
        return $query->result();
    }

    public function add_role($role_name) {
        $data = ['role_name' => $role_name];
        return $this->db->insert('roles', $data);
    }
}

২.2 Permission_model.php মডেল

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Permission_model extends CI_Model {

    public function get_permissions() {
        $query = $this->db->get('permissions');
        return $query->result();
    }

    public function add_permission($permission_name) {
        $data = ['permission_name' => $permission_name];
        return $this->db->insert('permissions', $data);
    }
}

Step 3: Controller তৈরি

এখন আমরা একটি Controller তৈরি করব যা ইউজার রোল এবং পারমিশন নিয়ন্ত্রণ করবে।

৩.1 RoleController.php Controller

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class RoleController extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('Role_model');
        $this->load->model('Permission_model');
    }

    // রোলের তালিকা দেখান
    public function index() {
        $data['roles'] = $this->Role_model->get_roles();
        $this->load->view('role_view', $data);
    }

    // রোল তৈরি করুন
    public function create_role() {
        $role_name = $this->input->post('role_name');
        $this->Role_model->add_role($role_name);
        redirect('rolecontroller');
    }

    // একটি রোলের পারমিশন দেখুন
    public function role_permissions($role_id) {
        $data['permissions'] = $this->Role_model->get_permissions_by_role($role_id);
        $this->load->view('permissions_view', $data);
    }
}

Step 4: Views তৈরি

৪.1 role_view.php (রোল দেখানো)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>User Roles</title>
</head>
<body>
    <h1>User Roles</h1>
    <form method="POST" action="<?php echo site_url('rolecontroller/create_role'); ?>">
        <input type="text" name="role_name" placeholder="Role Name">
        <input type="submit" value="Create Role">
    </form>

    <h2>Roles List</h2>
    <ul>
        <?php foreach ($roles as $role): ?>
            <li>
                <?php echo $role->role_name; ?>
                <a href="<?php echo site_url('rolecontroller/role_permissions/'.$role->id); ?>">View Permissions</a>
            </li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

৪.2 permissions_view.php (পারমিশন দেখানো)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Role Permissions</title>
</head>
<body>
    <h1>Permissions</h1>
    <ul>
        <?php foreach ($permissions as $permission): ?>
            <li><?php echo $permission->permission_name; ?></li>
        <?php endforeach; ?>
    </ul>
</body>
</html>

Step 5: Permissions Assign করা

একটি রোলের জন্য পারমিশন অ্যাসাইন করতে, একটি নতুন টেবিল (role_permissions) তৈরি করা হয়েছিল, যা রোল এবং পারমিশন সম্পর্কিত রেকর্ড সংরক্ষণ করে। আপনি role_permissions টেবিল ব্যবহার করে পারমিশন অ্যাসাইন করতে পারেন।


Step 6: User Authentication এবং Authorization

এই সিস্টেমটি সম্পূর্ণ করার জন্য Authentication এবং Authorization সিস্টেমও তৈরি করতে হবে। এর মাধ্যমে একটি ইউজারের লগইন তথ্য যাচাই করে, তার রোল এবং পারমিশন অনুযায়ী অ্যাক্সেস কন্ট্রোল করা যাবে।


CodeIgniter-এ User Roles এবং Permissions ম্যানেজ করার জন্য ডাটাবেসে রোল এবং পারমিশন সম্পর্কিত টেবিল তৈরি করা হয় এবং মডেল, কন্ট্রোলার, ভিউয়ের মাধ্যমে সেগুলো পরিচালনা করা হয়। এটি নিরাপত্তা এবং অ্যাক্সেস কন্ট্রোলের জন্য একটি শক্তিশালী উপায়, যেখানে ইউজারের রোল অনুযায়ী অ্যাক্সেস নিয়ন্ত্রণ করা সম্ভব হয়।

Content added By
Promotion