UserConfig¶
Resumen¶
Esta página describe la API UserConfig, con la que una app almacena y lee los valores de configuración de los usuarios: valores tipados, sensibles, indexados y de carga diferida, y los métodos para guardarlos, leerlos, gestionarlos y buscarlos. Está dirigida a quienes desarrollan apps.
Fuente: documentación de Nextcloud, «developer_manual/digging_deeper/config/userconfig», versión 3ad9158, licencia CC BY 3.0; traducida y adaptada para APS Conecta Gestión.
Nuevo en la versión 31.
Desde la v31, APS Conecta Gestión incluye una nueva API para gestionar las preferencias de los usuarios.
Visión general de los conceptos¶
APS Conecta Gestión incluye una API para almacenar los valores de configuración de los usuarios y acceder a ellos.
Además de almacenar los valores de configuración y acceder a ellos, IUserConfig incorpora distintos conceptos:
Nota
Consultar los Conceptos del Lexicon para saber más sobre Lexicon, una forma de definir por completo las claves de configuración y evitar conflictos al usarlas en el código.
Valores de configuración tipados¶
Para garantizar una mayor estabilidad del código, se impone el tipo de los valores de configuración. El tipo se establece una sola vez, al crearse en la base de datos, y no se puede cambiar.
Nota
Los valores almacenados antes de APS Conecta Gestión 31 se tipan automáticamente como mixed. Sin embargo, no es posible establecer manualmente un valor como mixed.
Los valores no establecidos como mixed deben recuperarse con el método correspondiente.
Sensibilidad de los valores¶
Al almacenar un nuevo valor de configuración, se puede establecer como sensitive. Los valores de configuración establecidos como sensitive se ocultan de los informes del sistema y se almacenan cifrados en la base de datos.
setValueString(
'user',
'myapp',
'mykey',
'myvalue',
flags: IUserConfig::FLAG_SENSITIVE
);
Nota
Una vez establecido como sensitive, solo se puede revertir con updateSensitive()/updateGlobalSensitive()
Valores indexados¶
Si se prevé una búsqueda por valor de configuración, este se puede establecer como indexed.
setValueString(
'user',
'myapp',
'mykey',
'myvalue',
flags: IUserConfig::FLAG_INDEXED
);
Nota
Los valores de configuración establecidos como indexed se almacenan en un campo indexado de la base de datos, con una longitud limitada a 64 caracteres.
Carga diferida¶
Para aligerar la carga de la configuración de los usuarios, existe la posibilidad de establecer valores de configuración como lazy. Todos los valores de configuración lazy se cargan desde la base de datos en cuanto se lee uno.
setValueString(
'user',
'myapp',
'mykey',
'myvalue',
lazy: true
);
Nota
Marcar como lazy tantas entradas de tipo «bloque grande de texto» (json, pares de claves, ...) como sea posible,
marcar como lazy las entradas que se necesitan en endpoints poco concurridos,
no marcar como lazy partes del código que podrían llamarse durante la carga global de todas las páginas.
Para recuperar el valor de configuración habrá que especificar que está almacenado como lazy.
getValueString(
'user',
'myapp',
'mykey',
'default',
lazy: true
);
Consumir la API UserConfig¶
Para consumir la API, primero hay que inyectar \OCP\Config\IUserConfig
Almacenar un valor de configuración¶
La API proporciona varios métodos para almacenar un valor de configuración, según su tipo. El comportamiento general de cada uno de esos métodos es llamarlos con:
ID de usuario (string)
ID de app (string),
clave de configuración (string),
valor de configuración,
indicador de carga diferida (booleano),
indicadores (int)
El booleano devuelto será true si fue necesaria una actualización de la base de datos.
setValueString(string $userId, string $app, string $key, string $value, bool $lazy, int $flags)setValueInt(string $userId, string $app, string $key, int $value, bool $lazy, int $flags)setValueFloat(string $userId, string $app, string $key, float $value, bool $lazy, int $flags)setValueBool(string $userId, string $app, string $key, bool $value, bool $lazy, int $flags)setValueArray(string $userId, string $app, string $key, array $value, bool $lazy, int $flags)
Recuperar un valor de configuración¶
Los valores de configuración se deben recuperar con uno de los métodos de retorno tipado de la lista:
getValueString(string $userId, string $app, string $key, string $default, bool $lazy)getValueInt(string $userId, string $app, string $key, int $default, bool $lazy)getValueFloat(string $userId, string $app, string $key, float $default, bool $lazy)getValueBool(string $userId, string $app, string $key, bool $default, bool $lazy)getValueArray(string $userId, string $app, string $key, array $default, bool $lazy)
Gestionar las claves de configuración¶
getUserIds(string $appId)devuelve la lista de usuarios con valores de configuración almacenados para una appgetApps(string $userId)devuelve la lista de apps con valores de configuración almacenados para un usuariogetKeys(string $userId, string $app)devuelve la lista de claves de configuración almacenadas para un usuario y una apphasKey(string $userId, string $app, string $key, ?bool $lazy)devuelve TRUE si se encuentra la claveisSensitive(string $userId, string $app, string $key, ?bool $lazy)devuelve TRUE si el valor está establecido como sensitiveisIndexed(string $userId, string $app, string $key, ?bool $lazy)devuelve TRUE si el valor está establecido como indexedisLazy(string $userId, string $app, string $key)devuelve TRUE si el valor está establecido como lazyupdateSensitive(string $userId, string $app, string $key, bool $sensitive)actualiza el estado sensitive de un valor de configuración para un usuario concretoupdateGlobalSensitive(string $app, string $key, bool $sensitive)actualiza el estado sensitive de un valor de configuración para todos los usuariosupdateIndexed(string $userId, string $app, string $key, bool $sensitive)actualiza el estado indexed de un valor de configuración para un usuario concretoupdateGlobalIndexed(string $app, string $key, bool $sensitive)actualiza el estado indexed de un valor de configuración para todos los usuariosupdateLazy(string $userId, string $app, string $key, bool $lazy)actualiza el estado lazy de un valor de configuración para un usuario concretoupdateGlobalLazy(string $app, string $key, bool $lazy)actualiza el estado lazy de un valor de configuración para todos los usuariosgetValueType(string $userId, string $app, string $key, bool $lazy)devuelve la máscara de bits que define el tipo de un valor de configuracióngetValueFlags(string $userId, string $app, string $key, bool $lazy)devuelve la máscara de bits que define los indicadores de un valor de configuracióndeleteUserConfig(string $userId, string $app, string $key)elimina una clave de configuración y su valor para un usuariodeleteAllUserConfig(string $userId)elimina todos los valores de configuración de un único usuariodeleteKey(string $app, string $key)elimina una clave de configuración y su valor para todos los usuariosdeleteKey(string $app, string $key)elimina una clave de configuración y su valor para todos los usuariosdeleteApp(string $app)elimina todas las claves de configuración de una app para todos los usuarios
Nota
Algunos métodos permiten que $lazy sea null, lo que significa que la búsqueda se extenderá a todos los valores de configuración, sean lazy o no.
Varios¶
La API también proporciona herramientas adicionales para usos más amplios
getValues(string $userId, string $app, string $prefix, bool $filtered)devuelve todos los valores de configuración almacenados.$filteredse puede establecer en TRUE para ocultar los valores sensitive en el array devueltogetAllValues(string $userId, bool $filtered)devuelve todos los valores de configuración almacenados.$filteredse puede establecer en TRUE para ocultar los valores sensitive en el array devueltogetValuesByApps(string $userId, string $key, bool $lazy, ?ValueType $typedAs)devuelve todos los valores de configuración almacenados por app, según una clave de configuración concreta.getValuesByUsers(string $app, string $key, ?ValueType $typedAs, array $userIds)devuelve todos los valores de configuración almacenados por usuario, según una clave de configuración concreta.searchUsersByValueString(string $app, string $key, string $value, bool $caseInsensitive)devuelve la lista de usuarios que tienen una clave de configuración establecida en un valor concreto.searchUsersByValues(string $app, string $key, array $values)devuelve la lista de usuarios que tienen una clave de configuración establecida en un valor de una lista.searchUsersByValueInt(string $app, string $key, string $value)devuelve la lista de usuarios que tienen una clave de configuración establecida en un valor concreto.searchUsersByValueBool(string $app, string $key, string $value)devuelve la lista de usuarios que tienen una clave de configuración establecida en un valor concreto.getDetails(string $userId, string $app, string $key)obtiene todos los detalles de una clave de configuración.clearCache(string $userId, bool $reload)vacía la caché interna de un usuario concretoclearCacheAll()vacía toda la caché interna