PDA

View Full Version : سوال: طراحی پنل مدیریت با asp.net



kahe.mehrdad
یک شنبه 19 مرداد 1393, 13:01 عصر
با سلام خدمت دوستان عزیز.
بنده در حال آماده سازی یک پروژه مدیریت منابع سازمانی هستم. پروژه تقریبا کامله ولی راستش توی حوزه مهندسی نرم افزار پروژه های بزرگ به مشکل برخوردم چون.
این نرم افزار میخواد چند کاربر داشته باشه که هر کدوم یه role خاص دارند. حالا این role ها هرکدوم میتونند فقط یه فیلد های خاصی از جداول را ببینند و یا فقط دسترسی به ویرایش یه سری از جداول هستند. در مورد جداول بنده اونها را به صورت استاتیک تعریف میکردم که میدونم خیلی کار آماتور و مسخره ای بوده. دوستانی که تجربه های بزرگتری دارند میشه کمک کنند که دقیقا این روال چه شکلی انجام میشه؟
مثلا تصویر زیر را ملاحظه کنید، میخوایم فیلد های درون کارد قرمز واسه کاربران با role =1 نمایش بده و امکان ویرایش باشه ولی برای role 2 فقط نمایش بده و برای role 3 نمایش نده. یا نمودار های زیرش هم به همین صورت واسه یه گروه خاص دیده بشه فقط.

دوستان اگر بتونید منو راهنمایی کنید خیلی ممنون میشم.

aminmousavi
دوشنبه 20 مرداد 1393, 01:42 صبح
سلام مهرداد جان ، جواب ندادم تا اساتید جواب بدن ، دیدم کسی جواب نداد گفتم راه حلی که بنده استفاده میکنم رو مطرح کنم (شاید به ذهن خودت رسیده باشه یا روش های بهتری هم باشه )

ساختار دیتابیس به این شکل هست :

جداول : Users , UsersGroup , GroupPermission
جدول User : همان اطالعات جدول روتین یوزر ها + idUserGroup
جدول UserGroup : id,Name,Description
جدول GroupPermission : idGroup,Page,DenyAction

به این صورت استفاده میشه که برای هر Users سطح دسترسی رو مشخص میکنی با idUsersGroup که همان Role شما هست ، هرچندتا سطح دسترسی دارین رو در UserGroup برای یک رکورد میسازین مثل Role1,Role2,Role3 , ...
در جدول GroupPermission به ازای هر عملی که نباید آن Role انجام بده یک رکورد درج میکنین مثلا idGroup=ای دی رول 1 ، Page=Main , DenyAction=Show

بعد در برنامه اتون IF میزارید ، قسمت Action ها و Page ها هم میتونین با ساختار Enum مدیریت کنین که اشتباه تایپی باعث باگ نشه (اگر بخواهید دیتنامیک تر باشه میتونین Action ها و page ها هم در 2تا Table ذخیره کنین)

kahe.mehrdad
دوشنبه 20 مرداد 1393, 08:05 صبح
سلام مهرداد جان ، جواب ندادم تا اساتید جواب بدن ، دیدم کسی جواب نداد گفتم راه حلی که بنده استفاده میکنم رو مطرح کنم (شاید به ذهن خودت رسیده باشه یا روش های بهتری هم باشه )

ساختار دیتابیس به این شکل هست :

جداول : Users , UsersGroup , GroupPermission
جدول User : همان اطالعات جدول روتین یوزر ها + idUserGroup
جدول UserGroup : id,Name,Description
جدول GroupPermission : idGroup,Page,DenyAction

به این صورت استفاده میشه که برای هر Users سطح دسترسی رو مشخص میکنی با idUsersGroup که همان Role شما هست ، هرچندتا سطح دسترسی دارین رو در UserGroup برای یک رکورد میسازین مثل Role1,Role2,Role3 , ...
در جدول GroupPermission به ازای هر عملی که نباید آن Role انجام بده یک رکورد درج میکنین مثلا idGroup=ای دی رول 1 ، Page=Main , DenyAction=Show

