HUSSIN قام بنشر أبريل 4, 2005 قام بنشر أبريل 4, 2005 السلام عليكم شكراً لك أخي أمجد على هذا الموضوع المهم جداً وعلى هذة المعلومات القيمة ... جعلها الله في موازين حسناتك
أمجد جمالي قام بنشر أبريل 4, 2005 قام بنشر أبريل 4, 2005 (معدل) السلام عليكم ورحمة الله وبركاته سبق وارفقت مثال عن كيفية وضع الصلاحيات وتجربتها في الجدول والأن ارفق مثال اخر يقوم بتوزيع الصلاحيات على المجموعات على جميع الجداول والاستعلامات في كل مرة يتم التسجيل الدخول فيها الى البرنامج طريقة عمل البرنامج: -شاشة دخول المستخدمين والغاية من هذه الفورم هو اسم المجموعة فقط -فورم اسمه 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 واذا في حدا عنده تعليق أ فكرة جديدة على طريقتي الرجاء أفيدوني شكراً يتبع SecurityProjectV0.2.zip تم تعديل أبريل 4, 2005 بواسطه أمجد جمالي
أمجد جمالي قام بنشر أبريل 4, 2005 قام بنشر أبريل 4, 2005 السلام عليكم شكراً لك أخي أمجد على هذا الموضوع المهم جداً وعلى هذة المعلومات القيمة ... جعلها الله في موازين حسناتك اهلاً وسهلاً فيك أخي الكريم
سهل احمد العريشي قام بنشر أبريل 6, 2005 قام بنشر أبريل 6, 2005 بسم الله الرحمن الرحيم هلا بيك وبطلتك الحلوه مشتاقين والله وين ها الغيبه بس صراحة رجوعك قوي جدا الله يبارك فيك حبيبي ومن القلب للقلب أحييك أخيك سهل أحمد ( ابو نعيم )
أمجد جمالي قام بنشر أبريل 20, 2005 قام بنشر أبريل 20, 2005 السلام عليكم ورحمة الله وبركاته في المثال المرفق طريقة لإضافة القوائم للمجموعات والتحكم بها 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 هذا هو المثال للتجريب تحياتي SecurityProjectV0.3.zip
rudwan قام بنشر أبريل 21, 2005 قام بنشر أبريل 21, 2005 طريقه حلوه أخي أمجد , و دائما تقدم الجديد و المفيد . و ان كان لي ملاحظات : أولا : على طريقة القائمه , و هي أنه طالما أن القوائم يتم انشاؤها بالكود , اذا ممكن عمل جملة اختيار , و ذلك لاختبار صلاحيات المجموعه , و عليه يتم تفعيل كود انشاء القوائم المسموح بها لكل مجموعه فقط . ثانيا: بالنسبه لحماية الجداول , لو تم عمل استعلام لجدول الرواتب واضفته الى شريط القوائم يمكن لي مستخدم التعديل و الحذف على جدو ل الرواتب من خلال هذا الاستعلام , و ذلك طالما أن هذا الاستعلام لم يدخل أصلا ضمن جدول الصلاحيات ( في النسخه الثانيه لبرنامجك ) . حيث أن أغلب النماذج لايعتمد على الجداول فقط , و انما على الاستعلامات أيضا . ثالثا : يبقى موضوع حماية عناصر القاعده نفسها من الاستيراد , و كذلك حذف المجلد من الحذف من القرص الصلب ,
أمجد جمالي قام بنشر أبريل 23, 2005 قام بنشر أبريل 23, 2005 (معدل) ابو الروض اشكر تعليقك الجميل الي لفت انتباهي لأشياء ماكنت حسابلها حساب بالنسبة لملاحظتك الأولى أولا : على طريقة القائمه , و هي أنه طالما أن القوائم يتم انشاؤها بالكود , اذا ممكن عمل جملة اختيار , و ذلك لاختبار صلاحيات المجموعه , و عليه يتم تفعيل كود انشاء القوائم المسموح بها لكل مجموعه فقط . لو لاحظت بأن القوائم تنشاء عن طريق الدالة AddMenu ويجب تمرير لهذه الدالة 3 متغيرات وهي اسم القائمة اسم الماكرو الذي يحتوي على القوائم التي ارغب في إضافتها وعنوان شريط الحالة وحسب ماجاء على لسان مايكروسوفت بأنه الطريقة الوحيدة للإظافة القوائم هي بأن يتم تحديدها فقط في الماكرو اذا الكود يقوم بإضافة جميع القوائم ومن ثم اقوم بتحديد إما بفتح هذه القائمة أو إغلاقها عن المستخدم بالنسبة للملاحظة الثانية ثانيا: بالنسبه لحماية الجداول , لو تم عمل استعلام لجدول الرواتب واضفته الى شريط القوائميمكن لي مستخدم التعديل و الحذف على جدو ل الرواتب من خلال هذا الاستعلام , و ذلك طالما أن هذا الاستعلام لم يدخل أصلا ضمن جدول الصلاحيات ( في النسخه الثانيه لبرنامجك ) . بالفعل انا حطيت مثال عن استعلام واحد وهو QyrCities بعدين أي استعلام جديد تقوم بإنشاءه فقط قم بإضافة أسم هذا الاستعلام في الجدول TblSetPermission وللتذكير: مهمة هذه الجدول تخزين فيه أسماء الجداول والاستعلامات التي ترغب في حمايتها بالنسبة للملاحظة الثالثة ثالثا : يبقى موضوع حماية عناصر القاعده نفسها من الاستيراد , و كذلك حذف المجلد من الحذف من القرص الصلب , لا اعلم بالضبط ماذا تقصد بكلمة استيراد هل تعني Link او نسخ من قاعدة بيانات الى اخرى اذا كان هذا قصدك فأنت لفت إنتباهي لشي جديد رح كرس وقتي كلو عليه ان شاء الله شكراً تم تعديل أبريل 23, 2005 بواسطه أمجد جمالي
أمجد جمالي قام بنشر أبريل 23, 2005 قام بنشر أبريل 23, 2005 (معدل) أما بالنسبة لموضوع حماية قاعدة البيانات من الحذف بالصدفة قبل يومين قامت الاخت الحائرة بطرح موضوع وهو كيفية منع المستخدمين من حذف قاعدة بيانات في بئية شبكة وقمت بالرد عليها واليك الوصلة والطريقة هي انا الحمدلله مطبقا عندي وشغال عليها ومرتاح تم تعديل أبريل 23, 2005 بواسطه أمجد جمالي
rudwan قام بنشر أبريل 24, 2005 قام بنشر أبريل 24, 2005 (معدل) أولا بالنسبه لكود القوائم يبدو أنني لم اشرح وجهة نظري بشكل واضح اقصد كل قائمه لها ماكرو مستقل , و هذا الماكرو يتم استدعاؤه بالكود الآن عند اختبار الصلاحيات يتم تشغيل الماكروات الخاصه بكل مجموعه فقط مثال : مجموعة الاداره , يتم تشغيل جميع أكواد القوائم مجموعة مدخلي البيانات , يتم فقط تشغيل كود ماكرو قائمة جدول الرواتب مثلا و استعلام المدن , و بالتالي يفتح البرنامج على قائمتين فقط مثلا ممكن استخدام هذا الكود : 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)); و للاشاره سيتم تثبيت برنامج الأستاذ رضا عقيل للاستفاده العامه ثالثا : نعم اقصد الحماية من نسخ من قاعدة بيانات الى أخرى و الله يقويك على هذا الموضوع المهم و المفيد تحياتي تم تعديل أبريل 24, 2005 بواسطه rudwan
أبو هادي قام بنشر مايو 11, 2005 قام بنشر مايو 11, 2005 السلام عليكم الأخ أمجد جمالي .. هل الموضوع انتهى أو لا يزال هناك تكملة ؟ وإذا انتهى هل تمت تجربته ؟ وإذا تمت تجربته هل تمت مقارنته مع حلول أخرى مثل فكرة ابن مسقط وأبو عقيل ؟ تحياتي .
أمجد جمالي قام بنشر مايو 16, 2005 قام بنشر مايو 16, 2005 السلام عليكم ورحمة الله وبركاته الاستاذ ابو هادي بارك الله فيك الموضوع لم ينتهي ولايزال قائم وارجو عدم اغلاقه او نقله الى ملف الارشيف اما بخصوص موضوع التجربة بالنسبة لي النتيجة مضمونة 100 بالمية حتى الان بإذن الله ومازلت بإنتظار احد الزملاء لكي يقوم بكشف اي اخطاء حتى يتسنى لي تعديلها وبإمكانك التأكد من ذلك من خلال مراجعة الموضوع من البداية وتجربته بالنسبة لمثال ابن مسقط لا اخفي عليك لم اقم بتجربته أو البحث عنه لعدم توفر الوقت لذلك اما مثال اخونا ابو عقيل مثال جيد لكن فكرته مختلفة انا الي اهتميت فيه وهو حماية البيانات من التعديل والحذف تحياتي لك
الردود الموصى بها
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.