Access Control এবং User Management

TinyDB তে Security এবং Access Control - টাইনিডিবি (TinyDB) - Database Tutorials

340

TinyDB একটি হালকা ডাটাবেস সিস্টেম যা সাধারণত ছোট এবং মাঝারি আকারের অ্যাপ্লিকেশনগুলির জন্য ব্যবহৃত হয়। এটি সরাসরি access control বা user management ফিচার প্রদান না করলেও, আপনি কাস্টম কোড ব্যবহার করে কিছু মৌলিক access control এবং user management সিস্টেম তৈরি করতে পারেন।

TinyDB-এর জন্য access control এবং user management সাধারণত অতিরিক্ত সুরক্ষা, প্রশাসনিক নিয়ন্ত্রণ এবং ব্যবহারকারীদের ডেটাতে অ্যাক্সেস নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এখানে আমরা কয়েকটি কৌশল নিয়ে আলোচনা করবো যা TinyDB-তে access control এবং user management কার্যক্রম প্রতিষ্ঠা করতে সাহায্য করবে।


১. Access Control (অ্যাক্সেস কন্ট্রোল)

Access control হল একটি নিরাপত্তা কৌশল যা নিশ্চিত করে যে কেবল অনুমোদিত ব্যবহারকারীরাই ডেটাতে অ্যাক্সেস করতে পারবে। TinyDB সরাসরি access control ফিচার প্রদান না করলেও, আপনি একটি সার্ভার-ভিত্তিক অ্যাপ্লিকেশন তৈরি করতে পারেন যেখানে login system বা role-based access ব্যবহৃত হয়।

উদাহরণ: সাধারণ Access Control

একটি মৌলিক role-based access কন্ট্রোল সিস্টেম তৈরি করা যা ব্যবহারকারীকে admin অথবা user হিসেবে পরিচিতি দেয় এবং তাদের অ্যাক্সেস সীমিত করে।

from tinydb import TinyDB, Query
from hashlib import sha256

# ডাটাবেস তৈরি
db = TinyDB('users.json')
User = Query()

# ব্যবহারকারী ডেটাবেসে ইনসার্ট করা
def add_user(username, password, role):
    hashed_password = sha256(password.encode()).hexdigest()  # পাসওয়ার্ড হ্যাশ করা
    db.insert({'username': username, 'password': hashed_password, 'role': role})

# লগইন চেক করা
def login(username, password):
    hashed_password = sha256(password.encode()).hexdigest()  # হ্যাশ করা পাসওয়ার্ড
    user = db.search((User.username == username) & (User.password == hashed_password))
    
    if user:
        return user[0]['role']
    else:
        return None

# ব্যবহারকারী যোগ করা
add_user('admin', 'adminpassword', 'admin')
add_user('john', 'userpassword', 'user')

# লগইন পরীক্ষা
role = login('admin', 'adminpassword')
if role == 'admin':
    print("Admin access granted.")
elif role == 'user':
    print("User access granted.")
else:
    print("Invalid credentials.")

এখানে, add_user() ফাংশন ব্যবহারকারীকে username, password, এবং role সহ ডেটাবেসে যোগ করে। লগইন করার সময়, পাসওয়ার্ড হ্যাশ করা হয় এবং ব্যবহারকারীর role যাচাই করা হয়। একবার admin ব্যবহারকারী লগইন করলে, তারা পুরো অ্যাপ্লিকেশনটিতে অ্যাক্সেস পাবেন, এবং user শুধুমাত্র সীমিত অ্যাক্সেস পাবেন।


২. User Management (ব্যবহারকারী ব্যবস্থাপনা)

User management ব্যবহারকারীদের অ্যাক্সেস নিয়ন্ত্রণ এবং তাদের ডেটা পরিচালনার একটি সিস্টেম। TinyDB-তে user management তৈরি করার জন্য আপনি login system, role management, এবং permissions পরিচালনা করতে পারেন।

উদাহরণ: User Management System

এখানে আমরা একটি user management system তৈরি করবো যেখানে ব্যবহারকারী তৈরি, তাদের তথ্য দেখানো, এবং ডেটা আপডেট করা যাবে।