بعد در برنامه اتون IF میزارید ، قسمت Action ها و Page ها هم میتونین با ساختار Enum مدیریت کنین که اشتباه تایپی باعث باگ نشه (اگر بخواهید دیتنامیک تر باشه میتونین Action ها و page ها هم در 2تا Table ذخیره کنین)

امین جان خیلی ممنون از کمکت. در مورد ساختار جداول دیتابیس دقیقا به همین صورتی که شما گفتی درسته.
راستش در مورد قسمت اخر، نمیدونم ساختار Enum چیه؟ اگر امکانش هست میشه یه توضیح مختصر بدی در موردش؟
باز هم ممنون. لطف کردی :)

aminmousavi
دوشنبه 20 مرداد 1393, 15:31 عصر
یک نوع داده ای شمارشی هست مهراد جان به شکل زیر هم تعریف میشه :



public enum Action
{
Delete,Add
}



به این دلیل شمارشی گفته میشه بهش که به مقدار ها عدد تخصیص میده یعنی Delete=0 و Add=1
برای مقایسه هم به این شکل میتونین عمل کنین :



if (Action.Add.toString()=="Add")
{
}

اوبالیت به بو
پنج شنبه 02 بهمن 1393, 10:07 صبح
سلام مهرداد جان ، جواب ندادم تا اساتید جواب بدن ، دیدم کسی جواب نداد گفتم راه حلی که بنده استفاده میکنم رو مطرح کنم (شاید به ذهن خودت رسیده باشه یا روش های بهتری هم باشه )

ساختار دیتابیس به این شکل هست :

جداول : Users , UsersGroup , GroupPermission
جدول User : همان اطالعات جدول روتین یوزر ها + idUserGroup
جدول UserGroup : id,Name,Description
جدول GroupPermission : idGroup,Page,DenyAction

به این صورت استفاده میشه که برای هر Users سطح دسترسی رو مشخص میکنی با idUsersGroup که همان Role شما هست ، هرچندتا سطح دسترسی دارین رو در UserGroup برای یک رکورد میسازین مثل Role1,Role2,Role3 , ...
در جدول GroupPermission به ازای هر عملی که نباید آن Role انجام بده یک رکورد درج میکنین مثلا idGroup=ای دی رول 1 ، Page=Main , DenyAction=Show

بعد در برنامه اتون IF میزارید ، قسمت Action ها و Page ها هم میتونین با ساختار Enum مدیریت کنین که اشتباه تایپی باعث باگ نشه (اگر بخواهید دیتنامیک تر باشه میتونین Action ها و page ها هم در 2تا Table ذخیره کنین)

سلام

راه حل جالبی ارائه کردید. ممکنه بیشتر توضیح بدید.

aminmousavi
پنج شنبه 02 بهمن 1393, 15:31 عصر
سلام .
حتما . شما بفرمایید کجاش نیاز به توضیح بیشتر داره تا خدمتون عرض کنم .

اوبالیت به بو
سه شنبه 07 بهمن 1393, 14:24 عصر
خیلی سپاسگذارم از شما.

یک درباره ارائه نوع مجوز به کاربرها توضیح بدید. گروه بندی کاربرها گروه بندی مجوزها، دسترسی به اجزا و دکمه ها و فرم ها.

اگر مایل هستید یک تایپیک آموزشی از ابتدا درست کنید.

aminmousavi
پنج شنبه 09 بهمن 1393, 15:22 عصر
متاسفانه درحال حاضر مقداری درگیر هستم فکر نمیکنم برسم با جزئیات توضیح بدهم . اما حتما براتون یک نمونه مینویسم و همینجا سورس رو قرار میدم .

اوبالیت به بو
دوشنبه 09 شهریور 1394, 13:46 عصر
به روز رسانی