예제 #1
0
        private PxAuthorizationInfo getPxAuthorizationInfo(List <Authorization> pData)
        {
            PxAuthorizationInfo result = new PxAuthorizationInfo();
            long   tailYetkiNo         = 0;
            string tailYetkiKod        = null;
            int    tailIzin            = 0;

            foreach (Authorization a in pData)
            {
                PxResourceInfo resource = result.GetResource(a.VARLIKKOD);
                if (resource == null)
                {
                    resource = this.createNewResource(a, ref tailYetkiNo, ref tailYetkiKod, ref tailIzin);
                    result.AddResource(resource);
                }
                else
                {
                    PxPermissionInfo perm = resource.GetPermission(string.IsNullOrEmpty(a.YETKIKOD) ? tailYetkiKod : a.YETKIKOD);
                    if (perm == null)
                    {
                        perm = this.createNewPermission(a, ref tailYetkiNo, ref tailYetkiKod, ref tailIzin);
                    }
                    resource.AddPermission(perm);
                }
            }

            return(result);
        }
예제 #2
0
        private PxPermissionInfo createNewPermission(Authorization pAuth, ref long pTailYetkiNo, ref string pTailYetkiKod, ref int pTailIzin)
        {
            /*Oracle'dan gelen yetkilerde ilk yetki mutlaka üst bir node'dur ve yetki tanımı vardır.
             * Çünkü ilgili select ifadesi yetkiye göre resource'ları alıp getirmektedir ve tepe node'ların yetkisi daima
             * olmak zorundadır. Aksi takdirde tail değişkenleri doludur. */
            PxPermissionInfo perm = new PxPermissionInfo();

            if (pAuth.YETKINO.HasValue)
            {
                perm.ID      = pAuth.YETKINO.Value;
                pTailYetkiNo = pAuth.YETKINO.Value;
            }
            else
            {
                perm.ID = pTailYetkiNo;
            }


            if (!string.IsNullOrEmpty(pAuth.YETKIKOD))
            {
                perm.Code     = pAuth.YETKIKOD;
                pTailYetkiKod = pAuth.YETKIKOD;
            }
            else
            {
                perm.Code = pTailYetkiKod;
            }


            if (pAuth.IZIN > 0)
            {
                perm.IsGiven = true;
                pTailIzin    = pAuth.IZIN.Value;
            }
            else if (pAuth.IZIN < 0)
            {
                perm.IsGiven = false;
                pTailIzin    = pAuth.IZIN.Value;
            }
            else               //0 geliyorsa izin üstten alınır
            {
                if (pTailIzin > 0)
                {
                    perm.IsGiven = true;
                }
                else if (pTailIzin < 0)
                {
                    perm.IsGiven = false;
                }
                else
                {
                    //Hem üst node'dan gelen hem de resource tanımından gelen izin tanımının boş olması mümkün değil. Bir hata olmalı!
                    throw new InvalidOperationException("Both resource permission and rail permission cannot be zero. Please check resource-role-permission tree");
                }
            }

            return(perm);
        }
예제 #3
0
        public PxAuthorizationInfo GetAuthenticationMock()
        {
            PxAuthorizationInfo auth = new PxAuthorizationInfo();


            PxPermissionInfo perm1 = new PxPermissionInfo();

            perm1.ID      = 1;
            perm1.Code    = "READ";
            perm1.Name    = "Okuma";
            perm1.IsGiven = true;

            PxPermissionInfo perm2 = new PxPermissionInfo();

            perm2.ID      = 2;
            perm2.Code    = "WRITE";
            perm2.Name    = "Yazma";
            perm2.IsGiven = true;

            PxPermissionInfo p3 = new PxPermissionInfo();

            p3.ID      = 3;
            p3.Code    = "ACCESS";
            p3.Name    = "ERişim yetkisi";
            p3.IsGiven = true;


            PxResourceInfo r1 = new PxResourceInfo();

            r1.ID   = 1;
            r1.Code = "Home_Index";
            r1.Name = "Karşılama sayfası";
            r1.Type = Peak.Auth.Enums.PxResourceType.CodeBlock;
            r1.Permissions.Add(perm1.Code, perm1);
            r1.Permissions.Add(perm2.Code, perm2);

            PxResourceInfo r2 = new PxResourceInfo();

            r2.ID   = 2;
            r2.Code = "Home";
            r2.Name = "Home Controller - container";
            r2.Type = Peak.Auth.Enums.PxResourceType.CodeBlockContainer;
            r2.Permissions.Add(p3.Code, p3);

            auth.AuthorizationDate = DateTime.Now;
            auth.Source            = "MOCK CREATOR - Peak.Test.Console.Auth.PxAuthorizationTester";
            auth.Resources.Add(r1.Code, r1);
            auth.Resources.Add(r2.Code, r2);

            return(auth);
        }
예제 #4
0
        private PxResourceInfo createNewResource(Authorization pAuth, ref long pTailYetkiNo, ref string pTailYetkiKod, ref int pTailIzin)
        {
            PxResourceInfo resource = new PxResourceInfo();

            resource             = new PxResourceInfo();
            resource.Code        = pAuth.VARLIKKOD;
            resource.ID          = pAuth.VARLIKNO;
            resource.Name        = pAuth.VARLIKAD;
            resource.ParentID    = pAuth.UST_VARLIKNO;
            resource.Permissions = new Dictionary <string, PxPermissionInfo>();


            PxPermissionInfo perm = this.createNewPermission(pAuth, ref pTailYetkiNo, ref pTailYetkiKod, ref pTailIzin);

            resource.AddPermission(perm);

            return(resource);
        }