En esta sección:
Cómo: |
El atributo ACCESS determina lo que puede hacer un usuario con un origen de datos.
El atributo opcional RESTRICT limita más aún el acceso de un usuario a determinados campos, valores o segmentos.
El atributo RESTRICT=VALUE admite los criterios permitidos por la frase IF. El atributo RESTRICT=VALUE_WHERE admite todos los criterios permitidos en una frase WHERE, incluidos la comparación entre campos y el uso de funciones. La expresión WHERE se pasará a un adaptador configurado siempre que sea posible.
...RESTRICT=level, NAME={name|SYSTEM} [,VALUE=test|],$
o
...RESTRICT=VALUE_WHERE, NAME=name, VALUE=expression; ,$
donde:
Puede ser uno de los siguientes:
FIELD especifica que el usuario no puede acceder a los campos nombrados con el parámetro NAME.
SEGMENT especifica que el usuario no puede acceder a los segmentos nombrados con el parámetro NAME.
SAME especifica que el usuario tiene las mismas restricciones que el usuario citado el parámetro NAME. No se aceptan más de cuatro usuarios anidados de SAME.
NOPRINT especifica que el campo citado el parámetro NAME o SEGMENT puede ser mencionado en una declaración de solicitud, aunque no aparecerá. Esta opción no es compatible con los orígenes de datos relacionales.
Es el nombre del campo o segmento que se va a restringir. Cuando se usa después de NOPRINT, solo puede tratarse de un nombre de campo. NAME=SYSTEM, que solo puede usarse con pruebas de valores, restringe todos los segmentos del origen de datos, incluidos los segmentos descendientes. Se puede especificar varios campos o segmentos emitiendo el atributo RESTRICT en repetidas ocasiones para un usuario determinado.
Nota: Las restricciones de valores hacen que NAME=segment restrinja el segmento citado y cualquier segmento inferior de la jerarquía, independientemente de que se cambie la vista de recuperación mediante una vista alternativa del archivo. Es decir que, si hay una restricción de valor en un segmento principal y una vista alternativa del archivo o un join convierten el segmento secundario en la nueva raíz, la restricción de valor del segmento principal, original seguirá cumpliéndose en la nueva raíz.
Especifica que el usuario sólo tiene acceso a los valores que cumplen con la prueba descrita en el parámetro test.
Es la prueba de valores que deben pasar los datos antes de que el usuario pueda acceder a éstos. La prueba es una expresión compatible con las frases IF.
Especifica que el usuario sólo tiene acceso a los valores que cumplen con la prueba descrita en el parámetro expression.
Es la prueba de valores que deben pasar los datos antes de que el usuario pueda acceder a éstos. La prueba es una expresión compatible con las frases WHERE.
Añada las siguientes declaraciones DBA al final del archivo máster GGSALES. Estas declaraciones permiten que el usuario USER1 acceda a la región Oeste y los productos que empiecen por la letra C:
END DBA = USERD,$ USER = USER1, ACCESS = R, NAME = SALES01, RESTRICT = VALUE_WHERE, VALUE = REGION EQ 'West' AND PRODUCT LIKE 'C%'; ,$
La siguiente solicitud establece la contraseña en USER1 y suma las ventas en dólares y unidades por REGION, CATEGORY y PRODUCT:
SET USER = USER1 TABLE FILE GGSALES SUM DOLLARS UNITS BY REGION BY CATEGORY BY PRODUCT END
La salida solo muestra aquellas regiones y productos que cumplan con la expresión WHERE en el archivo máster:
Region Category Product Dollar Sales Unit Sales ------ -------- ------- ------------ ---------- West Coffee Capuccino 915461 72831 Food Croissant 2425601 197022 Gifts Coffee Grinder 603436 48081 Coffee Pot 613624 47432
Si se cambia el atributo RESTRICT=VALUE_WHERE por un atributo RESTRICT=VALUE, la expresión no es válida, se genera el siguiente mensaje y la solicitud no se ejecuta:
(FOC002) A WORD IS NOT RECOGNIZED: LIKE 'C%'
USER=BILL ,ACCESS=R ,RESTRICT=SEGMENT ,NAME=COMPSEG,$
Cómo: |
El atributo RESTRICT identifica los segmentos o campos a los que no puede acceder el usuario. Se puede acceder a cualquier cosa que no aparezca citada en el atributo RESTRICT.
Sin el atributo RESTRICT el usuario puede acceder a todo el origen de datos. Es posible que las acciones disponibles para el usuario estén limitadas a la lectura, escritura o actualización de nuevos registros, aunque se pueden usar todos los registros del origen de datos para estas operaciones.
...RESTRICT=level, NAME=name,$
donde:
Puede ser uno de los siguientes:
FIELD especifica que el usuario no puede acceder a los campos nombrados con el parámetro NAME.
SEGMENT especifica que el usuario no puede acceder a los segmentos nombrados con el parámetro NAME.
SAME especifica que el usuario tiene las mismas restricciones que el usuario citado el parámetro NAME.
NOPRINT especifica que el campo citado el parámetro NAME o SEGMENT puede ser mencionado en una declaración de solicitud, aunque no aparecerá. Cuando se usa después de NOPRINT, NAME sólo puede tratarse de un nombre de campo. Esta opción no es compatible con los orígenes de datos relacionales.
Es el nombre del campo o segmento que se va a restringir. Cuando se usa después de NOPRINT, solo puede tratarse de un nombre de campo.
NAME=SYSTEM, que solo puede usarse con pruebas de valores, restringe todos los segmentos del origen de datos, incluidos los segmentos descendientes. Se puede especificar varios campos o segmentos emitiendo el atributo RESTRICT en repetidas ocasiones para un usuario determinado.
Nota:
USER=HARRY, ACCESS=R, RESTRICT=FIELD, NAME=A,$ RESTRICT=SEGMENT, NAME=B,$
En el siguiente ejemplo Bill sólo tiene acceso de lectura en la totalidad del origen de datos, a excepción del segmento COMPSEG:
USER=BILL ,ACCESS=R ,RESTRICT=SEGMENT ,NAME=COMPSEG,$
En el siguiente ejemplo Sally y Harry tienen los mismos privilegios de acceso que BILL. Además, Sally no puede leer el campo SALARY.
USER=BILL, ACCESS=R, RESTRICT=VALUE, NAME=IDSEG, VALUE=DIVISION EQ 'WEST',$ USER=SALLY, ACCESS=R, RESTRICT=SAME, NAME=BILL,$ RESTRICT=FIELD, NAME=SALARY,$ USER=HARRY, ACCESS=R, RESTRICT=SAME, NAME=BILL,$
Nota: Las restricciones de acceso de un segmento también afectan a sus descendientes.
Cómo: |
También puede restringir los valores a los que puede acceder un usuario, mediante el uso de una condición de prueba en su atributo RESTRICT. El usuario sólo puede usar los valores que satisfagan la condición de prueba.
Puede restringir los valores de formas: restringiendo los valores del origen de datos que puede leer el usuario, o restringiendo lo que éste puede escribir en el mismo. Las restricciones constituyen dos funciones independientes: una no implica la otra. Puede usar el atributo ACCESS para especificar si los valores escritos o leídos por el usuario están restringidos.
Puede restringir los valores que puede leer un usuario, estableciendo ACCESS=R y RESTRICT=VALUE. Este tipo de restricción evita que el usuario pueda ver cualquier valor de datos excepto aquellos que cumplan con la condición de prueba proporcionada en el atributo RESTRICT. El atributo RESTRICT con ACCESS=R funciona como una declaración de IF involuntaria, en una solicitud de informe. Por tanto, la sintaxis de las restricciones de valores de ACCESS=R deben seguir las reglas para las pruebas IF en solicitudes de informes.
Nota: RESTRICT=VALUE no es compatible en WebFOCUS Maintain.
...ACCESS=R, RESTRICT=VALUE, NAME=name, VALUE=test,$
donde:
Es el nombre del segmento que, si aparece citado, activa la prueba. Para especificar todos los segmentos del origen de datos, especifique NAME=SYSTEM.
Es la prueba que se va a realizar.
USER=TONY, ACCESS=R, RESTRICT=VALUE, NAME=IDSEG, VALUE=DIVISION EQ 'WEST',$
Con esta restricción Tony sólo puede ver los registros de la división oeste.
La expresión de la prueba se introduce después de VALUE=. La sintaxis de la condición de prueba es la misma que utiliza el comando TABLE para filtrar los registros, a excepción del término IF, que no precede a la frase. (Las condiciones de filtro en el comando TABLE aparecen descritas en el manual Cómo crear informes con el lenguaje WebFOCUS .) Si se están realizando pruebas con varios campos, deben introducirse atributos VALUE independientes. Cada prueba debe citar el segmento en que se está aplicando. Por ejemplo:
USER=DICK, ACCESS=R, RESTRICT=VALUE, NAME=IDSEG, VALUE=DIVISION EQ 'EAST' OR 'WEST',$ NAME=IDSEG, VALUE=SALARY LE 10000,$
Si una de las condiciones de prueba supera la longitud de línea permitida, puede introducirla por secciones. Cada sección debe comenzar por el atributo VALUE= y finalizar por el terminador (,$). Por ejemplo:
USER=SAM, ACCESS=R, RESTRICT=VALUE, NAME=IDSEG, VALUE=DIVISION EQ 'EAST' OR 'WEST',$ VALUE=OR 'NORTH' OR 'SOUTH',$
Nota: La segunda línea (y las posteriores) de una restricción de valor debe empezar por la palabra clave OR.
Además, puede aplicar las condiciones de prueba a los segmentos principales de los segmentos correspondientes. Consulte el siguiente ejemplo:
USER=DICK, ACCESS=R, RESTRICT=VALUE, NAME=IDSEG, VALUE=DIVISION EQ 'EAST' OR 'WEST',$ NAME=IDSEG, VALUE=SALARY LE 10000,$
El campo SALARY, en realidad, forma parte de un segmento llamado COMPSEG. Puesto que la prueba se ha especificado con NAME=IDSEG, ésta actúa en las solicitudes de su segmento principal, IDSEG. En este caso, la solicitud PRINT FULLNAME sólo imprimiría los nombres completos de las personas que cumpliesen con esta prueba, es decir, de las personas con salarios iguales o inferiores a $10,000, aunque la prueba se esté realizando en un campo que sea parte de un segmento descendiente de IDSEG. Sin embargo, si la prueba se ha hecho efectiva en COMPSEG, o sea NAME=COMPSEG, se podrá recuperar el nombre completo de todas las personas del origen de datos, aunque sólo los salarios de las que cumplen con la condición de prueba.
En muchos casos, resulta útil emitir las dos restricciones de valores, ACCESS=W (para mantenimiento de datos) y ACCESS=R (para TABLE), para un usuario. Esto limita los valores que puede escribir el usuario en un origen de datos, además de los valores de datos que puede ver. Esto se consigue emitiendo un atributo RESTRICT=VALUE con ACCESS=R, para evitar que el usuario pueda ver cualquier valor que no aparezca especificado en la condición de prueba. A continuación puede emitir un atributo RESTRICT=VALUE con ACCESS=W, que especifique las restricciones de escritura establecidas para el usuario. No se puede usar ACCESS=RW para llevar a cabo esta operación.
Nota: Las restricciones de escritura se aplican a recursos de mantenimiento de datos que no aparecen en este manual. Para más información, consulte la documentación de Maintain.
WebFOCUS |