سلام جدولتون صحیح هستش و باید برای دسترسی های موردنظر یه فیلد درنظر بگیرید از نوع bit.
یه پروسیجر بصورت رفرنسی بنویسید تا مقداری که توسط سی شارپ پاس داده میشه رو از جدول چک کنه و مقدار فیلدهارو برگردونه (همون true , false ها).
درنهایت با if میتونید بخش های مختلف رو فعال و غیرفعال کنید.
کد های نمونه برای پروژه خودم :
پروسیجر:
CREATE PROCEDURE [dbo].[GetUserPermission]
@UserId INT,
@Depot BIT OUTPUT,
@Bank BIT OUTPUT,
@Factor BIT OUTPUT,
@Person BIT OUTPUT,
@Setting BIT OUTPUT,
@User BIT OUTPUT
AS
BEGIN
SET @Depot = (SELECT DepotPermission FROM Roles WHERE RoleId IN (SELECT RoleId FROM Users WHERE UserId=@UserId))
SET @Bank = (SELECT BankPersmission FROM Roles WHERE RoleId IN (SELECT RoleId FROM Users WHERE UserId=@UserId))
SET @Factor = (SELECT FactorPermission FROM Roles WHERE RoleId IN (SELECT RoleId FROM Users WHERE UserId=@UserId))
SET @Person = (SELECT PersonPermission FROM Roles WHERE RoleId IN (SELECT RoleId FROM Users WHERE UserId=@UserId))
SET @Setting = (SELECT SettingPermission FROM Roles WHERE RoleId IN (SELECT RoleId FROM Users WHERE UserId=@UserId))
SET @User = (SELECT UserPermission FROM Roles WHERE RoleId IN (SELECT RoleId FROM Users WHERE UserId=@UserId))
END
کدهای سی شارپ:
bool? Depot = false;
bool? Bank = false;
bool? Factor = false;
bool? Person = false;
bool? Setting = false;
bool? User = false;
dc.GetUserPermission(UserId, ref Depot, ref Bank, ref Factor, ref Person, ref Setting, ref User);
if (Setting)
{
btnSettings.Enabled = true;
btnTax.Enabled = true;
}
else
{
btnSettings.Enabled = false;
btnTax.Enabled = false;
}
if (User)
{
btnUsers.Enabled = true;
btnRoles.Enabled = true;
}
else
{
btnUsers.Enabled = false;
btnRoles.Enabled = false;
}
if (Depot)
{
btnDepot.Enabled = true;
btnInOut.Enabled = true;
btnStock.Enabled = true;
btnMovment.Enabled = true;
}