lunes, 9 de septiembre de 2013

PeopleSoft - Revisión de Permisos y Accesos

Yo sé que este query esta muuy largo... pero esta muy digerido. Te da por usuario, roles, listas de permisos, rutas en el portal (inglés y español), menú y componente al cuál se tiene acceso.


SELECT AD.ROLEUSER, AC.ROLENAME, AC.CLASSID, 
rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim( G.PORTAL_LABEL)) || ' > ' )) || rtrim(ltrim( F.PORTAL_LABEL)) || ' > ')) || rtrim(ltrim( E.PORTAL_LABEL )) || ' > ')) || rtrim(ltrim( D.PORTAL_LABEL)) || ' > ')) || rtrim(ltrim( C.PORTAL_LABEL)) || ' > ' )) || rtrim(ltrim( B.PORTAL_LABEL)) || ' > ')) || rtrim(ltrim( A.PORTAL_LABEL)) AS Ruta_Ingles, 
rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(rtrim(ltrim(GL.PORTAL_LABEL)) || ' > ' )) || rtrim(ltrim(FL.PORTAL_LABEL)) || ' > ')) || rtrim(ltrim(EL.PORTAL_LABEL )) || ' > ')) || rtrim(ltrim(DL.PORTAL_LABEL)) || ' > ')) || rtrim(ltrim(CL.PORTAL_LABEL)) || ' > ' )) || rtrim(ltrim(BL.PORTAL_LABEL)) || ' > ')) || rtrim(ltrim(AL.PORTAL_LABEL)) AS Ruta_Español,
A.PORTAL_URI_SEG1 AS Menu, 
A.PORTAL_URI_SEG2 as Componente 
  FROM ((((((((
  (PSPRSMDEFN A LEFT OUTER JOIN PSPRSMDEFNLANG AL 
           ON A.PORTAL_NAME = AL.PORTAL_NAME 
                       AND A.PORTAL_REFTYPE = AL.PORTAL_REFTYPE 
  AND A.PORTAL_OBJNAME = AL.PORTAL_OBJNAME 
   ) LEFT OUTER JOIN  
   (PSPRSMDEFN B LEFT OUTER JOIN PSPRSMDEFNLANG BL 
        ON B.PORTAL_NAME = BL.PORTAL_NAME 
AND B.PORTAL_REFTYPE = BL.PORTAL_REFTYPE 
AND B.PORTAL_OBJNAME = BL.PORTAL_OBJNAME 
) ON  A.PORTAL_PRNTOBJNAME = B.PORTAL_OBJNAME AND (A.PORTAL_NAME = 'EMPLOYEE' AND A.PORTAL_NAME = B.PORTAL_NAME )
  ) LEFT OUTER JOIN 
  (  PSPRSMDEFN C LEFT OUTER JOIN PSPRSMDEFNLANG CL 
             ON C.PORTAL_NAME = CL.PORTAL_NAME 
AND C.PORTAL_REFTYPE = CL.PORTAL_REFTYPE 
AND C.PORTAL_OBJNAME = CL.PORTAL_OBJNAME 
) ON B.PORTAL_NAME = C.PORTAL_NAME 
AND B.PORTAL_REFTYPE = C.PORTAL_REFTYPE 
AND B.PORTAL_PRNTOBJNAME = C.PORTAL_OBJNAME 
AND B.PORTAL_NAME = C.PORTAL_NAME
) LEFT OUTER JOIN 
              (PSPRSMDEFN D LEFT OUTER JOIN  PSPRSMDEFNLANG DL 
            ON D.PORTAL_NAME    = DL.PORTAL_NAME 
                              AND D.PORTAL_REFTYPE = DL.PORTAL_REFTYPE 
                              AND D.PORTAL_OBJNAME = DL.PORTAL_OBJNAME 
   ) ON  C.PORTAL_NAME = D.PORTAL_NAME 
    AND C.PORTAL_REFTYPE = D.PORTAL_REFTYPE 
    AND C.PORTAL_PRNTOBJNAME = D.PORTAL_OBJNAME 
    AND C.PORTAL_NAME = D.PORTAL_NAME 
  ) LEFT OUTER JOIN 
   (PSPRSMDEFN E LEFT OUTER JOIN PSPRSMDEFNLANG EL 
            ON E.PORTAL_NAME = EL.PORTAL_NAME 
   AND E.PORTAL_REFTYPE = EL.PORTAL_REFTYPE 
   AND E.PORTAL_OBJNAME = EL.PORTAL_OBJNAME 
  ) ON D.PORTAL_NAME = E.PORTAL_NAME 
   AND D.PORTAL_REFTYPE = E.PORTAL_REFTYPE 
   AND D.PORTAL_PRNTOBJNAME = E.PORTAL_OBJNAME 
  ) LEFT OUTER JOIN 
    (  PSPRSMDEFN F LEFT OUTER JOIN PSPRSMDEFNLANG FL 
               ON F.PORTAL_NAME    = FL.PORTAL_NAME 
  AND F.PORTAL_REFTYPE = FL.PORTAL_REFTYPE 
  AND F.PORTAL_OBJNAME = FL.PORTAL_OBJNAME 
    ) ON  E.PORTAL_NAME = F.PORTAL_NAME 
     AND E.PORTAL_REFTYPE = F.PORTAL_REFTYPE 
  AND E.PORTAL_PRNTOBJNAME = F.PORTAL_OBJNAME 
  ) LEFT OUTER JOIN 
    (PSPRSMDEFN G LEFT OUTER JOIN PSPRSMDEFNLANG GL 
             ON G.PORTAL_NAME = GL.PORTAL_NAME 
                              AND G.PORTAL_REFTYPE = GL.PORTAL_REFTYPE 
                              AND G.PORTAL_OBJNAME = GL.PORTAL_OBJNAME 
   ) ON F.PORTAL_NAME = G.PORTAL_NAME 
    AND F.PORTAL_REFTYPE = G.PORTAL_REFTYPE 
    AND F.PORTAL_PRNTOBJNAME = G.PORTAL_OBJNAME 
  ) LEFT OUTER JOIN 
    (PSPRSMDEFN H LEFT OUTER JOIN PSPRSMDEFNLANG HL 
             ON H.PORTAL_NAME = HL.PORTAL_NAME 
    AND H.PORTAL_REFTYPE = HL.PORTAL_REFTYPE 
    AND H.PORTAL_OBJNAME = HL.PORTAL_OBJNAME 
   ) ON  G.PORTAL_NAME = H.PORTAL_NAME 
    AND G.PORTAL_REFTYPE = H.PORTAL_REFTYPE 
    AND G.PORTAL_PRNTOBJNAME = H.PORTAL_OBJNAME 
  ) LEFT OUTER JOIN 
    (PSPRSMDEFN I LEFT OUTER JOIN PSPRSMDEFNLANG IL 
             ON I.PORTAL_NAME    = IL.PORTAL_NAME 
    AND I.PORTAL_REFTYPE = IL.PORTAL_REFTYPE 
                              AND I.PORTAL_OBJNAME = IL.PORTAL_OBJNAME 
  ) ON  H.PORTAL_NAME = I.PORTAL_NAME 
   AND H.PORTAL_REFTYPE = I.PORTAL_REFTYPE 
   AND H.PORTAL_PRNTOBJNAME = I.PORTAL_OBJNAME 
), 
 PSPRSMPERM AB, 
 PSROLECLASS AC, 
 PSROLEUSER AD 
  where  B.PORTAL_REFTYPE  = 'F' 
     AND A.PORTAL_NAME     = AB.PORTAL_NAME 
     AND A.PORTAL_REFTYPE  = AB.PORTAL_REFTYPE 
     AND A.PORTAL_OBJNAME = AB.PORTAL_OBJNAME 
AND AC.CLASSID = AB.PORTAL_PERMNAME 
AND AC.ROLENAME = AD.ROLENAME 
AND A.PORTAL_URI_SEG2 <> ' ' 
 AND AD.ROLEUSER = 'VP1'
 order by 1,4,2,3


1 comentario:

  1. Muy buena sentencia y muy útil... hace tiempo necesitaba algo así, finalmente lo tuve que resolver por medio de varias sentencias y reportes (SQR) y Application Engine... y una vez que tenia toda la información, la reunía en un Excel...Estas son el tipo de sentencias que se deben de quedar en la librería de utilerías de todo programador de PeopleSoft!!!

    ResponderBorrar

Translate