from tinydb import TinyDB, Query
from hashlib import sha256

# ডাটাবেস তৈরি
db = TinyDB('users.json')
User = Query()

# ব্যবহারকারী ডেটাবেসে ইনসার্ট করা
def add_user(username, password, role):
    hashed_password = sha256(password.encode()).hexdigest()  # পাসওয়ার্ড হ্যাশ করা
    db.insert({'username': username, 'password': hashed_password, 'role': role})

# ব্যবহারকারীর তথ্য দেখা
def get_user(username):
    user = db.search(User.username == username)
    if user:
        return user[0]
    else:
        return None

# ব্যবহারকারীর তথ্য আপডেট করা
def update_user(username, new_password=None, new_role=None):
    user = db.search(User.username == username)
    if user:
        if new_password:
            hashed_password = sha256(new_password.encode()).hexdigest()
            db.update({'password': hashed_password}, User.username == username)
        if new_role:
            db.update({'role': new_role}, User.username == username)
        return "User updated successfully."
    else:
        return "User not found."

# ব্যবহারকারী যোগ করা
add_user('admin', 'adminpassword', 'admin')
add_user('john', 'userpassword', 'user')

# ব্যবহারকারীর তথ্য দেখা
print(get_user('john'))

# ব্যবহারকারীর তথ্য আপডেট করা
print(update_user('john', new_password='newpassword', new_role='admin'))

# আপডেট হওয়া তথ্য দেখানো
print(get_user('john'))

কী হচ্ছে এখানে:

  1. add_user(): একটি নতুন ব্যবহারকারী ডেটাবেসে যোগ করে, যেখানে পাসওয়ার্ড হ্যাশ করা হয়।
  2. get_user(): ব্যবহারকারীর তথ্য অনুসন্ধান করে এবং ফলাফল ফেরত দেয়।
  3. update_user(): একটি ব্যবহারকারীর তথ্য আপডেট করার সুযোগ দেয়, যেমন পাসওয়ার্ড বা রোল পরিবর্তন।

৩. Permissions (অনুমতিসমূহ)

Permissions ব্যবহারকারীদের তাদের অ্যাক্সেস সীমাবদ্ধ করতে ব্যবহার করা হয়। এটি রোল-বেসড অ্যাক্সেস কন্ট্রোল (RBAC) এর অংশ হতে পারে, যেখানে নির্দিষ্ট রোলের ব্যবহারকারীরা শুধুমাত্র নির্দিষ্ট কাজ করতে পারে। যেমন, admin রোল ব্যবহারকারী ডেটা সম্পাদনা করতে পারে, তবে user রোল ব্যবহারকারী শুধুমাত্র দেখতে পারে।

উদাহরণ: Permissions ব্যবহার করা

# ব্যবহারের অনুমতি চেক করা
def check_permission(username, required_role):
    user = db.search(User.username == username)
    if user:
        if user[0]['role'] == required_role:
            return True
        else:
            return False
    return False

# admin এর জন্য অনুমতি চেক করা
if check_permission('admin', 'admin'):
    print("Admin has access to manage all users.")
else:
    print("Permission denied for admin.")

এখানে, check_permission() ফাংশন ব্যবহারকারী রোল চেক করে এবং নিশ্চিত করে যে ব্যবহারকারীর কাছে সঠিক অনুমতি আছে কিনা।


সারাংশ

TinyDB-তে Access Control এবং User Management তৈরি করা সম্ভব, যদিও এটি সরাসরি সমর্থন না করে। আপনি role-based access control (RBAC) এবং permissions ব্যবস্থাপনা কৌশল ব্যবহার করে একটি মৌলিক ব্যবহারকারী এবং অ্যাক্সেস কন্ট্রোল সিস্টেম তৈরি করতে পারেন। পাসওয়ার্ড হ্যাশিং, role management, এবং user data management সহ, আপনি একটি নিরাপদ এবং কার্যকরী সিস্টেম নির্মাণ করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...