ExpressJs

⌘K
  1. Home
  2. Docs
  3. ExpressJs
  4. Role And Permission
  5. user_roles(কোন ইউজারের কোন রোল )

user_roles(কোন ইউজারের কোন রোল )

const AppDataSource = require('../config/database');
const User = require('../entities/User'); // Import User entity
const Role = require('../entities/Role'); // Import Role entity
const UserRole = require('../entities/UserRole'); // Import UserRole entity

/**
 * নির্দিষ্ট একটি ব্যবহারকারীকে নির্দিষ্ট একটি ভূমিকা (Role) অ্যাসাইন করার ফাংশন।
 * @function assignRoleToUser
 * @param {object} req - রিকোয়েস্ট অবজেক্ট যা ব্যবহারকারীর ইনপুট ডেটা ধারণ করে।
 * @param {object} res - রেসপন্স অবজেক্ট যা ক্লায়েন্টকে রেসপন্স পাঠাতে ব্যবহৃত হয়।
 * @returns {Promise<void>} - ফাংশনটি একটি প্রমিস রিটার্ন করে যা রিকোয়েস্ট সম্পন্ন হওয়ার পর রেসপন্স প্রদান করে।
 */
const assignRoleToUser = async (req, res) => {
    // রিকোয়েস্ট বডি থেকে ইউজার আইডি এবং রোল আইডি গ্রহণ করা হচ্ছে
    const { userId, roleId } = req.body;

    try {
        // ইউজার এবং রোল রেপোজিটরি তৈরি করা হচ্ছে
        const userRepository = AppDataSource.getRepository(User);
        const roleRepository = AppDataSource.getRepository(Role);
        const userRoleRepository = AppDataSource.getRepository(UserRole);

        // ইউজার এবং রোল খুঁজে বের করা হচ্ছে
        const user = await userRepository.findOne({ where: { id: userId } });
        const role = await roleRepository.findOne({ where: { id: roleId } });

        if (!user) {
            // যদি ইউজার না পাওয়া যায়, তাহলে 404 স্টেটাস কোড এবং একটি মেসেজ পাঠানো হচ্ছে
            return res.status(404).json({ message: 'ব্যবহারকারী খুঁজে পাওয়া যায়নি।' });
        }

        if (!role) {
            // যদি রোল না পাওয়া যায়, তাহলে 404 স্টেটাস কোড এবং একটি মেসেজ পাঠানো হচ্ছে
            return res.status(404).json({ message: 'ভূমিকা (Role) খুঁজে পাওয়া যায়নি।' });
        }

        // চেক করা হচ্ছে এই রোলটি ইতোমধ্যে ব্যবহারকারীর কাছে অ্যাসাইন করা আছে কিনা
        const existingUserRole = await userRoleRepository.findOne({ where: { user: { id: userId }, role: { id: roleId } } });

        if (existingUserRole) {
            return res.status(400).json({ message: 'এই রোলটি ইতোমধ্যে ব্যবহারকারীর কাছে অ্যাসাইন করা আছে।' });
        }

        // নতুন UserRole তৈরি করা হচ্ছে এবং ডাটাবেজে সংরক্ষণ করা হচ্ছে
        const userRole = new UserRole();
        userRole.user = user;
        userRole.role = role;
        await userRoleRepository.save(userRole);

        // সফলভাবে রোল অ্যাসাইন করা হয়েছে এমন মেসেজ পাঠানো হচ্ছে
        return res.status(200).json({ message: 'ভূমিকা (Role) সফলভাবে ব্যবহারকারীকে অ্যাসাইন করা হয়েছে।' });
    } catch (err) {
        // যদি কোন অপ্রত্যাশিত ত্রূটি ঘটে, তাহলে 500 স্টেটাস কোড এবং ত্রূটির মেসেজ পাঠানো হচ্ছে
        return res.status(500).json({ message: 'ভূমিকা অ্যাসাইন করতে ত্রূটি ঘটেছে।', error: err.message });
    }
};

module.exports = {
    assignRoleToUser,
};

How can we help?