اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الردود الموصى بها

قام بنشر

السلام عليكم

شكراً لك أخي أمجد على هذا الموضوع المهم جداً وعلى هذة المعلومات القيمة ... جعلها الله في موازين حسناتك

قام بنشر (معدل)

السلام عليكم ورحمة الله وبركاته

سبق وارفقت مثال عن كيفية وضع الصلاحيات وتجربتها في الجدول

والأن ارفق مثال اخر يقوم بتوزيع الصلاحيات على المجموعات على جميع الجداول والاستعلامات في كل مرة يتم التسجيل الدخول فيها الى البرنامج

طريقة عمل البرنامج:

-شاشة دخول المستخدمين والغاية من هذه الفورم هو اسم المجموعة فقط

-فورم اسمه FrmMainMenu مهمته التحقق من أسم المجموعة وتشغيل ال Function الخاص بها

-يوجد جدول اسمه TblSetPermission يحتوي على اسماء الجداول والاستعلامات المراد توزيع الصلاحيات عليها

-يوجد ايضاً modules اسمه SetPermission فيه الكود الخاص بإضافة وإزالة الصلاحيات (تم شرحه مسبقاً)

-ويوجد ايضاً Functions وهي

'يقوم بإزالة جميع الصلاحيات من على الجداول والاستعلامات
'TblSetPermission الموجودة في الجدول 
Ap_CodePermissionNoAccess
'----------------------------------------------------------------------------
'يقوم بإضافة جميع الصلاحيات من على الجداول والاستعلامات
'TblSetPermission الموجودة في الجدول
Ap_SetPermissionFullAccess
'----------------------------------------------------------------------------
'يقوم بإضافة الصلاحيات من على اجلداول والاستعلامات
'TblSetPermission الموجودة في الجدول
'Data Entrey لمجموعة عمل
كما تم التخطيط له مسبقاً في خريطة الأذونات أنظر الى الصور في المشاركات السابقة'
Ap_CodePermissionDataEntrey
'----------------------------------------------------------------------------
'يقوم بإضافة الصلاحيات من على الجداول والاستعلامات
'TblSetPermission الموجودة في الجدول
'Accounting User لمجموعة عمل
كما تم التخطيط له مسبقاً في خريطة الأذونات أنظر الى الصور في المشاركات السابقة'
Ap_CodePermissionAccountingUser
'----------------------------------------------------------------------------
'يقوم بإضافة الصلاحيات من على الجداول والاستعلاامت
'TblSetPermission الموجودة في الجدول
'Supervisor User لمجموعة عمل
كما تم التخطيط له مسبقاً في خريطة الأذونات أنظر الى الصور في المشاركات السابقة'
Ap_CodePermissionSupervisorUser
'----------------------------------------------------------------------------
'يقوم بإضافة الصلاحيات من على الجداول والاستعلامات
'TblSetPermission الموجودة في الجدول
'Programming User لمجموعة عمل
كما تم التخطيط له مسبقاً في خريطة الأذونات أنظر الى الصور في المشاركات السابقة'
Ap_CodePermissionProgrammingUser
وجميعها بلغة ال Ado لمحة سريعة عن عمل هذه Function: -تقوم بفتح الجدول TblSetPermission للقرائة فقط -تقوم بعد السجلات الموجودة في هذه الجدول (يفيد في عرض حالة توزيع الأذونات على ال Status Bar ويلاحظ عندما يكون عدد الجدوال والاستعلامات المراد توزيع عليها الأذونات كبير) -يمر على السجلات(أسماء الجداول) في الجدول TblSetPermission واحد تلو الأخر ويقوم بتوزيع الصلاحيات عليها -يزيل الحالة من على Status Bar -ويغلق الجدول TblSetPermission ملاحظات هامة: 1-أقوم بإستخدام الدالة Ap_CodePermissionNoAccess قبل توزيع اي صلاحيات لأي مجموعة تمهيداً لإضافة الأذونات التي ارغب بها وللتأكد مائة با المائة من أن هذا الجدول لا يحتوي على اي صلاحية مثل يعني Refresh 2-في جميع الدالات أقوم بتوزيع الصلاحيات وأعيد تكرارها على هذه المجموعات ِAdmins (مجموعة عمل) Users (مجموعة عمل) Admin (المستخدم الإفتراضي) Current User (المستخدم الحالي) وبالحالة هي بكون ضمنت 90% أنه شغلي صح 3-المستخدمين والمجموعات (كا أمثلة للتجريب)
'UserName            'Group                 'Password
'Abu Hadi            'Supervisor User       'Admin
'Abu Suliman         'Accounting User       'Admin
'Amjad Jamali        'Accounting User       'Admin
'Khuder AlRajbe      'Supervisor User       'Admin
'Mohammed Ali        'DataEntry User        'Admin
'Mohammed Taher      'Programmer User       'Admin
'Radhwan             'DataEntry User        'Admin
'Sahel Alareshi      'Programmer User       'Admin

