الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مثال على صلاحيات المستخدم

مغلق
بدأه waleedhm في 30 ديسمبر 2004 · 23 رد · 10,774 مشاهدة · في قسم الدروس والمواضيع المتميزة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

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

اول خطوة

بعمل فتح برنامج جديد

قم باضافة Module

واكتب الكود التالى

Imports System.Data.OleDb
Module Module2
    Public myusername As String
    Public mypassword As String
    Public addstate As Boolean
    Public delstate As Boolean
    Public editstate As Boolean
    Public mydataset As New DataSet
    Public Con As New OleDbConnection
    Public MyAdapter As OleDbDataAdapter
End Module

ارجع الان الى الشاشة الرئيسية

قم باضافة عدد 2 TextBox

وغير الاسم الى

t_username

t_password

والان اضافة الكود الخاص بلبرنامج

اضف فضاء الاسماء التالى

Imports System.Data.OleDb

وفى حدث تحميل الفورم اكتب الكود التالى

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Con.ConnectionString = "Provider=Microsoft.jet.oleDB.4.0;Data Source=" & Application.StartupPath & "\db_admin.mdb;"
        Try
            Con.Open()
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

الخطوة التالية خطوة التاكد من اسم المستخدم وكلمة السر والصلاحيات

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        myusername = t_username.Text
        mypassword = t_password.Text
        mydataset.Clear()
        Dim Str As String = "select * from users where username='" & myusername & "' and password='" & mypassword & "'", con_str
        MyAdapter = New OleDbDataAdapter(Str, Con)
        MyAdapter.Fill(mydataset, "USER")
        If mydataset.Tables("USER").Rows.Count > 0 Then
            addstate = mydataset.Tables("USER").Rows(0).Item("addfunction")
            delstate = mydataset.Tables("USER").Rows(0).Item("deletefunction")
            editstate = mydataset.Tables("USER").Rows(0).Item("editfunction")

            Dim x As New Form2
            x.Show()
            Con.Close()
        Else
            MessageBox.Show("خطاء")
        End If
    End Sub

الان قم باضافة الشاشة التالية

وقم باضافة عدد 3Button

وقم باعادة التسمية

b_edit

b_del

b_Add

وبعد ذالك اكتب الكود التالى

 Sub show_controls(ByVal enableadd As Boolean, ByVal enableedit As Boolean, ByVal enabledel As Boolean)
        b_Add.Enabled = enableadd
        b_edit.Enabled = enableedit
        b_del.Enabled = enabledel
    End Sub

ثم فى حدث تحميل الفورم التانى اكتب الكود التالى

 show_controls(addstate, editstate, delstate)

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

1 وكلمة السر 1

2 وكلمة السر 2

3 وكلمة السر3

صلاحيات المستخدم اكسس.rar

تم تعديل هذه المشاركة بواسطة طارق إبراهيم في 31 ديسمبر 2004 في 07:42

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

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

#2

السلام عليكم

من الواضح ان المثال مش جيد B)

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

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

#3

اعذر الشباب يا اخى فالوقت هو وقت امتحانات و معظم الشباب معذورين

Technical Lead Developer

My LinkedIn Profile

اللهم قنى شر الجهل و الجهلاء

( اقْتَرَبَ لِلنَّاسِ حِسَابُهُمْ وَهُمْ فِي غَفْلَةٍ مَّعْرِضُونَ ) {الأنبياء:1}

#4

مثال رائع وفق الله ياأخي وليد

فلسطين الزاهية بألوان الحب والسلام

ذلك الطعم الزيتوني الذي يتدفق عسلاً من أفواه بساتينها وحدائقها

تشتاق إليها نفوس المتقين وترنوا للسجود فيها جباه المسلمين

#5

السلام عليكم

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

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

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

#6

:rolleyes: جيد للأمام

مهندس اتصالات

#7

بصراحة المثال فوق الرائع

يعطيك العافيه اخي على الامثله الرائعه

#8

السلام عليكم

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

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

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

#9

السلام عليكم

الى الأمام دوما باذن الله ..........

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

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

اكتشافات علمية في قيام الليل

من فوائد الحمـــى

هل تريد اكثر من مليار حسنه في دقيقه واحده ......

فقط قل هذه الجمله وستأخذ عن كل مسلم حسنه من غير أن ينقص من أجرهم شيئا

