الانتقال إلى المحتوى
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.

7 خطوات سهلة لإنشاء نظام صلاحيات كامل على الفورم

Featured Replies

بتاريخ:

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

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

أولا:
(الوظائف والامتيازات التالية تعتبر قياسية يمكنك التعديل عليها)
نقوم بإنشاء وظائف مثلا:

create role admin;

create role data_entry;

create role viewr;


ثانيا:
نمنح الوظائف الامتيازات التالية:

grant connect,resource,dba to admin;
grant select any table,update any table,delete any table,insert any table
to admin;
grant select any sequence, alter any sequence
to admin;

grant connect,resource to data_entry;
grant select any table,update any table,delete any table,insert any table
to data_entry;
grant select any sequence, alter any sequence
to data_entry;

grant connect,resource to viewr;
grant select any table
to viewr;
grant select any sequence
to viewr;


ثالثا:
نقوم بمنح الوظائف السابقة الاستعلام من جدول الوظائف الموجود بالأوراكل:

*مستخدمي ORACLE 8,8i
قم بالدخول باسم المستخدم التالي (internal/oracle) وعمل التالي:

grant select
on dba_role_privs
to admin;

grant select
on dba_role_privs
to data_entry;

grant select
on dba_role_privs
to viewr;


*مستخدمي ORACLE9i
قم بالدخول باسم المستخدم التالي (sys/sys as sysdba) تأكد من كلمة المرور حسب ماقمت بتعديله.

رابعا:
نقوم الآن بإنشاء المستخدمين ومنح كل حسب وظيفته:

grant admin to user1 identified by u123;

grant data_entry to user2 identified by u123;

grant viewr to user3 identified by u123;


الآن تم إنشاء الوظائف ومنحها الامتيازات ومنح الامتيازات للمستخدمين, بقي الآن دور FUNCTION التي سوف توضع في الفورم

أولا:
قم بفتح النموذج المراد وضع الوظائف عليه

ثانيا:
قم بالذهاب الى Program Units واضغط على زر create

إختر Function وقم بتسميتها بـ USER_ROLE ثم قم بلصق الكود التالي:


FUNCTION USER_ROLE(ROLEE VARCHAR2,USERS VARCHAR2) RETURN BOOLEAN 
IS
CURSOR  V_ROLES IS SELECT GRANTED_ROLE  
FROM DBA_ROLE_PRIVS WHERE GRANTEE=UPPER(USERS);
ROLES_RECORD VARCHAR2(100);	
BEGIN OPEN V_ROLES;
LOOP
	FETCH V_ROLES INTO ROLES_RECORD; EXIT WHEN V_ROLES%NOTFOUND;
	IF ROLES_RECORD=ROLEE THEN RETURN(TRUE);
	END IF;
END LOOP;
RETURN(FALSE);
END;


يتم في هذه الدالة استعلام عن الوظيفة الممنوحة حسب اسم المستخدم والرجوع بها

ثالثا:
في نفس النموذج قم بعمل Trigger من نوع WHEN-NEW-FORM-INSTANCE ووضع الاشياء التي تريد اخفاءها على حسب اسم الوظيفة كما في المثال التالي:

IF  USER_ROLE('data_entry',USER) THEN 
Set_item_Property('CONTROL.USER_MANAGMENT', ENABLED, PROPERTY_FALSE);

END IF;


عند وضع تحقق لوظيفة أخرى قم بالتعديل على اسم الوظيفة والعناصر فقط بعمل ELSE IF أو IF


بهذا نكون أنشأنا نظام صلاحيات (مايخرش الميه)

أتمنى من الجميع أن يستفيدوا من هذه الطريقة التي ربما كون جديدة لكنها من تأليفي أنا وزميل لي أثناء فترة الدراسة والله يشهد.


ترقبوا مني في الايام القادمة بإذن الله كتابة جميع أكواد إدارة المستخدمين برمجيا من دون الرجوع للـ SQL.

<marquee direction=right>(أرجو من كل من يقرأ هذا الموضوع الدعاء لي بالتوفيق في الدنيا والآخرة)</marquee>

  • الردود 96
  • المشاهدات 60k
  • البداية
  • اخر رد

أكثر المشاركين في هذا الموضوع

Most Popular Posts

  • السلام عليكم ورحمة الله وبركاته جزاكم الله خيراً عن هذه المعلومات المهمة أو ان اضيف طريقة أخرى شبيهة بهذه الطريقة وهي ان تكون 4 roles وتعطي كل role صلاحية معينة مثلاً: 1- master هذه تعطى كل الصلاحي

بتاريخ:

جزاك الله خيراً أخي الحبيب ، وأسأل من الله عز وجل أن يجعلها في ميزان حسناتك إن شاء الله.

