الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

سؤال بكيفية التحكم بالمستخدمين

Featured Replies

بتاريخ:

السلام عليكم

لدي مشروع تقريباً انتهيت منه، لكن واجهتني مشكلة في الشاشة الأولى ألا وهي شاشة الدخول LOGON

بدايتاً سوف أحاول أن أقوم بتقريب الفكرة وبعدها سوف أطرح السؤال..

أولاً قمت بإنشاء جدول بإسم Users وبها ثلاثة أعمدة وهي:

  • No (رقم الموظف)
    Name (اسم الموظف)
    Password (كلمة السر)

ثم قمت بإنشاء شاشة يدوية غير مرتبطة بقاعدة البيانات Control Block وليست Basic
وفيها أضفت Text Item وذلك لكي أقوم بوضع رقم الموظف فيها، وأضفت تريجر إذا كان الرقم موجود يقوم بعرض الإسم حقه في حقل Display Item وينتقل المؤشر على حقل آخر Text Item وفيها أقوم بوضع كلمة السر، أيضاً بها تريجر إذا تساوت مع البيانات في الجدول يقوم بالدخول على شاشة أخرى وهكذا

السؤال:
الآن في الجدول Users يوجد Tow User فقط، وأريد أن أجعل الأول به كل الصلاحيات من حيث الإدخال والتعديل والحذف، أما الآخر فأريده أن يستعلم فقط.

أرجوا أن تكون الفكرة وصلت..
ملاحظة: بالنسبة للشاشة الأولى Logon متصلة بقاعدة بيانات للمستخدم Scott، وأنا أريده بعد أن ينتقل إلى الشاشة التالية أن يقطع الإتصال ويدخل بإسمه، فهل من طريقة لفعل ذلك...

بتاريخ:

اولا Ismael
للدخول الى الداتا بيز باى Username and password
هذا هو الكود

LOGON('Username','password@host name');

ثانيا السؤال المرتبط بالصلاحيات

لو انت ماعندكش غير اثنين مستخدمين
هاتعمل If statment فى التريجر When new form instance

declare
intNo number(1);
begin select No
into intNo from users ;
-- تحدد المستخمين
if intno = 1 then
-- هنا منطقة الصلاحيات
-- يعنى ممكن تجعل الازرر الخاصة بالاضافة و التعديل Visible = false او Enabeld = false
else
-- للمستخدم الاخر اى صلاحيات اخرى
end if ;
end;


لو فية اى استفسار اخر احنا موجودين :rolleyes:
شكراً

تم تعديل بواسطة John

بتاريخ:

تعليق واستفسار

اقول اولا واخيراً لكي تتصل بسرفر أوراكل ثم الداتابيز نفسها لابد من
username/password
ويكون له صلاحيات معينه
فلو انا صنعت طريقه للدخول علي الفورم واكرر الدخول علي الفورم فقط وليس التغير في المستخدم الاساسي المتصل بالسرفر فيظل الصلاحيات هي هي

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

بتاريخ:

وعليكم السلام
بالنسبة للتحكم في الصلاحيات على مستوى الفورم , تحتاج الى الجداول التالية

جدول المستخدمين

user_no 
user_name
user_pass



جدول النماذج

module_no
module_name



جدول ربط المستخدمين مع الشاشات (جدول الصلاحيات)

user_no
module_no
is_view
is_insert
is_delete
is_update


الجدول الاخير هو الجدول المهم والذي يتم فيه تحديد صلاحيات كل مستخدم مع شاشة معينه (هل لدية صلاحية للعرض او الحذف او للتعديل او للادخال)
القيم التي سوف تكون في حقول تحديد الصلاحية هي قيم رقمية (0 او 1)

ملاحظة:
هذه الطريقة سوف تمكننا من وضع صلاحية للمستخدم على مستوى الفورم ككل ,
في بعض الاحيان تحتاج الى ان تكون الصلاحية على مستوى الblock او ال item (اي ان يكون المستخدم الفلاني لدية صلاحية للتعديل في كل الـblocks الموجوده في شاشة معينه ما عدا block معين )
وبالمثل يمكن ان توضع الصلاحية على مستوى الitem (اي ان يكون المستخدم لدية الصلاحية للتعديل او الاضافة في كل الitems ما عدى item معين)
لعمل هذ نحتاج الى اضافة جدولين اخرين
الاول جدول للـblocks ويكون details لجدول الmoduels
والثاني جدول للـitems ويكون details لجدول الـblocks
والان يعدل جدول الصلاحيات بحث يتم اضافة حقلين جديدن هما
block_no
item_no
وبذلك نستطيع ان نحدد صلاحيات بصورة ادق

بتاريخ:

مشكور خالد :)

بتاريخ:

