Jump to content

Yetki Kodlaması Hk.


muratboy31
 Share

Recommended Posts

Arkadaşlar merhaba,

 

kullandığım bir yetki tablosu var ve bu tabloda true false değerleri var, ancak ben false değerini kaldırıp sadece true varsa aktif olsun istiyorum, aşağıdaki kod true false olarak çalışıyor, bunu sadece true da çalışacak şekilde nasıl daha kısa yaparım ;

 DataTable dtable = new DataTable();
                adp.Fill(dtable);                

                foreach (DataRow Satir in dtable.Rows) 
                { 
                    if (bool.Parse(Satir["Ac"].ToString()) == false) 
                    { 
                        foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups) 
                        { 
                            if (Grup.Caption == Satir["Form_Adi"].ToString()) Grup.Visible = false; 
                        } 
                        foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items) 
                        { 
                            if (subitem.Caption == Satir["Form_Adi"].ToString()) subitem.Visible = false; 
                        }
                        foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages)
                        {
                            if (Tab.Text == Satir["Form_Adi"].ToString()) Tab.PageVisible = false;
                        }
                    }

                    if (bool.Parse(Satir["Ac"].ToString()) == true)
                    {
                        foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups)
                        {
                            if (Grup.Caption == Satir["Form_Adi"].ToString()) Grup.Visible = true;
                        }
                        foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items)
                        {
                            if (subitem.Caption == Satir["Form_Adi"].ToString()) subitem.Visible = true;
                        }
                        foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages)
                        {
                            if (Tab.Text == Satir["Form_Adi"].ToString()) Tab.PageVisible = true;
                        }
                    }                   
                }      
Link to comment
Share on other sites

yanlış anlamadıysam şöyle olabilir:

        private void button1_Click(object sender, EventArgs e)
        {
            DataTable dtable = new DataTable();
            adp.Fill(dtable);

            foreach (DataRow Satir in dtable.Rows)
            {
                if (bool.Parse(Satir["Ac"].ToString()) == true)
                {
                    Kontrol(true, Satir["Form_Adi"].ToString());
                    break;
                }
            }
 

        }

        void Kontrol(bool deger, string formAdi)
        {
            foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups)
            {
                if (Grup.Caption == formAdi) Grup.Visible = deger;
            }
            foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items)
            {
                if (subitem.Caption == formAdi) subitem.Visible = deger;
            }
            foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages)
            {
                if (Tab.Text == formAdi) Tab.PageVisible = deger;
            }
        }
    }

eğer değer true ise kontrolleri görünür yapar ve döngüyü break ile durdurur.

 

not: Kontrol() methodunda değişiklik yaptım, en son hali ile deneyiniz.

Edited by KintaRo
Link to comment
Share on other sites

Döngüyü durdurmak istemiyorum ama, istediğim eğer true ise yetki olsun, yada true false değilde mesela kullanıcının karşısında hangi nesnelerin ismi varsa onlar aktif olsun...

 

Daha kolay yada etkili bir örnek varsa o da olabilir !

 

mesela 1 veya 0 değilde, onun yerine sadece form adı olanlar aktif olsun, bunu nasıl yapabilirim ?

 

1zfoqcm.jpg

Edited by muratboy31
Link to comment
Share on other sites

"kullanıcının karşısında hangi nesnelerin ismi varsa" demişsin, bunları veritabanında bir sütunda mı tutuyorsun? yapıyı anlat bize, bir de tam olarak ne yapmak istediğini açarsan daha çok yardımcı olabiliriz

Link to comment
Share on other sites

evet, form_adi olan sütun o nesneye yetkisi olduğunu gösteriyor, dediğin gibi eğer orada caption varsa visible olacak, yoksa olmayacak...

 

aşağıdaki gibi denedim ama olmadı ;

DataTable dtable = new DataTable();
                adp.Fill(dtable);                

                foreach (DataRow Satir in dtable.Rows) 
                {                  
                        foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups)
                        {
                            if (Grup.Caption == Satir["Form_Adi"].ToString()) Grup.Visible = true;
                        }
                        foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items)
                        {
                            if (subitem.Caption == Satir["Form_Adi"].ToString()) subitem.Visible = true;
                        }
                        foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages)
                        {
                            if (Tab.Text == Satir["Form_Adi"].ToString()) Tab.PageVisible = true;
                        }
                }      
Edited by muratboy31
Link to comment
Share on other sites

        private void button1_Click(object sender, EventArgs e)
        {
            DataTable dtable = new DataTable();
            adp.Fill(dtable);

            foreach (DataRow Satir in dtable.Rows)
            {
                    Kontrol(Satir["Form_Adi"].ToString());
            }
 

        }

        void Kontrol(string formAdi)
        {
            foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups)
            {
                if (Grup.Caption == formAdi) Grup.Visible = true;
                else Grup.Visible = false;
            }
            foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items)
            {
                if (subitem.Caption == formAdi) subitem.Visible = true;
                else subitem.Visible = false;
            }
            foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages)
            {
                if (Tab.Text == formAdi) Tab.PageVisible = true;
                else Tab.PageVisible = false;
            }
        }
Link to comment
Share on other sites

bu şekilde yaptım ama olmadı ! ;