بتاريخ:

جزاك الله كل خير شيء يستحق الشكر على هذه الطريقة

بتاريخ:

مشكور على الطريقة المميزة

بتاريخ:

جزاك الله كل خير

بتاريخ:

الف شكر اخي على هذه المعلومات وجزاك الله عنا خير

بتاريخ:
  • كاتب الموضوع

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

بتاريخ:

اخي العزيز /aaaa
مشكور على هذا الجهد الكبير و اتمنى من الله ان يقبله في ميزان حسناتك في الدنيا والآخرة وان ينفع بك و بنا في هذه الامه

  • بعد 2 أسابيع...
بتاريخ:

اخي العزيز
aaaa
مشكور على هذا الجهد الكبير و اتمنى من الله ان يقبله في ميزان حسناتك في الدنيا والآخرة وان ينفع بك و بنا في هذه الامه

  • بعد 2 أسابيع...
بتاريخ:

السلام عليكم ورحمة الله وبركاته
بارك الله فيك علي هذه المعلومات القيمة :)

بتاريخ:

جزاك الله خيرا

بتاريخ:

السلام عليكم،،
يعطيك العافية وما قصرت.
لكن بإمكاني أنشيء Menu و أسند جميع الـ Roles اللي أنشأتها من دون الحاجة الى كتابة procedure و استخدام جمل الـ If .... بحيث يتم تعطيل و تفعيل الـ Menu Items حسب المستخدم و حسب الصلاحيات التي يملكها.
و بالتوفيق.

بتاريخ:

مشكور و جزاك الله الف خير و كثر الله من امثالك يا اخي العزيز .

  • بعد 4 أسابيع...
بتاريخ:

جزاكم الله كل خير وجعله الله فى ميزان حسناتكم
والله انا بكتب بلغة اسمها rpg على جهاز سيرفر AS400 واعجبتنى جدا طريقة معالجة المستخدمين لانى عامل حاجة قريبة منها بس دى اشد
اللهم علمنا ما ينفعنا ونفعنا بما علمتنا

عاصم عوض

بتاريخ:
يعجز اللسان عن الشكر
بتاريخ:
جزاك الله خيرا

48837[/snapback]



ممكن اذا سمحت تفصيل اكثر وجزاك الله خير بالتفصيل اذا تكرمت
  • بعد 4 أسابيع...
بتاريخ:

ألف شكر ,, وجارى التجريب

  • بعد 2 أسابيع...
بتاريخ:

بارك الله في الشباب

  • بعد 2 أسابيع...
بتاريخ:

مشكور أخى
وجزاك الله خيرا

بتاريخ:
مشكور على الطريقة المميزة

46265[/snapback]



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

أخي الكريم
شكرا لك على الطريقة العظيمة ولكن لي تعقيب عليها
إن نسخ الأوراكل المتوفرة في السوق لعدد محدد من المستخدمين Named Users وكلما زاد عدد المستخدمين المسجلين في قاعدة المعطيات ازداد ثمنها بشكل كبير جدا ، لذلك وفي الأنظمة الكبيرة في مؤسسة مثلا حيث يوجد لديك مثلا 10 مستخدمين(End Users) لبرامج المالية وكل له صلاحية مختلفة عن الآخر و10 مستخدمين في برامج المحاسبة و10 في برامج المستودعات إلخ فأنت بحاجة لنسخة أوراكل لمئة مستخدم على الأقل وهذا يجعل ثمن نسخة أوراكل يصل لحدود 150000 دولار وهذا كثير جدا لذلك أنصحك في الحالات المشابهة بوضع نظام صلاحية على مستوى التطبيق وليس على مستوى قاعدة المعطيات ويكون الاتصال بقاعدة المعطيات لكل برنامج واحد عبر مستخدم واحد فقط وتتم المعالجة في التطبيق وبمساعدة جداول تحتوي على المستخدمين وصلاحياتهم .
كما يمكن لك معالجة هذه المسألة بمساعدة الــ Database Triggers .
وتفضل بقبول تقديري واحترامي.

  • بعد 3 أسابيع...
بتاريخ:

ألف شكرا على الطريقة هذه ،،،، وإن شاء الله يوفق في حياتك العلمية والعملية.....

بتاريخ:

لا استطيع ان اقول شيء سوي بسم الله ما شاء الله

  • بعد 2 أسابيع...
بتاريخ:

جزاك الله الف خير

بتاريخ:

السلام عليكم ورحمة الله وبركاته
جزاكم الله خيراً عن هذه المعلومات المهمة
أو ان اضيف طريقة أخرى شبيهة بهذه الطريقة وهي ان تكون 4 roles وتعطي كل role صلاحية معينة مثلاً:
1- master هذه تعطى كل الصلاحيات اي dba .
2- input هذه تعطى صلاحية الادخال والتعديل والحذف ولكن لاتعطى صلاحية الدخول علي التقارير .
3-output هذه تعطى صلاحية العرض فقط اي الدخول على التقارير .
3- input and output وهي تعطى صلاحية الادخال والتعديل والحذف والعرض ولكن لاتعطى صلاحيات الاخرى مثل تكوين مستخدم جديد او الغاء مستخدم او اعطاء صلاحية او عمل نسخة احتياطية من البيانات او استرجاع البيانات .
عن طريق مايسمى بال synonamn.




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

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

أولا:
(الوظائف والامتيازات التالية تعتبر قياسية يمكنك التعديل عليها)
نقوم بإنشاء وظائف مثلا:

create role admin;

create role data_entry;

create role viewr;


ثانيا:
نمنح الوظائف الامتيازات التالية:

grant connect,resource,dba to admin;
grant select any table,update any table,delete any table,insert any table
to admin;
grant select any sequence, alter any sequence
to admin;

grant connect,resource to data_entry;
grant select any table,update any table,delete any table,insert any table
to data_entry;
grant select any sequence, alter any sequence
to data_entry;

grant connect,resource to viewr;
grant select any table
to viewr;
grant select any sequence
to viewr;


ثالثا:
نقوم بمنح الوظائف السابقة الاستعلام من جدول الوظائف الموجود بالأوراكل:

*مستخدمي ORACLE 8,8i
قم بالدخول باسم المستخدم التالي (internal/oracle) وعمل التالي:

grant select
on dba_role_privs
to admin;

grant select
on dba_role_privs
to data_entry;

grant select
on dba_role_privs
to viewr;


*مستخدمي ORACLE9i
قم بالدخول باسم المستخدم التالي (sys/sys as sysdba) تأكد من كلمة المرور حسب ماقمت بتعديله.

رابعا:
نقوم الآن بإنشاء المستخدمين ومنح كل حسب وظيفته:

grant admin to user1 identified by u123;

grant data_entry to user2 identified by u123;

grant viewr to user3 identified by u123;


الآن تم إنشاء الوظائف ومنحها الامتيازات ومنح الامتيازات للمستخدمين, بقي الآن دور FUNCTION التي سوف توضع في الفورم

أولا:
قم بفتح النموذج المراد وضع الوظائف عليه

ثانيا:
قم بالذهاب الى Program Units واضغط على زر create

إختر Function وقم بتسميتها بـ USER_ROLE ثم قم بلصق الكود التالي:


FUNCTION USER_ROLE(ROLEE VARCHAR2,USERS VARCHAR2) RETURN BOOLEAN 
IS
CURSOR  V_ROLES IS SELECT GRANTED_ROLE  
FROM DBA_ROLE_PRIVS WHERE GRANTEE=UPPER(USERS);
ROLES_RECORD VARCHAR2(100);	
BEGIN OPEN V_ROLES;
LOOP
  FETCH V_ROLES INTO ROLES_RECORD; EXIT WHEN V_ROLES%NOTFOUND;
  IF ROLES_RECORD=ROLEE THEN RETURN(TRUE);
  END IF;
END LOOP;
RETURN(FALSE);
END;


يتم في هذه الدالة استعلام عن الوظيفة الممنوحة حسب اسم المستخدم والرجوع بها

ثالثا:
في نفس النموذج قم بعمل Trigger من نوع WHEN-NEW-FORM-INSTANCE ووضع الاشياء التي تريد اخفاءها على حسب اسم الوظيفة كما في المثال التالي:

IF  USER_ROLE('data_entry',USER) THEN 
Set_item_Property('CONTROL.USER_MANAGMENT', ENABLED, PROPERTY_FALSE);

END IF;


عند وضع تحقق لوظيفة أخرى قم بالتعديل على اسم الوظيفة والعناصر فقط بعمل ELSE IF أو IF


بهذا نكون أنشأنا نظام صلاحيات (مايخرش الميه)

أتمنى من الجميع أن يستفيدوا من هذه الطريقة التي ربما كون جديدة لكنها من تأليفي أنا وزميل لي أثناء فترة الدراسة والله يشهد.


ترقبوا مني في الايام القادمة بإذن الله كتابة جميع أكواد إدارة المستخدمين برمجيا من دون الرجوع للـ SQL.

<marquee direction=right>(أرجو من كل من يقرأ هذا الموضوع الدعاء لي بالتوفيق في الدنيا والآخرة)</marquee>

46213[/snapback]


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

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

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

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

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

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.