Web Development User Roles এবং Permissions নির্ধারণ গাইড ও নোট

211

Web2Py তে User Roles এবং Permissions নির্ধারণ করা খুবই গুরুত্বপূর্ণ একটি ফিচার, বিশেষত যখন অ্যাপ্লিকেশনটিতে বিভিন্ন ধরনের ব্যবহারকারীদের জন্য আলাদা আলাদা অ্যাক্সেস এবং অনুমতি (permissions) সেট করতে হয়। Web2Py এই ফিচারটি পরিচালনা করার জন্য Auth মডিউল ব্যবহার করে, যা ইউজার অথেনটিকেশন (authentication) এবং অথোরাইজেশন (authorization) ব্যবস্থাপনা সরবরাহ করে।


Web2Py তে User Roles এবং Permissions নির্ধারণ

Web2Py তে User Roles এবং Permissions তৈরি করার জন্য Auth মডিউলটি ব্যবহৃত হয়। এখানে আমরা ইউজার রোল এবং অনুমতি কিভাবে নির্ধারণ করতে হয়, তার বিস্তারিত ব্যাখ্যা প্রদান করবো।

১. Auth মডিউল সেটআপ

Web2Py তে ইউজার অথেনটিকেশন এবং অথোরাইজেশন পরিচালনা করতে প্রথমে Auth মডিউল সক্রিয় করতে হয়। এটি ডিফল্টভাবে Web2Py তে অন্তর্ভুক্ত থাকে, তবে সেটআপ করতে হয়।

Controller (default.py):

def index():
    # Auth এর সাথে সম্পর্কিত বেসিক সেটআপ
    if not auth.is_logged_in():
        redirect(auth.login())
    return dict(message="Welcome to Web2Py!")

এখানে, auth.is_logged_in() চেক করে, ইউজার লগইন রয়েছে কিনা, এবং যদি না থাকে তবে তাকে লগইন পেজে রিডিরেক্ট করা হয়।

২. ইউজার রোল (User Roles) তৈরি করা

Web2Py তে ইউজার রোল তৈরি করতে auth.add_role() ফাংশন ব্যবহার করা হয়। রোল হলো ইউজারের একটি নির্দিষ্ট গ্রুপ বা শ্রেণী, যার মাধ্যমে ইউজারের জন্য নির্দিষ্ট কিছু অনুমতি নির্ধারণ করা হয়।

ইউজার রোল তৈরি করা:

# ইউজার রোল তৈরি
auth.add_role('admin')  # অ্যাডমিন রোল
auth.add_role('user')   # সাধারণ ইউজার রোল

৩. রোলের সাথে ইউজার সংযুক্ত করা

একবার আপনি রোল তৈরি করলে, আপনি ইউজারদের সেই রোলের সাথে সংযুক্ত করতে পারেন। এটি করার জন্য auth.add_membership() ফাংশন ব্যবহার করা হয়।

ইউজারের সাথে রোল সংযুক্ত করা:

# একটি ইউজারের সাথে রোল যুক্ত করা
auth.add_membership('admin', user_id)  # ইউজারকে admin রোল দেওয়া
auth.add_membership('user', user_id)   # ইউজারকে user রোল দেওয়া

এখানে user_id হল ইউজারের ইউনিক আইডি, যেটি ডেটাবেসের মধ্যে থাকে। add_membership() ফাংশন ব্যবহার করে আপনি নির্দিষ্ট ইউজারকে নির্দিষ্ট রোল দিয়ে দিতে পারেন।

৪. Permissions নির্ধারণ (Granting Permissions)

Web2Py তে আপনি রোলের জন্য specific permissions বা অনুমতি প্রদান করতে পারেন। Web2Py এর auth.permission() ফাংশন ব্যবহার করে আপনি ইউজারদের নির্দিষ্ট রোলের জন্য অনুমতি দিতে পারেন।

নির্দিষ্ট অনুমতি প্রদান করা:

# ইউজার রোলের জন্য নির্দিষ্ট অনুমতি দেওয়া
auth.add_permission('admin', 'edit')  # admin রোলের জন্য edit অনুমতি
auth.add_permission('user', 'view')   # user রোলের জন্য view অনুমতি