جزاكم الله خير جميعاً ... كلام جميل جداً ...



أخوكم الصغير عادل

بتاريخ:

شـــــــــــــــــــكـــــــــــــــــــــــــ :D ــــرااااااااااااااااا جــــــــــــــــــــــــــــــــــــــــ :) ــــــــــــــــــون
عـــلـــــى الـــــكــــود :D

بتاريخ:

موضوع جميل ... و لكن الأجمل هو تفاعل الأعضاء للوصول للطريقة المثلى. :)

أخوكم :

سامر حداد

بتاريخ:

السلام عليكم

من خلال ما ذكر سابقا هناك اتجاه للاعتماد علي جداول تحتوي علي بيانات للتحكم في دخول الي الفورم وفي التعامل معها ايضا
أولاً :اقول وما المانع ان اعتمد علي هذه الجداول للدخول علي الفورمه نفسها فقط
واتحكم انا في المنطق البرمجي الذي تحتويه الفورمه بمعني
هذه الفورمه لاتحتوي علي اي عبارة لإجراء حذف وبالتالي لايمكن الحذف باستخدام هذه الفورمه
وهكذا بالنسبة للتعديل والإضافة والاختيار
مع العلم بان المستخدم لهذه الفورمه لايستطيع الدخول علي اي فورمه اخري
لان دخوله علي هذه الفورمه مبني في الاساس علي منطق البرمجة في هذه الفورمه فقط فقط

وعند العمل بالمنطق هذا انا في غني عن جداول للصلاحيات

شكراً

بتاريخ:

انا من رائيي ان نقوم بعمل يوزر بواسطه الاوراكل اضمن واسهل وأمن من عمل جدول للمستخدمين


تحياتي

بتاريخ:

اهلا بكم وبكل اقتراحاتكم
بالنسبة لاقتراح الاخ amr20
ممكن ان يكون كذلك اذا كانت الصلاحيات للمستخدمين هو الدخول للفورم او عدم الدخول فقط , ولكن في بعض الاحيان تحتاج الى ان تعمل صلاحيات لمستخدم معين بحيث يكون لديه صلاحية للدخول في الفورم واستعراض البيانات ولكن لا توجد لديه صلاحية للتعديل , وكذلك وبنفس المنطق تريد هذا المستخدم ان تكون لديه صلاحية التعديل والحذف والعرض بالنسبة لفورم اخر , او ان تكون لديه صلاحية للدخول في فورم معين بحيث يستطيع ان يستعرض البيانات وايضاً يستطيع ان يضيف ولكن ليس لديه صلاحية التعديل .... وهكذا . فلذلك تحتاج ان تعمل الجداول وان تحدد بها صلاحيات المستخدمين مع الشاشات .ضف الى ذلك انه في بعض الاحيان تحتاج الى ان تحدد صلاحيات على مستوى الـblock اي ان يكون المستخدم الفلاني لديه صلاحية في الشاشة الفلانية ولكن ليس كل الـblocks الموجوده في الشاشه اي ان يكون لديه صلاحية التعديل والحذف في الـblock المعين دوه الاخر , وهنا نحتاج الى جداول اضافية كما هو موضح في الكلام السابق .

اما بالنسبة لاقتراح الاخ شبيــــه الريح
كلامك صحيح مئة بالمئة لان عمل السكيرتي على الداتابيس هو اضمن وافضل , ولكن اتوقع ان عمل الصلاحيات من قاعدة البيانات لك مستخدم معين سوف يكون فيه نوع من الصعوبه , وخاصة عندما يكون لديك عدد كبير من المستخدمين , ولكن لا يمنع ان تحدد بعض صلاحيات الجداول المهمة كالجداول المالية وغيرها , وكذلك تعمل الصلاحية الاخرى من الفورم لانه سوف يكون اسهل ,
ضف الى ذلك انك عندما تعمل عدد من المستخدمين في الداتابيس وتعمل عدد من الـobjects في كل مستخدم سوف تواجه مشاكل كثيره في عملية الـexport والـimport , فانك حين تعمل export وimport مره ثانية سوف تجد ان معضم الـviews والـpackages تحتاج الى re-compile مره ثانية وخاصة الـobject الموجوده في مستخدم معين وهي تعتمد على مستخدم آخر .

بتاريخ:

السلام عليكم
شكرا ياشباب على هذا الموضوع الرائع وصراحة انا مع كلام الأستاذ خالد من ناحية عمل نظام الأمن بالإعتماد على نطام مستقل غيرالموجود في قاعدة البيانات خصوصا إذا كان هناك عدد كبير من الصلاحيات وهناك إختلاف كبير في الصلاحيات التي تعطى لكل مستخدم أي تعدد صلاحيات مستخدمين النظام ،أيضا هناك موضوع التراخيص والذي قد يكلف الشركة او المنشأة الكثير عند وجود عدد كبير من المستخدمين :) !! ارجوا من الجميع المشاركة في هذا الموضوع لكي نصل إلى خلاصة أيهما أفضل لإعتماد على نظام الأمن الموجود في قاعدة البيانات أو بناء نظام مستقل عنها؟؟
وتحياتي للجميع