اللهم أغفر للمؤمنين و المؤمنات و المسلمين و المسلمات الأحياء منهم و الأموات

وتأخذ عن كل واحد حسنه فانظر كم عدد المسلمين

كلمتان خفيفتان على اللسان ثقيلتان في الميزان حبيبتان على الرحمن

" سبحان الله وبحمده سبحان الله العظيم"

* دقيقة واحده : تستطيع ان تقول لاحول ولا قوة الا بالله اكثر من ( 40 ) مره وهي كنز من كنوز الجنه .

دقيقة واحدة : تستطيع ان تصلي على النبي صلى الله عليه وسلم ( 20 ) مره فيصلي عليك الله مقابلها

( 200 ) مره وحطة عنه ( 200 ) خطيئة من خطاياه ، ورفع له ( 200 ) درجة .

#10

وعليكم السلام

واياكم يا اخى B5CSE

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

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

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

#11

مشكور على البرنامج فقد كنت احتاجه

#12

أخي الفاضل waleedhm، المثال جيد، لكن إسمح لي أن أعلق على شيئاً واحداً ،

ان لغة الـ VB.Net هي لغة كما تعلم مبنية على الـ OOP و عدم استخدامنا لإحدى مبادئها الهامة كالـ Properties و استخدام الـ Variables مباشرةً هي كارثة بعينيها..

فمثلاً عندما أردت تعيين و استرجاع قيم موجودة في الـ Variables الموجودة في الـ Module قمت بذلك مباشرةً، و هذا الأسلوب لا يتناسب أبدأ مع الـ OOP ;)

كان من الممكن انشاء Class جديد بدلاً من الـ Module و وضع كل الـ Variables فيه، و بدلاً من الاعلان عنها بـ Public نعلن عنها بـ Private حتى لا تكون هذه المتغيرات مرئية للـ Classes الوارثة من هذا الـ Class أو الـ Objects المشتقة منه، و عندما نريد تعيين و استرجاع قيم لهذه الـ Variables نستخدم Property لكل Varaible على حدا، مثال:

Public Class Properties

   Private myusername As String
   Private mypassword As String
   Private addstate As Boolean
   Private delstate As Boolean
   Private editstate As Boolean
   Private mydataset As New DataSet
   Private Con As New OleDbConnection
   Private MyAdapter As OleDbDataAdapter

   Public Property UserName() as String
      Get
            Return myusername
      End Get
      Set(ByVal Value as String)
             myusername = value
      End Set
   End Property

   Public Property Password() as String
      Get
            Return mypassword
      End Get
      Set(ByVal Value as String)
             mypassword = value
      End Set
   End Property

   Public ReadOnly Property DataSet() As DataSet    ' للقراءة فقط لأننا نريد أن نقرأ من الداتاسيت و ليس الكتابة عليها
      Get
             return New Dataset          
      End Get
    End Property

'.......... و هكذا الى آخره

End Class

أرجو أن أكون نجحت في توصيل ما أريد أن أقوله، و الله الموفق...

رأس الحكمة الإيمان بالله

#13

ماسبب عدم المقدرة من تحميل المثال

#14

السلام عليكم

جزاكم الله خيرا يا اخ محمد

تم التعديل على المثال

  Public Class ClasSecure
    Private _con As String = "Provider=Microsoft.jet.oleDB.4.0;Data Source=" & Application.StartupPath & "\db_admin.mdb;"
    Public Property Connection() As String
        Get
            Return _con
        End Get
        Set(ByVal Value As String)
            _con = Value
        End Set
    End Property
    Private _Username As String
    Public Property UserName() As String
        Get
            Return _Username
        End Get
        Set(ByVal Value As String)
            _Username = Value
        End Set
    End Property
    Private _Password As String
    Public Property Password() As String
        Get
            Return _Password
        End Get
        Set(ByVal Value As String)
            _Password = Value
        End Set
    End Property
    Private _Add As Boolean
    Public Property Add() As Boolean
        Get
            Return _Add
        End Get
        Set(ByVal Value As Boolean)
            _Add = Value
        End Set
    End Property
    Private _Del As Boolean
    Public Property Del() As Boolean
        Get
            Return _Del
        End Get
        Set(ByVal Value As Boolean)
            _Del = Value
        End Set
    End Property
    Private _Edit As Boolean
    Public Property Edit() As Boolean
        Get
            Return _Edit
        End Get
        Set(ByVal Value As Boolean)
            _Edit = Value
        End Set
    End Property
