تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
أداة للتحكم في مرور المستخدمين بالاضافة لصلاحياتهم
#1
كاتب الموضوع : احمد محمد الشحات

اليك تصوري عن أداة للتحكم في مرور المستخدمين (بالاضافة لصلاحياتهم):
في بداية تشغيل البرنامج تقوم الأداة بطلب كلمة مرور و اسم المستخدم و على اساس هوية المستخدم سيكون له مختلف الصلاحيات للتعامل مع البرنامج.
الأداة تستخدم الادوار و الامتيازات لمعرفة مدى صلاحيات المستخدم.
على سبيل المثال: برنامج لإدارة الموظفين و حساب الاجازات:
أمثلة على الامتيازات: صلاحية اضافة موظف جديد CanAddEmployee و صلاحية تعديل موظف حالي CanEditEmployee و صلاحية عمل إجازة دورية CanAddPeriodicVacancy و هكذا.
أمثلة على الأدوار: Manager و يملك جميع صلاحيات البرنامج و Clerk و يملك صلاحيات اضافة موظفين فقط و Administrator و يملك صلاحيات عمل ادوار و تخصيص مستخدمين لكل دور..

كل مستخدم سيكون له دور واحد فقط (لا أفضل أكثر من دور لأنها غير عملية و ستزيد من صعوبة البرنامج) و كل دور يملك عدد من الامتيازات.

أما عن تخزين معلومات الأداة فتتم في قاعدة البيانات الأصلية للبرنامج و بالتالي انشاء الجداول ستكون مسئولية المبرمج (و من الممكن توفير سكربتات لانشاء الجداول في مختلف قواعد البيانات مثل الاوراكل و السيكول سيرفر و غيرها). هذه الفكرة ايضاً في صالح الأداة لانه يمكن استخدام جداول اسماء و كلمات سر موجودة بالفعل في قواعد بيانات موجودة.

الجداول هي:
1. Users
و تحتوي على الحقول التالية : UserName و UserPassword و Rule
2. Privileges
و تحتوي على الحقول التالية: Privilege فقط
3. Rules
و تحتوي على الحقول التالية: Rule و Privilege.

العلاقة بين جدول Users و Rules هي one2many (يعني كل مستخدم له دور واحد و كل دور له عدة مستخدمين)
العلاقة بين Privileges و Rules هي many2many (يعني كل دور له عدة صلاحيات و كل صلاحية قد تظهر في عدة ادوار) و طبعاً, لتمثيل هذه العلاقة سنحتاج لجدول اضافي و لكني لم اذكره لان ليس له دور في هذه المرحلة من تحليل النظام.

تعريف الامتيازات مسئولية المبرمج فقط و لا دخل فيها لمستخدمي البرنامج.
مثال: قبل تنفيذ كود اضافة موظف يجب أن يضع المبرمج شرط ليتأكد ان المستخدم الحالي له صلاحية اضافة موظف.
بينما عملية تعريف الأدوار و تخصيص الصلاحيات في ادوار فهي من مسئولية المبرمج و فئة خاصة من المستخدمين ذوي الصلاحيات المناسبة.
على سبيل المثال, بعد تنصيب البرنامج قد يرغب مدير النظام في اضافة امتياز التعديل على موظف للمستخدمين في دور Clerk rule.

أما تعريف المستخدمين ستتم بعد تشغيل البرنامج و تترك لمدير النظام و لا دخل فيها للمبرمج (باستثناء تعريف المستخدم الرئيسي : مدير النظام)

الأداة نفسها تضاف للبرنامج لكي تقدم مجموعة من الوظائف:
1. عرض نموذج طلب اسم المستخدم و كلمة السر.
2. عرض نموذج تمكّن مدير النظام فقط من إدارة المستخدمين الأخرين و القيام بالوظائف التالية:
1. إضافة مستخدمين جدد للنظام أو حذفهم
2. تغيير دور مستخدم لدور آخر
3. عرض نموذج لادارة الأدوار:
1. اضافة و تعديل و مسح الادوار.
2. تخصيص مختلف الصلاحيات لمختلف الادوار.

أما من الكود فهناك عدة طرق سيستخدمها المبرمج للتعرف على مدى صلاحيات المستخدم الحالي:
* طريقة RequestAuthorization و هي التي تعرض فورم الlogin و تعيد للمبرمج اسم المستخدم الحالي و دوره.
* طريقة ConfirmPassword و تعرض فورم يحتوي على طلب كلمة سر المستخدم الحالي قبل القيام بعملية خطرة مباشرةً.
* كائن User: و هو كائن يحتوي على كل التفاصيل عن المستخدم الحالي مثل دوره و كلمة سره و غيره.
* طريقة Can و هذه الطريقة تأخذ اسم امتياز كوسيطة و تعيد True اذا كانت من صلاحيات المستخدم الحالي اوFalse. مثلا: Can("AddEmployee") و هكذا. كما قلت من قبل, مسئولية المبرمج هي استدعاء هذه الطريقة في المكان المناسب في الكود للسماح له باضافة موظف.
* طريقة ChangePassword: و تعرض فورم لتغيير كلمة سر المستخدم الحالي

جزء آخر يمكن اضافته للمشروع و هو اذا لم يستخدم الجهاز لفترة زمنية معينة (و لتكن 10 ق) أو أراد المستخدم إخفاء البرنامج مؤقتاً.
في هذه الحالتين, سيتم إخفاء البرنامج و وضع ايقونة في صينية النظام مع بالونة نص (مثل تلك المستخدمة في ويندوز xp). و عند الضغط المزدوج على هذه الايقونة سيتم عرض نموذج طلب كلمة السر الحالية.
منقول عن منتدى الفريق العربى للبرمجة
}}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [مقال] إضافة خاصية التحجيم التلقائي - AutoSize - إلى أداة مربع النص - TextBox sooriaty03 9 2,894 11-02-16, 10:47 PM
آخر رد: العواد الصغير
  موضوع الاستاذ رامي مثال \ لطريقة تفعيل برنامجك عند العميل وتغيير كلمة مرور اRamilove سعود 7 2,041 26-01-16, 08:07 PM
آخر رد: سعود
Wink [مقال] الحل النهائي لمشاكل برنامج للتحكم بمنافذ parallel port او lpt mohgam3395 0 782 29-04-14, 11:32 PM
آخر رد: mohgam3395
  معلومة ::: FileSystemWatcher أداة هامة جداً RaggiTech 2 557 06-10-12, 10:04 PM
آخر رد: RaggiTech
  مثال على Custom Serialization من خلال فئة اسم مستخدم وكلمة مرور RaggiTech 0 733 05-10-12, 01:42 AM
آخر رد: RaggiTech
  تفعيل خاصية RequireAdministrator لبرنامجك للتحكم بملفات الويندوز بسهولة في ويندوز 7 RaggiTech 0 376 03-10-12, 10:47 AM
آخر رد: RaggiTech
  أداة AciveBarcode RaggiTech 0 375 01-10-12, 10:38 PM
آخر رد: RaggiTech
  أداة - تقويم شهري للتاريخ الهجري وأم القرى- هدية متواضعة ومتأخرة بمناسة عيد الفطر RaggiTech 0 607 01-10-12, 10:33 PM
آخر رد: RaggiTech

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم