الانتقال إلى المحتوى

انشاء شاشة دخول وتغيير كلمة السر وتحكم بالمستخدمين والتحكم بالمستخدمين


mmsalman87

Recommended Posts

  • الردود 97
  • البداية
  • اخر رد

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

  • mmsalman87

    11

  • algadal

    4

  • figo86

    4

  • Ahmad.Hasan

    4

نبدأ بتصميم شاشة الدخول

اولا من قائمة file نختار new ثم form

- من object navigator نضغط على اسم الفورم الجديد الذي انشأناه ونمسح الكلمة الموجودة بجانب menu module
- من windows نعيد تسمية الويندو بالاسم التالي WIN_LOGIN
- ندخل على الفورم وهو في حالة التصميم
- ونضع عليه TEXT BOX ونسميه USERID
- نضع TEXT BOX ونسميه PASSWORD ومن الخصائص نختار خاصية CONCEAL DATA=TRUE
- نضع BUTTON ونسميه LOGIN
- نضع BUTTON ونسميه CANCEL
- نضع BUTTON ونسميه CHANGE PASSWORD
- في PARAMETER نختار انشاء جديد ونسميه P_TRIALS ونعطيه نوع البيانات NUMBER
- في PROGRAM UNIT نختار PROCEDURE ونسميه P_CHECKUSER
ونكتب فيه الكود التالي :

PROCEDURE P_CHECKUSER IS
VN_COUNT		  NUMBER(10)	:= 0  ;
 VV_USRSTS	   NUMBER(1)   := '' ; حالة المستخدم تقابل USERT_STATUS
VV_USRTYPE		NUMBER(1)   := '' ; صلاحيات المستخدم تقابل USER_TYPE
BEGIN ----------------------------------------------------------------------------------
التأكد من اسم المستخدم وكلمة السر
 ----------------------------------------------------------------------------------
 BEGIN SELECT COUNT(1) تاكد من وجود المستخدم في قاعدة البيانات
  INTO VN_COUNT ضعه في المتغير
  FROM USERS_ACCOUNTS WHERE UPPER(USER_ID)   =  UPPER(:BLKLOGIN.USERID) لكي لا تتحسس الاحرف ان كانت كبيرة او صغيرة AND UPPER(USER_PASSWORD) =  UPPER(:BLKLOGIN.PASSWORD);
 EXCEPTION WHEN NO_DATA_FOUND THEN
  VN_COUNT := 0;
 END;

 IF VN_COUNT = 0 THEN
  :PARAMETER.P_TRIALS := NVL(:PARAMETER.P_TRIALS,0) + 1 ; متغير نضعه لكي نعطي المستخدم ثلاث محاولات للدخول وبعدها يخرج من البرنامج
 IF :PARAMETER.P_TRIALS = 3 THEN
   EXIT_FORM(NO_COMMIT,NO_VALIDATE);
 ELSE
   GO_BLOCK('BLKLOGIN'); الذهاب الى البلوك  
   CLEAR_BLOCK(NO_COMMIT);
   GO_BLOCK('BLKLOGIN');
 END IF;
  ELSE
[يمين][/يمين]	 BEGIN ----------------------------------------------------------------------------------
   -- اخذ المعلومات الخاصة بالمستخدم
   ----------------------------------------------------------------------------------
		   نأخذ حالة وصلاحية المستخدم SELECT USER_STATUS , USER_USER_TYPE
   INTO VV_USRSTS , VV_USRTYPE
   FROM USERS_ACCOUNTS WHERE UPPER(USER_ID)   =  UPPER(:BLKLOGIN.USERID) AND UPPER(USER_PASSWORD) =  UPPER(:BLKLOGIN.PASSWORD);
  EXCEPTION WHEN NO_DATA_FOUND THEN
 	   NULL;
 END;
 ----------------------------------------------------------------------------------
 -- CHECKING USER SETING ----------------------------------------------------------
 ----------------------------------------------------------------------------------
 اذا كانت قيمة الحالة صفر يمنع الدخول IF VV_USRSTS <> '0' THEN
 	 MESSAGE('المستخدم غير فعال');
 	 MESSAGE('المستخدم غير فعال');
 	  اخرج من البرنامج EXIT_FORM(NO_VALIDATE);
 END IF;

 -------------------------------------------------------------------------------
 تحديث بيانات المستخدم قبل الدخول لاستخدامها لاحقا ----------------------------------------
 -------------------------------------------------------------------------------	
	  : غلوبال لاستخدام الاسم لاحقا GLOBAL.P_USER_ID := :BLKLOGIN.USERID;
 NEW_FORM('MAINMENU');
 END IF;
END;



TRIGGERS

CANCEL >>> WHEN BUTTON PRESSED
exit_form(NO_COMMIT,NO_VALIDATE);


LOGIN >>> WHEN BUTTON PRESSED
P_CHECKUSER; نستدعي البروسيجر
وبهذا نكون قد انشانا شاشة دخول في الدرس القادم سوف نكمل في كيفية تغيير كلمة السر للمستخدم

تم تعديل بواسطة Ahmad.Hasan
رابط هذا التعليق
شارك

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

اولا لا بد لي ان اشكر المشرفين على تثبيت الموضوع
نكمل موضوعنا وذلك بعد ان تكلمنا عن كيفية عمل شاشة دخول بالاضافة الى شاشة تغيير كلمة سر
الان سوف نتكلم عن التحكم في المستخدمين
نفتح فورم جديد ونضع فيه جدول المستخدمين نمسح كلمة المرور من الشاشة ونغير العناصر التالية الى CHECK BOX
USER_STATUS
USER_EXP_FLAG
نحول صلاحيات المستخدم الى LIST ITEM
USER_TYPE
في الخصائص نذهب الى ELEMENTS IN LIST
ونضع فيها الصلاحيات التي تناسبنا حسب البرنامج ونعطي كل صلاحية رقم LIST ITEM VALUE
INITIAL VALUE نضع فيها الصلاحية التي ستنشئ مع المستخدم الجديد يعني ال DEFAULT
بالنسبة الى USER_STATUS نضع القيمة 1 اذا كان غير فعال و 0 اذا كان فعال يعني اذا تم وضع علامة صح على العنصر سيتم قفل المستخدم
وهذه قمنا ببرمجتها في شاشة الدخول اذا بتتذكرو

TRIGGERS

PRE INSERT للبلوك نضع الكود التالي :

اذا تم وضع علامة صح على ان المستخدم مؤقت يجب ادخال الفترة المتاحة لهذا المستخدم  IF :USER_EXP_FLAG = '1' AND (:USER_EXP_FROM IS NULL  OR :USER_EXP_TO IS NULL) THEN
	MESSAGE('ÇáãÓÊÎÏã ãÄÞÊ íÌÈ ÅÏÎÇá ÇáÝÊÑÉ');
	MESSAGE('ÇáãÓÊÎÏã ãÄÞÊ íÌÈ ÅÏÎÇá ÇáÝÊÑÉ');
	RAISE FORM_TRIGGER_FAILURE;
END IF;

IF :USER_TYPE IS NULL THEN
اذا كانت صلاحيات المستخدم غير محددة يجب اعطاءه صلاحيات  	MESSAGE('ÊÍÏíÏ ÕáÇÍíÇÊ ááãÓÊÎÏã ');
	MESSAGE('ÊÍÏíÏ ÕáÇÍíÇÊ ááãÓÊÎÏã ');
	RAISE FORM_TRIGGER_FAILURE;
END IF;



بقي عندنا الغلوبال التي عرفناها في شاشة الدخول وقلنا اننا سوف نستخدمها لاحقا
وهذه نضعها على ايا فورم في البرنامج ليكون المستخدم معرف ونناديها بالطريقة التالية :
WHEN NEW FORM INSTANCE
:BLK_MAIN.USER_NAME := :GLOBAL.P_USER_ID;اسم البلوم . اسم ال TEXTBOX
والسلام ختااااااااام اي ملاحظات او استفسارات من عيوني
سأضع الشاشات قريبا ولكن لم يبق لي متسع من الوقت الان الى اللقاء

رابط هذا التعليق
شارك

  • بعد 2 أسابيع...
  • بعد 4 أسابيع...

السلام عليكم

لقد قمت باتباع الخطوات الموضحة لانشاء شاشة الدخول

ولقد تم بعون الله تعالى

ولكن السؤال

كيف سيتم استخدامها ... لاني حاولت اضيفها على فورم معين وما اشتغلت

ارجو لمن لديه فكرة ان يطلعنا عليها للافادة لاني اريد استخدامهافي مشروعي ان شاء الله

جزيتم الف خير

رابط هذا التعليق
شارك

PROCEDURE P_CHECKUSER IS
VN_COUNT NUMBER(10) := 0 ;
VV_USRSTS NUMBER(1) := '' ;
VV_USRTYPE NUMBER(1) := '' ;
BEGIN BEGIN SELECT COUNT(1)
INTO VN_COUNT FROM USERS_ACCOUNTS WHERE UPPER(USER_ID) = UPPER(:BLKLOGIN.USERID) AND UPPER(USER_PASSWORD) = UPPER(:BLKLOGIN.PASSWORD);
EXCEPTION WHEN NO_DATA_FOUND THEN
VN_COUNT := 0;
END;

IF VN_COUNT = 0 THEN
:PARAMETER.P_TRIALS := NVL(:PARAMETER.P_TRIALS,0) + 1 ;
IF :PARAMETER.P_TRIALS = 3 THEN
EXIT_FORM(NO_COMMIT,NO_VALIDATE);
ELSE
GO_BLOCK('BLKLOGIN');  
CLEAR_BLOCK(NO_COMMIT);
GO_BLOCK('BLKLOGIN');
END IF;
ELSE

BEGIN SELECT USER_STATUS , USER_TYPE
INTO VV_USRSTS , VV_USRTYPE
FROM USERS_ACCOUNTS WHERE UPPER(USER_ID) = UPPER(:BLKLOGIN.USERID) AND UPPER(USER_PASSWORD) = UPPER(:BLKLOGIN.PASSWORD);
EXCEPTION WHEN NO_DATA_FOUND THEN
NULL;
END;

IF VV_USRSTS <> '0' THEN
MESSAGE('user not active');
MESSAGE('user not active');
EXIT_FORM(NO_VALIDATE);
END IF;


:GLOBAL.P_USER_ID := :BLKLOGIN.USERID;
NEW_FORM('MAINMENU');
END IF;
END;




اخي الكريم

هاد الكود ان شاء الله بدون ايرور

تم تعديل بواسطة Ahmad.Hasan
رابط هذا التعليق
شارك

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

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

ولقد تم تجريب جميع الاجزاء المتعلقة سواء التغير او الدخول

ولكن بقي لي نقطة واحدة فقط

وهي طريقة الاستعمال اقصد انه كيف سيتم استخدام الفورم الخاص بالدخول بالمشروع لانو هناك مستخدمين ( ادمن , موظف )

هل سنقوم بربط المشروع بشاشة الدخول ؟ وما هي الطريقة يعني يتم اضافة تريجير معين بالمشروع ام بشاشة الدخول

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

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

وسأقوم بارفاق الفورمز لانو الفورمز المرفق مع الموضوع انكودد

بانتظاركم اخواني بالله

رابط هذا التعليق
شارك

  • بعد 3 أسابيع...

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

فعلا الموضوع شيق و أنا شخصيا أعجبت بهذه الطريقة ، لكن أعتقد أن طريقة استخدام الـ Menu Security هي أفضل طريقة للتعامل داخل المشرووع.
و شكراً لجميع أعضاء المنتدى.

رابط هذا التعليق
شارك

يا اخوان الى الان الفورم لا يشتغل معي حيث عند كتابة البروسيجر
مع اني قمت بنسخ الثاني الذي هو معدل؟

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

رابط هذا التعليق
شارك

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

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

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

×   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

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

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

جاري التحميل
×
×
  • أضف...

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

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