End Class

  Imports System.Data
Imports System.Data.OleDb
Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim CLS As New ClasSecure

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        CLS.UserName = Me.TextBox1.Text.Trim.ToUpper
        CLS.Password = Me.TextBox2.Text.Trim.ToUpper
        Dim DS As New DataSet
        Dim SQL As String = "select * from users where username='" & CLS.UserName & "' and password='" & CLS.Password & "'"
        Dim DA As New OleDbDataAdapter(SQL, CLS.Connection)
        DA.Fill(DS, "USER")
        If DS.Tables("USER").Rows.Count > 0 Then
            CLS.Add = DS.Tables("USER").Rows(0).Item("addfunction")
            CLS.Del = DS.Tables("USER").Rows(0).Item("deletefunction")
            CLS.Edit = DS.Tables("USER").Rows(0).Item("editfunction")
            Dim x As New Form2(CLS)

            x.Show()
        Else
            MessageBox.Show("خطاء")
        End If
    End Sub

المشكلة بقا انى لما كنت بعمل Object جديد من Class كان لا يحتفظ بقيمة Property

تم حل المشكلة بلطريقة التالية

فى Form2 عملت reference من Class

     Dim CLS As ClasSecure

وتم اضافة الكود التالى فى Constants

      Public Sub New(ByVal cls As ClasSecure)
        MyBase.New()
        Me.CLS = cls

والحمد لله الكود الان يعمل بنجاح

    Me.But1.Enabled = CLS.Add
        Me.BuT2.Enabled = CLS.Del
        Me.But3.Enabled = CLS.Edit

User.rar

تم تعديل هذه المشاركة بواسطة waleedhm في 11 يوليو 2005 في 18:25

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

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

#15

بارك الله فيكم جميعاً علي هذة المعلومات القيمة فعلاً

يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل

سبحان الله وبحمده ... سبحان الله العظيم

#16

السلام عليكم

واياكم يا احمد

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

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

#17

السلام عليكم ...

أخواني أرجو منكم مساعدتي حيث لدي برنامج أقوم بعمله .... وأحتاج أن تدلوني على طريقه أقوم بها بتحديد أي فورم يتم نقل المستخدم إليه بحسب قسمه ( تحتوي قاعدة البيانات على < اسم الموظف , رقمه الوظيفي , الرقم السري , القسم > ) .

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

ولكم جزيل الشكر والتقدير.

تم تعديل هذه المشاركة بواسطة alazwari في 9 مارس 2006 في 08:39

#18
waleedhm كتب:
السلام عليكم

جزاكم الله خيرا يا اخ محمد

تم التعديل على المثال

  Public Class ClasSecure
    Private _con As String = "Provider=Microsoft.jet.oleDB.4.0;Data Source=" & Application.StartupPath & "\db_admin.mdb;"
    Public Property Connection() As String
        Get
            Return _con
        End Get
        Set(ByVal Value As String)
            _con = Value
        End Set
    End Property
    Private _Username As String
    Public Property UserName() As String
        Get
            Return _Username
        End Get
        Set(ByVal Value As String)
            _Username = Value
        End Set
    End Property
    Private _Password As String
    Public Property Password() As String
        Get
            Return _Password
        End Get
        Set(ByVal Value As String)
            _Password = Value
        End Set
    End Property
    Private _Add As Boolean
    Public Property Add() As Boolean
        Get
            Return _Add
        End Get
        Set(ByVal Value As Boolean)
            _Add = Value
        End Set
    End Property
    Private _Del As Boolean
    Public Property Del() As Boolean
        Get
            Return _Del
        End Get
        Set(ByVal Value As Boolean)
            _Del = Value
        End Set
    End Property
    Private _Edit As Boolean
    Public Property Edit() As Boolean
        Get
            Return _Edit
        End Get
        Set(ByVal Value As Boolean)
            _Edit = Value
        End Set
    End Property
End Class

  Imports System.Data
Imports System.Data.OleDb
Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim CLS As New ClasSecure

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        CLS.UserName = Me.TextBox1.Text.Trim.ToUpper
        CLS.Password = Me.TextBox2.Text.Trim.ToUpper
        Dim DS As New DataSet
        Dim SQL As String = "select * from users where username='" & CLS.UserName & "' and password='" & CLS.Password & "'"
        Dim DA As New OleDbDataAdapter(SQL, CLS.Connection)
        DA.Fill(DS, "USER")
        If DS.Tables("USER").Rows.Count > 0 Then
            CLS.Add = DS.Tables("USER").Rows(0).Item("addfunction")
            CLS.Del = DS.Tables("USER").Rows(0).Item("deletefunction")
            CLS.Edit = DS.Tables("USER").Rows(0).Item("editfunction")
            Dim x As New Form2(CLS)

            x.Show()
        Else
            MessageBox.Show("خطاء")
        End If
    End Sub

المشكلة بقا انى لما كنت بعمل Object جديد من Class كان لا يحتفظ بقيمة Property

تم حل المشكلة بلطريقة التالية

فى Form2 عملت reference من Class

     Dim CLS As ClasSecure

      Public Sub New(ByVal cls As ClasSecure)
        MyBase.New()
        Me.CLS = cls

والحمد لله الكود الان يعمل بنجاح

    Me.But1.Enabled = CLS.Add
        Me.BuT2.Enabled = CLS.Del
        Me.But3.Enabled = CLS.Edit

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

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

#19

لدي طريقة أخرى اتمنى ان تكون مفيدة ايضا

وهي كالتالي:

1- نفترض ان لدينا مجموعة صلاحيات وهي

1- دخول

2- اضافة مستخدم

3- تعديل مستخدم

4- دخول الى شاشة التسجيل

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

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

فالرقم صفر يعني ليس لديه صلاحية والرقم واحد يعني لديه صلاحية

فنكوكن ككالتالي:

لدينا اربع صلاحيات فنفترض الآتي

ليس لديه صلاحيات فتكون جملة الصلاحيات = 0000

لديه كل الصلاحيات فتكون الجملة = 1111

لديه صلاحية الدخول فقط تكون الجملة = 1000

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

سأحاول ان اكتب مثال سريع عليها فيما بعد

<span style='color:green'>سؤل ابن عباس عن علمه كيف جمعه فقال :( أوتيت لسانا سؤولا وقلبا عقولا)</span>

#20

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

هذا الموضوع عجبني جداً

طبقة ما قام به الأخ waleedhm بعد نصيحة الأخ محمد عبدالعليم ولكن واجهة مشكلة في فهم الجزئية التالية :

اقتباس
لمشكلة بقا انى لما كنت بعمل Object جديد من Class كان لا يحتفظ بقيمة Property

تم حل المشكلة بلطريقة التالية

فى Form2 عملت reference من Class

   Dim CLS As ClasSecure

<div class="codetop">
 </div><div class="codemain">	  Public Sub New(ByVal cls As ClasSecure)
		 MyBase.New()
		 Me.CLS = cls</div>

والحمد لله الكود الان يعمل بنجاح

<div class="codemain">  Me.But1.Enabled = CLS.Add
		 Me.BuT2.Enabled = CLS.Del
		 Me.But3.Enabled = CLS.Edit  
 </div>

هذا ما حدث معي حيث أنني لم أفهم هذه الجزئية بالضبط

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

يا ليت من توضيح أكثر لأتمكن مع استخدام هذا الاسلوب

بارك الله في الجميع

#21

للتذكير

#22

جزاك الله خيري الدنيا و الآخرة و نفع بك

بارك الله فيك

#23

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

الاخوه الكرام لوسمحتولى الموضوع كده مش مترتب كويس

بمعنى انا دلوقى عاوز اعمل مراحل للعمل

1- عاوز اعمل نموذج كلمه السر التى من خلالها استطيع افتح المشروع كصاحب عمل اولا

2- ثم من خلال صحب العمل يتم اضافه المستخدميين وتعين كلمه السر واعطائهم الامتيازات فى العمل والتى من خلالها يتحكم صاحب العمل فى الجزئيه المراد قيام العامل بها

3- دخول المستخدمين للعمل ولهم صلاحه تغير كلمه السر دون تغير الصلاحيات

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

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

الخير هنا ربى اغفر لى ولوالدى وللمؤمنين يوم يقوم الحساب000 امين

#24

عفوا الرابط لا يعمل يا waleedhm

هذا الموضوع مغلق.

مواضيع مشابهة