واذا في حدا عنده تعليق أ فكرة جديدة على طريقتي الرجاء أفيدوني

شكراً :fff:

يتبع

SecurityProjectV0.2.zip

تم تعديل بواسطه أمجد جمالي
قام بنشر
السلام عليكم

شكراً لك أخي أمجد على هذا الموضوع المهم جداً وعلى هذة المعلومات القيمة ... جعلها الله في موازين حسناتك

اهلاً وسهلاً فيك أخي الكريم

قام بنشر

بسم الله الرحمن الرحيم

هلا بيك وبطلتك الحلوه مشتاقين والله وين ها الغيبه بس صراحة رجوعك قوي جدا الله يبارك فيك حبيبي ومن القلب للقلب أحييك

أخيك سهل أحمد ( ابو نعيم )

  • 2 weeks later...
قام بنشر

السلام عليكم ورحمة الله وبركاته

في المثال المرفق طريقة لإضافة القوائم للمجموعات والتحكم بها Enable Or Desableمن خلال جدول تم إعداده مسبقاً وليس من خلال الكود

طريقة العمل :

عند تسجيل دخول مستخدم ما تقوم الدالة التالية بقراءة صلاحيات المجموعة التي ينتمي اليها هذه المستخدم من الجدول TblAddMenuPrivilege قمت بتصميمه لتخزين الصلاحيات والتحكم بها من خلال هذه الجدول وليس من خلال الكود ومن ثم يتم توزيع الصلاحيات وهو على شكل اضافة قوائم للوصول الى النماذج او التقارير مهما يكن

تحتاج تمرير 3 متغيرات لهذه الدالة وهي

أسم الجدول الذي سوف يتم قرائة منه الصلاحيات

اسم المجموعة

أسم الصلاحية (FieldName)

نوع البيانات التي سوف تعود بها الدالة هي إما True Or False

Public Function Ap_GetUserPrivilegeTrFa(StrTblName, StrGroupName, StrPrivilegeName As String) As Boolean

On Error GoTo Err_Ap_GetUserPrivilegeTrFa

'--Read Data Only--'
Dim RstCheckUserPrivilege As New ADODB.Recordset
RstCheckUserPrivilege.Open StrTblName, CurrentProject.Connection, adOpenStatic
RstCheckUserPrivilege.MoveFirst
RstCheckUserPrivilege.Find "GroupName Like '" & StrGroupName & "'"
Ap_GetUserPrivilegeTrFa = RstCheckUserPrivilege(StrPrivilegeName)
RstCheckUserPrivilege.Close

Exit_Ap_GetUserPrivilegeTrFa:
    Exit Function
    
Err_Ap_GetUserPrivilegeTrFa:

        DisplayMessageCritical "Found System Error:-" & vbCrLf & "" & vbCrLf & "Error Description: " & _
        Err.Description & "" & vbCrLf & "" & vbCrLf & "Error Number: " & Err.Number & "" & vbCrLf & "" & _
        vbCrLf & "Contact your system Administrator: " & Ap_GetDataBaseProperties("TblDatabaseProperties", "SystemAdministrator") & _
        "" & vbCrLf & "" & vbCrLf & "Full technical support information is available on our E-Mail:-" & _
        vbCrLf & "" & Ap_GetDataBaseProperties("TblDatabaseProperties", "SupportEmail") & "" & vbCrLf & _
        "" & vbCrLf & "Please don't hesitate to contact us.", "Error Message"
    
    Resume Exit_Ap_GetUserPrivilegeTrFa

