Konu: foxpro ile yazilan programin sifre ile ozelliklerini kisitlamak
arkadaslar foxpro ile yazdigimiz bir programin bazi ozelliklerini sifre ile kisitlayabilmek icin nasil bir yontem izleyebiliriz dersiniz
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
arkadaslar foxpro ile yazdigimiz bir programin bazi ozelliklerini sifre ile kisitlayabilmek icin nasil bir yontem izleyebiliriz dersiniz
anladığım kadarı ile,kullanıcılara bazı menü ve modüllere yetki vererek kısıtlama yapmak istiyorsun.Öncelikle yapman gereken bir user tablosu oluşturup,kullanıcıları adı ve şifreleri bu tabloda tutman,programa ilk girişte bu kullanıcı adı ve şifreyi sorgulatıp kullanıcıyı sisteme öyle alabilirsin.daha sonra,yetkilendirme bilgilerini tutacağın bir tablo oluşturman gerekecek.buradada gruplar oluşturabilirsin,herkeze tek tek yetki vermekten se bir gruba (örneğin MUHASEBE GRUBU) yetki tanımlamak daha kolay ve pratik olur.Bu yetki tablosunda hangi modüle,yada ekrana erişim izni vereceksen o bilgileri tutmalısın.işin zor tarafına gelince,her ekranda yada her raporda,Programı kullanan user in bu işlemi yapmaya yetkisi var mı yok mu? bu tablodan sorgulaman gerekecek,bu bayağı zahmetli bir iş,başlangıçta iyi planlama yapmazsan sıkıntı çekebilirsin.Benim adetim,önce programı yazarım,sora tek tek tüm menüleri bu mantıkla yetkilendirme işlemine geçerim.bayağı uğraştıran bir konudur vesselam.
neyzen ile aynı mantık olmasına rağmen ben başka bir uygulama yapıyorum:
Her yetkiseviyesi için ayrı menu yapıyorum. Kullanıcı şifresini girince yetki seviyesine göre gelen menüden olmayanlara zaten erişemiyor, aşağıda bir alıntı:
* Click Event
WITH This.P[2].Yetkiliste
RELEASE MENUS
DO CASE
CASE .List(.ListIndex,2)=UC && yetkilistenin 2. verisi
DO c:\fox\at9c\menus\menuana3.mpr WITH ThisForm,.T.
CASE .List(.ListIndex,2)=IKI
DO c:\fox\at9c\menus\menuana2.mpr WITH ThisForm,.T.
CASE .List(.ListIndex,2)=BIR
DO c:\fox\at9c\menus\menuana1.mpr WITH ThisForm,.T.
OTHE
RELEASE MENUS && başka yetkibilgisi, hiç menü yok, hiç erişim yok
ENDC
ENDW
Ben menü oluşturulurken kişiye özel menü oluşturuyorum. Sizlerin de bahsettiği şekilde yetkilerin tutulduğu bir tablom var. Her menü alanı bu tabloda field olarak var ve true/false olarak duruyor.
Aşağıdaki basit örnekte menü köklerinden menü maddesine kadar yetki kontrolü yapılarak menü sistemi oluşturuluyor. Önce YETKİ kütüğünden kullanıcının yetkilerinin olduğu kayıt bulunuyor, sonra da her alan/menü için karşılaştırılarak menü oluşturuluyor.
IF ODE_PAD && Ödeme menüsüne yetkili olup olmadığını belirten field true/false
DEFINE PAD odemeler OF _MSYSMENU PROMPT "Ödemeler" COLOR SCHEME 3 KEY ALT+O, ""
ON PAD odemeler OF _MSYSMENU ACTIVATE POPUP odemeler
DEFINE POPUP odemeler MARGIN RELATIVE SHADOW COLOR SCHEME 4
IF ODE_RAPOR && Ödeme raporlarını görmeye yetkili olup olmadığını belirten field true/false
DEFINE BAR 1 OF odemeler PROMPT "Ödeme Girişi"
ENDIF
* ..............
* ..............
ENDIF