Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Agregar mecanismo para generación/elimitación de claves de carga un solo uso. #2

Open
mxgxw opened this issue Apr 18, 2020 · 0 comments
Assignees
Labels
enhancement New feature or request

Comments

@mxgxw
Copy link

mxgxw commented Apr 18, 2020

Para subir la data los códigos que permiten al usuario confirmar manualmente la carga de datos son almacenados en la coleccion codes en el documento uploadCodes. El documento contiene una cadena de texto en en formato de cadena:

["codigo1","codigo2","codigo3"]

Los códigos son estáticos y no pueden ser cambiados. Pero deberían de cambiarse cada vez que solicita a un usuario cargar datos en la plataforma.

La función que empuja los códigos al backend está almacenado aquí:

export async function storeUploadCodes(uploadCodes: string[]) {
// Prepare encrypter
const encryptionKey = await getEncryptionKey();
const customEncrypter = new CustomEncrypter(encryptionKey);
const payload = Buffer.from(JSON.stringify(uploadCodes));
// Encode payload
const payloadData = customEncrypter.encryptAndEncode(payload);
const writeResult = await admin.firestore().collection('codes').doc('uploadCode').set({uploadCode: payloadData.toString('base64')});
console.log('storeCodes:', 'upload code is stored successfully at', formatTimestamp(writeResult.writeTime.seconds));
}

Esta función no está expuesta de forma pública.

En este momento una vez se ingresa un código, puede ser utilizado por cualquier usuario para cargar la data ya que no se realiza ninguna verificación de si el código pertenece a un usuario específico. Se puede revisar la fución que valida la carga de datos aquí:

if (data) {
const uploadCodes = await retrieveUploadCodes();
console.log('getUploadToken:', `obtained ${uploadCodes.length} upload codes`);
valid = uploadCodes.find(x => x === data) !== undefined;
console.log('getUploadToken:', `data is ${valid ? 'valid' : 'not valid'} code`);
}

Algunas opciones a evaluar (para validación manual):

  • En la interfaz de usuario al momento que se hace clic en "Continuar" que se genere un código de un solo uso.
  • En la interfaz de usuario agregar una interfaz para profesionales de salud para que puedan generar códigos bajo demanda de un solo uso.

En caso la validación automática se podría intentar:

  • Al momento en que se detecta un ID nuevo en la carga de datos de contactos. Se genera una notificación vía CFM para que el usuario que ha estado en contacto cargue su data.

Hay una función no implementada que procesa los datos que podría ser utilizada para notificar a los usuarios que han estado cerca de un contacto y se les pide subir sus datos:

const processUploadedData = async (object: ObjectMetadata) => {

@mxgxw mxgxw added the enhancement New feature or request label Apr 18, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

2 participants