End Function

هذا هو المثال للتجريب

تحياتي :fff:

SecurityProjectV0.3.zip

قام بنشر

طريقه حلوه أخي أمجد , و دائما تقدم الجديد و المفيد . و ان كان لي ملاحظات :

أولا : على طريقة القائمه , و هي أنه طالما أن القوائم يتم انشاؤها بالكود , اذا ممكن

عمل جملة اختيار , و ذلك لاختبار صلاحيات المجموعه , و عليه يتم تفعيل كود انشاء القوائم المسموح بها لكل مجموعه فقط .

ثانيا: بالنسبه لحماية الجداول , لو تم عمل استعلام لجدول الرواتب واضفته الى شريط القوائم

يمكن لي مستخدم التعديل و الحذف على جدو ل الرواتب من خلال هذا الاستعلام , و ذلك طالما

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

حيث أن أغلب النماذج لايعتمد على الجداول فقط , و انما على الاستعلامات أيضا .

ثالثا : يبقى موضوع حماية عناصر القاعده نفسها من الاستيراد , و كذلك حذف المجلد من الحذف من القرص الصلب ,

قام بنشر (معدل)

ابو الروض اشكر تعليقك الجميل الي لفت انتباهي لأشياء ماكنت حسابلها حساب

بالنسبة لملاحظتك الأولى

أولا : على طريقة القائمه , و هي أنه طالما أن القوائم يتم انشاؤها بالكود , اذا ممكن

عمل جملة اختيار , و ذلك لاختبار صلاحيات المجموعه , و عليه يتم تفعيل كود انشاء القوائم المسموح بها لكل مجموعه فقط .

لو لاحظت بأن القوائم تنشاء عن طريق الدالة AddMenu

ويجب تمرير لهذه الدالة 3 متغيرات وهي

اسم القائمة

اسم الماكرو الذي يحتوي على القوائم التي ارغب في إضافتها

وعنوان شريط الحالة

وحسب ماجاء على لسان مايكروسوفت بأنه الطريقة الوحيدة للإظافة القوائم هي بأن يتم تحديدها فقط في الماكرو

اذا الكود يقوم بإضافة جميع القوائم ومن ثم اقوم بتحديد إما بفتح هذه القائمة أو إغلاقها عن المستخدم

بالنسبة للملاحظة الثانية

ثانيا: بالنسبه لحماية الجداول , لو تم عمل استعلام لجدول الرواتب واضفته الى شريط القوائم

يمكن لي مستخدم التعديل و الحذف على جدو ل الرواتب من خلال هذا الاستعلام , و ذلك طالما

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

بالفعل انا حطيت مثال عن استعلام واحد وهو QyrCities بعدين أي استعلام جديد تقوم بإنشاءه فقط قم بإضافة أسم هذا الاستعلام في الجدول TblSetPermission

وللتذكير: مهمة هذه الجدول تخزين فيه أسماء الجداول والاستعلامات التي ترغب في حمايتها

بالنسبة للملاحظة الثالثة

ثالثا : يبقى موضوع حماية عناصر القاعده نفسها من الاستيراد , و كذلك حذف المجلد من الحذف من القرص الصلب ,

لا اعلم بالضبط ماذا تقصد بكلمة استيراد هل تعني Link

او نسخ من قاعدة بيانات الى اخرى

اذا كان هذا قصدك فأنت لفت إنتباهي لشي جديد رح كرس وقتي كلو عليه ان شاء الله

شكراً :fff:

تم تعديل بواسطه أمجد جمالي
قام بنشر (معدل)

أما بالنسبة لموضوع حماية قاعدة البيانات من الحذف

بالصدفة قبل يومين قامت الاخت الحائرة بطرح موضوع وهو كيفية منع المستخدمين من حذف قاعدة بيانات في بئية شبكة وقمت بالرد عليها واليك الوصلة

والطريقة هي انا الحمدلله مطبقا عندي وشغال عليها ومرتاح

تم تعديل بواسطه أمجد جمالي
قام بنشر (معدل)

أولا بالنسبه لكود القوائم يبدو أنني لم اشرح وجهة نظري بشكل واضح

اقصد كل قائمه لها ماكرو مستقل , و هذا الماكرو يتم استدعاؤه بالكود