এখানে admin রোলের জন্য edit এবং user রোলের জন্য view অনুমতি দেওয়া হয়েছে।

৫. রোল এবং অনুমতি যাচাই (Role and Permission Checking)

আপনি auth.has_membership() এবং auth.has_permission() ফাংশন ব্যবহার করে একটি ইউজারের রোল এবং অনুমতি যাচাই করতে পারেন। এই ফাংশনগুলোর মাধ্যমে আপনি চেক করতে পারবেন যে ইউজার একটি নির্দিষ্ট রোলের অংশ কিনা এবং তাদের নির্দিষ্ট অনুমতি আছে কিনা।

রোল চেক করা:

if auth.has_membership('admin'):
    # যদি ইউজার admin রোলের সদস্য হয়
    response.flash = "You are an admin."
else:
    # যদি ইউজার admin রোলের সদস্য না হয়
    response.flash = "You are not an admin."

অনুমতি চেক করা:

if auth.has_permission('edit'):
    # যদি ইউজারের edit অনুমতি থাকে
    response.flash = "You have permission to edit."
else:
    # যদি ইউজারের edit অনুমতি না থাকে
    response.flash = "You do not have permission to edit."

৬. ইউজার অ্যাক্সেস কন্ট্রোল

Web2Py তে এ্যাক্সেস কন্ট্রোল বা অ্যাপ্লিকেশনের অংশে ইউজারের অ্যাক্সেস সীমাবদ্ধ করতে auth.requires_permission() ব্যবহার করা হয়।

ইউজার রোল বা অনুমতি অনুযায়ী অ্যাক্সেস নিয়ন্ত্রণ:

@auth.requires_permission('admin')
def admin_page():
    return dict(message="Welcome Admin")

এখানে admin_page() ফাংশনে ইউজারের admin রোল থাকতে হবে, তবে সে অ্যাডমিন পেজ অ্যাক্সেস করতে পারবে।

৭. ফর্মের মাধ্যমে রোল ও অনুমতি নির্ধারণ

আপনি SQLFORM এর মাধ্যমে ইউজার রোল বা অনুমতি নির্ধারণের জন্য ফর্ম তৈরি করতে পারেন।

উদাহরণ:

# ইউজার রোল নির্ধারণের জন্য ফর্ম তৈরি
def create_user():
    form = SQLFORM.factory(
        Field('username', 'string'),
        Field('password', 'password'),
        Field('role', 'string', requires=IS_IN_SET(['admin', 'user']))
    )
    if form.process().accepted:
        user_id = db.auth_user.insert(username=form.vars.username, password=form.vars.password)
        if form.vars.role == 'admin':
            auth.add_membership('admin', user_id)
        else:
            auth.add_membership('user', user_id)
        response.flash = "User created successfully"
    return dict(form=form)

এখানে, create_user() ফাংশনটি একটি ফর্ম তৈরি করে, যেখানে ইউজারের রোল admin বা user নির্বাচন করা যাবে। ফর্মটি সফলভাবে সাবমিট হলে, ইউজার রোল অনুযায়ী সেই ইউজারকে নির্দিষ্ট রোল দেওয়া হবে।


সারাংশ

Web2Py তে User Roles এবং Permissions নির্ধারণ করার জন্য Auth মডিউল ব্যবহৃত হয়। এটি ইউজারের authentication এবং authorization ব্যবস্থাপনা সহজ এবং কার্যকরী করে তোলে।

  • User Roles: বিভিন্ন ধরনের ইউজার গ্রুপ (যেমন admin, user) তৈরি করা যায় এবং তাদের জন্য নির্দিষ্ট অ্যাক্সেস অনুমতি দেওয়া হয়।
  • Permissions: ইউজারের জন্য নির্দিষ্ট কাজ (যেমন edit, view) করার অনুমতি প্রদান করা হয়।
  • Access Control: ইউজারের রোল এবং অনুমতি যাচাই করে অ্যাপ্লিকেশনের নির্দিষ্ট অংশে অ্যাক্সেস নিয়ন্ত্রণ করা হয়।

এই ব্যবস্থাগুলি Web2Py তে ইউজারদের রোল এবং অনুমতি সহজে নিয়ন্ত্রণ করতে সাহায্য করে।

Content added By
Promotion

Are you sure to start over?

Loading...