1 ضمیمه
تعیین سطح دسترسی به روش LINQ
با سلام خدمت دوستان
من میخوام تو برنامم به روش لینک سطح دسترسی ایجاد کنم به صورتی که اگر یوزر ادمین وارد شد به همه بخش ها دسترسی داشته باشه ولی اگر یوزر دیگه وارد شد نتونه همه بخش ها رو ببینه برای مثال مثلا یکی از دکمه ها خاموش باشه .
تو دیتابیس من نوع داده ای bit تایین کردم و میخوام بگم اگر یوزری وارد شد و برای مثال تیک فیلد چهارم خاموش بود یه دکمه تو فرمم برای اون یوزر خاموش باشه ولی برای ادمین همه دکمه ها روشن باشه
ضمیمه 142811
نقل قول: تایین سطح دسترسی در سیشارپ به روش لینک
سلام جدولتون صحیح هستش و باید برای دسترسی های موردنظر یه فیلد درنظر بگیرید از نوع 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;
}
نقل قول: تعیین سطح دسترسی به روش LINQ
خیلی ممنون از پاسخ شما زحمت کشیدید و تشکر میکنم بابت وقتی که گذاشتید ولی من با استورپروسیجر ها کار نکردم و کل پروژه رو با روش linq نوشتم و میخواستم این قسمت هم با لینک باشه . ممنون میشم من رو به این روش راهنمایی کنید .
نقل قول: تعیین سطح دسترسی به روش LINQ
خیلی ساده بگم آیدی کاربر جاری رو پیدا کن و از جدول مربوطه اون رکورد رو بخون، در نهایت شرط برسی رو بزار که اگر entity جاری فیلد p4 مقدار true بود دکمه اون فرم نمایش داده بشه یا ...
برای برسی عدم اعمال شرط بر روی ادمین یک کلید بساز موقع پیدا کردن کاربر جاری شرط ادمین رو با استفاده از کلید مشخص کن که ادمین بود شرط ها روش اعمال نشه.
db.tblLogin.Find(id)