الآن عند اختبار الصلاحيات يتم تشغيل الماكروات الخاصه بكل مجموعه فقط

مثال :

مجموعة الاداره , يتم تشغيل جميع أكواد القوائم

مجموعة مدخلي البيانات , يتم فقط تشغيل كود ماكرو قائمة جدول الرواتب مثلا و استعلام المدن , و بالتالي يفتح البرنامج على قائمتين فقط

مثلا ممكن استخدام هذا الكود :

Private Sub Form_Load()

    Select Case ConGroupName
      Case "Data Entry"
        Ap_CodePermissionNoAccess
        Ap_CodePermissionDataEntrey
         DoCmd.AddMenu "&Test Tables", "MacOpenTbls", ""
      Case "Accounting User"
        Ap_CodePermissionNoAccess
        Ap_CodePermissionAccountingUser
         DoCmd.AddMenu "&Test Queries", "MacOpenQyrs", ""
      Case "Supervisor User"
        Ap_CodePermissionNoAccess
        Ap_CodePermissionSupervisorUser

    DoCmd.AddMenu "&Test Tables", "MacOpenTbls", ""
    DoCmd.AddMenu "&Test Queries", "MacOpenQyrs", ""

      Case "Programmer User"
        Ap_CodePermissionNoAccess
        Ap_CodePermissionProgrammingUser
    End Select
  DoCmd.AddMenu "&Log Off", "MacLogoff", ""

End Sub
ثانيا بالنسبه لحماية الجداول من خلال الاستعلام , اذا كان لابد من اضافة ااسماء الجداول و الاستعلامات الى جدول الجداول , هنا أعتقد لو كان عندنا خمسين جدول و مئة استعلام الأمر صعب , ممكن هنا استخدام الاستعلام التالي منقول عن الأستاذ رضا عقيل و هو يبين اسماء الجداول و الاستعلامات الموجوده في الملف
SELECT DISTINCT MSysObjects.Name, IIf([type]=1 Or [type]=6,"Table","Query") AS ObjectType, Left$([Name],1) AS Expr1, Left$([Name],4) AS Expr2, MSysObjects.Type, MSysObjects.Flags, MSysObjects.Connect, MSysObjects.Database, MSysObjects.DateCreate, MSysObjects.DateUpdate, MSysObjects.ForeignName
FROM MSysObjects WHERE (((Left$([Name],1)) Not Like "~" And (Left$([Name],1)) Not Like "{") AND ((Left$([Name],4)) Not Like "MSys") AND ((MSysObjects.Type)>-32000));

و للاشاره سيتم تثبيت برنامج الأستاذ رضا عقيل للاستفاده العامه

ثالثا :

نعم اقصد الحماية من نسخ من قاعدة بيانات الى أخرى

و الله يقويك على هذا الموضوع المهم و المفيد

تحياتي

تم تعديل بواسطه rudwan
  • 3 weeks later...
قام بنشر

السلام عليكم

الأخ أمجد جمالي .. هل الموضوع انتهى أو لا يزال هناك تكملة ؟

وإذا انتهى هل تمت تجربته ؟

وإذا تمت تجربته هل تمت مقارنته مع حلول أخرى مثل فكرة ابن مسقط وأبو عقيل ؟

تحياتي .

قام بنشر

السلام عليكم ورحمة الله وبركاته

الاستاذ ابو هادي بارك الله فيك

الموضوع لم ينتهي ولايزال قائم وارجو عدم اغلاقه او نقله الى ملف الارشيف

اما بخصوص موضوع التجربة بالنسبة لي النتيجة مضمونة 100 بالمية حتى الان بإذن الله ومازلت بإنتظار احد الزملاء لكي يقوم بكشف اي اخطاء حتى يتسنى لي تعديلها

وبإمكانك التأكد من ذلك من خلال مراجعة الموضوع من البداية وتجربته

بالنسبة لمثال ابن مسقط لا اخفي عليك لم اقم بتجربته أو البحث عنه لعدم توفر الوقت لذلك

اما مثال اخونا ابو عقيل مثال جيد لكن فكرته مختلفة

انا الي اهتميت فيه وهو حماية البيانات من التعديل والحذف

تحياتي لك

:fff:

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information