DataTable dtable = new DataTable();
                adp.Fill(dtable);                

                foreach (DataRow Satir in dtable.Rows)
                {
                    foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups)
                    {
                        if (Grup.Caption == Satir["Form_Adi"].ToString())
                            Grup.Visible = true;
                        else
                            Grup.Visible = false;
                    }
                    foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items)
                    {
                        if (subitem.Caption == Satir["Form_Adi"].ToString())
                            subitem.Visible = true;
                        else
                            subitem.Visible = false;
                    }
                    foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages)
                    {
                        if (Tab.Text == Satir["Form_Adi"].ToString())
                            Tab.PageVisible = true;
                        else
                            Tab.PageVisible = false;
                    }   
                }     

Edited by muratboy31
Link to comment
Share on other sites

NavBar'a 5 grup koydum, Grupları default olarak Visible = false şekilde ayarladım ve şu kodu çalıştırdığımda eşleşenleri visible yaptı.

        private void button1_Click(object sender, EventArgs e)
        {
            DataTable dtable = new DataTable();
            dtable.Columns.Add("ID");
            dtable.Columns.Add("Kisi_Adi");
            dtable.Columns.Add("Goster");
            dtable.Columns.Add("Form_Adi");

            dtable.Rows.Add("1", "Murat", "1", "Kısayollar");
            dtable.Rows.Add("2", "Murat", "1", "Home");
            dtable.Rows.Add("3", "Murat", "1", "Diğer");
            dtable.Rows.Add("4", "Mustafa", "0", "Pc");
            dtable.Rows.Add("5", "Mustafa", "1", "Kısayollar");
            dtable.Rows.Add("6", "Mustafa", "0", "Araçlar");
            dtable.Rows.Add("7", "Murat", "1", "Araçlar");
            dtable.Rows.Add("8", "Murat", "1", "Pc");
            dtable.Rows.Add("9", "Murat", "1", "");
            dtable.Rows.Add("10", "Murat", "1", "");
            dtable.Rows.Add("11", "Murat", "0", "");
            dtable.Rows.Add("12", "Mustafa", "1", "");
            dtable.Rows.Add("13", "Mustafa", "1", "");
            dtable.Rows.Add("14", "Mustafa", "0", "");
            dtable.Rows.Add("15", "Mustafa", "1", "");


            foreach (DataRow Satir in dtable.Rows)
            {
                if (Satir["Kisi_Adi"].ToString() == "Murat")
                {
                    foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups)
                    {
                        if (Grup.Caption == Satir["Form_Adi"].ToString())
                        {
                            Grup.Visible = true;
                        }
                    }
                }
            }
        }
Link to comment
Share on other sites

Kardeş else Visible = false yapma, hata orda. Kontrollerin property lerinden false olarak ayarla tasarım esnasında. Sadece veri eşleşmesinde true yap.

 

sanırım şöyle:

 

[spoiler]

public void Yetki(string user)
        {
            SqlConnection mycon = new SqlConnection();
            SqlCommand mycommand = new SqlCommand();
            SqlDataAdapter adp = new SqlDataAdapter(mycommand);
            try
            {
                mycon.ConnectionString = Connect;
                mycon.Open();
                mycommand.Connection = mycon;
                mycommand.CommandText = "sp_Yetki_Listele";
                mycommand.CommandType = CommandType.StoredProcedure;
                mycommand.Parameters.Add("@username", SqlDbType.NVarChar, 20);
                mycommand.Parameters["@username"].Value = user;

                DataTable dtable = new DataTable();
                adp.Fill(dtable);

                foreach (DataRow Satir in dtable.Rows)
                {
                    foreach (DevExpress.XtraNavBar.NavBarGroup Grup in navBarControl1.Groups)
                    {
                        if (Grup.Caption == Satir["Form_Adi"].ToString())
                            Grup.Visible = true;
                    }
                    foreach (DevExpress.XtraNavBar.NavBarItem subitem in navBarControl1.Items)
                    {
                        if (subitem.Caption == Satir["Form_Adi"].ToString())
                            subitem.Visible = true;
                    }
                    foreach (DevExpress.XtraTab.XtraTabPage Tab in xtraTabControl1.TabPages)
                    {
                        if (Tab.Text == Satir["Form_Adi"].ToString())
                            Tab.PageVisible = true;
                    }
                }
            }
            catch (Exception e)
            {
                MessageBox.Show(Convert.ToString(e));
            }
            finally
            {
                mycon.Close();
            }
        } 

[/spoiler]

 

olmazsa pm ile team id at bakalım.

Link to comment
Share on other sites

sende kodların başına 

 

Grup1.Visible = false;

Grup2.Visible = false;

 

şeklinde önce grupları ya da kontroller neyse onların hepsinin (döngü ile de olabilir) görünürlüğünü false yaparsın, sonra kodları çalıştırdığın zaman tamamdır.

 
Link to comment
Share on other sites

  • 1 ay sonra...

Arkadaşlar merhaba,

 

enum ve sql ile form üzerinde yetki kodlaması nasıl yapılır acaba ?

Yani yetkiyi forma verecek ve eğer o yetkiler varsa kullanıcı form üzerindeki yetkisi ollduğu kadar görebilecek nesneleri  ! Böyle bişey mümkün mü onu da bilmiyorum gerçe, çünkü bütün nesnelere ayrı ayrı yetki vermek çok uzun iş gibi.

[Flags]
public enum Yetki
{
    Ekleme = 1,
    Silme = 2,
    Degistirme = 4
}
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   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

×   Your previous content has been restored.   Clear editor

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

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...