Pregunta:
¿Cómo podéis crear, modificar, etc., configuraciones de seguridad como Usuarios y Roles programáticamente?
Respuesta:
Podéis usar las clases del paquete Security en el NAMESPACE %SYS. Por ejemplo Security.Roles o Security.Users.
Por supuesto, para llevar a cabo estas acciones, necesitaréis la autorización correspondiente.
Aquí tenéis un pequeño ejemplo usando Security.Roles:
// Create a Role
%SYS>Set status = ##class(Security.Roles).Create("testRole","a test Role","%Development:U,%DB_USER:R")
// Creation was successful
%SYS>Write status
1
// Now lets examine the Role created
%SYS>Set status = ##class(Security.Roles).Get("testRole",.properties)
// We got the properties correctly
%SYS>Write status
1
// The properties were returned by reference
%SYS>ZWrite properties
properties("Description")="a test Role"
properties("GrantedRoles")=""
properties("Resources")="%DB_USER:R,%Development:U"
// Now we want to add another permission
%SYS>Set properties("Resources")=properties("Resources")_",%DB_SAMPLES:RW"
// And modify our Role
%SYS>Set status = ##class(Security.Roles).Modify("testRole",.properties)
%SYS>Write status
1
// Let's verify this worked
%SYS>Set status = ##class(Security.Roles).Get("testRole",.latestProperties)
%SYS>ZWrite latestProperties
latestProperties("Description")="a test Role"
latestProperties("GrantedRoles")=""
latestProperties("Resources")="%DB_SAMPLES:RW,%DB_USER:R,%Development:U"