Closed wachunei closed 7 years ago
+1
Sería bueno para tomar conciencia. Hartos de mis grupos hacen los update pasando el ctx.request.body directamente, se los voy a comentar de todas maneras.
On Tue, Sep 26, 2017 at 15:02 Pedro Pablo Aste Kompen < notifications@github.com> wrote:
¿Debería el template debería tener soporte para esto?
O depende de cada implementador filtrar los parámetros del ctx.request.body cuando se están haciendo patches a los modelos?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/IIC2513-2017-2/template/issues/25, or mute the thread https://github.com/notifications/unsubscribe-auth/AGapl67bC8iQfXU996d21K893IupGRvPks5smTwugaJpZM4PkpkH .
-- Rodolfo Palma Otero +56998432815
Vamos a permitir uso de lodash? en vez de seleccionar parámetros a mano
podrían usar lodash pienso yo
Tengo 3 comentarios al respecto:
fields
disponible en varios de los métodos de modelo (como create, save, update, etc). Esto te permite entregar un arreglo de las propiedades a considerar… todo el resto se ignoran (es como pasarle directamente la white list de los strong params en Rails). Eso es lo que les recomendaré usar en clases.El caso que quiero usar de fields
es curioso, porque no existe una opción símil de _.omit
de lodash. Estoy haciendo registro de usuario y hay un campo role
que es sensible (porque pueden poner admin
y pwn3d), ¿cuál sería la mejor alternativa?
fields
y tener todos los campos menos role
.const {role, ...userParams } = ctx.request.body;
._.omit
y pasarle _.omit(ctx.request.body, ['role'])
a la creación del modelo.{ ...ctx.request.body, role: 'user' }
.¿Qué opinan?
Creo que la mejor práctica es white list en lugar de black list… de hecho los strong params creo que tampoco tienen algo como omit
. Además de role probablemente tengas también otras cosas que no querrías que se actualicen en todo caso, como los timestamps, id y eventualmente otros atributos internos que, aunque no sean riesgo de escalamiento de privilegios, igual deberías impedirlo.
Si te da lata escribir todos los fields siempre, siempre puedes tener un método en el modelo que te los entrega/genera.
¿Debería el template debería tener soporte para esto?
O depende de cada implementador filtrar los parámetros del
ctx.request.body
cuando se están haciendo patches a los modelos?