بتاريخ:

هلا والله اخوي خالد

كلامك صحيح ولكن يوجد شي يسمى ROLE

وهي مجموعه من الصلاحيات موضوعه في ROLE وهذى يسهل عمل الادمن كثير

فيقوم بأنشاء عدد من ROLE مثل واحده للأستعلام وواحده للتعديل وواحده للحذف وهكذا

وبالطريقه هذى تصبح اسهل من عمل الجداول

هذى من رائي

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

مع خالص تحياتي

شبيــــــــــه الريح

بتاريخ:

انا مع راي عمل جداول للمستخدمين والصلاحيات
والتحكم في الصلاحيات من خلال الفورم
خصوصا في البرامج التي لا تحتاج الى مستوى امن عالي

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

بتاريخ:

هلا والله اخوي developer

جميل جدا ان نقوم بمناقشه هذى الامر الهام جدا جدا

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


وانا اقول لك هذى غير صحيح وهي من اسهل الامور

وانا الان اقوم بتجهيز شرح شامل لطريقه التحكم بالمستخدمين من انشاء وحذف ومنح صلاحيات وغيرها من الامور الهامه

وبأذن الله سوف يتغير رائيك ورائي باقي الاخوه

تحياتي لك

شبيــــــــــه الريح

بتاريخ:

السلام عليكم

سأقوم بشرح مختصر وبسيط لعمل ذلك.
1. يجب أن يحوي البرنامج على واجهة لادخال اسماء المستخدمين وتعريف صلاحيات دخولهم، ويجب أن يكون الدخول إليها وفق صلاحيات، أما الدخول للمرة الأولى فلا يحتاج لأي صلاحية دخول
ويمكن ذلك بعمل

select count(*) into v_users  from users;

2. التأكد من ان اسم المستخدم موجود في الجدول بنفس الطريقة، وفي حال تطابق كلمة السر المدخلة مع كلمة السر المخزنة فيسمح له بالدخول للواجهة الرئيسية للبرنامج.

3. التحكم بدخول المستخدم إلى واجهات البرنامج ويتم ذلك بتعريف صلاجيات دخوله، ويفضل تعريف رقمين للدخول لكل واجهة
فمثلا من أجل الواجهة x يتم تعريف الرقمين 15 و 16 على سبيل المثال
ومن أجل الواجهة Y يتم تعريف الرقمين 17 و 18 ----- سأبين لماذا رقمين لاحقا.

4. عند ضغط المستخدم على menu البرنامج يقوم البرنامج بفحص التالي:
هل للمستخدم الموجود حالياً صلاحية دخول إلى الواجهة x والتي رقمها 15 في حال نعم السماح له بالدخول وبالوصول الكامل من حذف وتعديل واضافة + عرض query
أما في حال ان المستخدم ليس له صلاحية دخول إلى الواجهة x والتي رقمها 15 فهل له صلاحية دخول بالصلاحية رقم 16 وفي حال نعم يدخل المستخدم بوضع استعلام فقط

وبفرض ان جدول تعريف الصلاحيات موجود بالاسم mod_priv وتعرف فيه كل واجهة بما يقابلها من أرقام صلاحيات الخاصة بها
وبفرض أيضا ان جدول الصلاحيات الممنوحة هو privs ويحوي على الاعمدة التالي:
user_no اسم المستخدم
prive_no الصلاحية الممنوحة له

فإنه يمكننا التأكد من صلاحية دخول مستخدم إلى واجهة ما بما يلي:

declare
v_mod_x number;
begin
select count(*) 
into v_mod_x
from privs
where user_no = global.user_no
and prive_no = 15;
if v_mod_x > 0 then 
 call_form(x);
else
select count(*) 
into v_mod_x
from privs
where user_no = global.user_no
and prive_no = 16;
if v_mod_x > 0 then 
 call_query(x);
else
  message('you do not have privilege to enter this form');
end if;
end;




وذلك باعتبار ان global.user_no هو رقم المستخدم الذي دخل إلى البرنامج منذ البداية

أرجو ان أكون قد افدتكم
والسلام.

بتاريخ:

شكر اخي شبيه الريح على ردك الجميل

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

ومنتظرين شرحك لكي تعم الفائدة وبارك الله فيك


شكر اخي sam_t على هذا الشرح المفيد

  • بعد 8 سنة...
بتاريخ:

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

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

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

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.