#6744 fix worker setPassword #2027
Labels
No Milestone
No Assignees
3 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: verdnatura/salix#2027
Loading…
Reference in New Issue
No description provided.
Delete Branch "6744-fixWorkerSetPassword"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
@ -39,2 +35,2 @@
await models.VnUser.setPassword(args.workerFk, args.newPass, myOptions);
await models.VnUser.updateAll({id: args.workerFk}, {emailVerified: true}, myOptions);
try {
const ishimself = userId === workerId;
isHimself
WIP: 6744 fix worker setPasswordto 6744 fix worker setPassword@ -39,2 +35,2 @@
await models.VnUser.setPassword(args.workerFk, args.newPass, myOptions);
await models.VnUser.updateAll({id: args.workerFk}, {emailVerified: true}, myOptions);
try {
const isHimself = userId === workerId;
No pondría aquí
isHimself
, para cambiarse la contraseña uno mismo que se utilice el método tradicional que yahace las comprobaciones de seguridad correspondientes@ -10,0 +13,4 @@
Self.setUnverifiedPassword = async(id, pass, options) => {
const user = await models.VnUser.findById(id, null, options);
if (user.emailVerified) throw new ForbiddenError('The email has been already verified');
Si alguien intenta cambiar un password y le mostramos este mensaje de error, no va a saber relacionarlo..
Pensando en Norman yo mostraria algo así como "Esta contraseña solo puede ser modificada por el propio usuario"
Y asegurate que VnUser.setPassword tiene los permisos correctos y nadie lo puede llamar.
En principio lo reviso con isSubordinate en worker->setPassword y dentro de account->setUnverifiedPassword compruebo si el email está verificado. Hay que cambiar el enfoque? @juan @jgallego . setUnverifiedPassword no se puede llamar desde el exterior(http request), solo internamente.
Traducción cambiada
@ -13,3 +13,2 @@
</vn-item>
<vn-item ng-if="!$ctrl.worker.user.emailVerified" ng-click="setPassword.show()" translate>
Change password
<vn-item ng-if="!$ctrl.worker.user.emailVerified && $ctrl.vnConfig.storage.currentUserWorkerId !=$ctrl.worker.id" ng-click="setPassword.show()" translate>
creo que esta mal esta comprobación, en que casos quieres que se muestre?
Solo si el email no está verificado y no es el mismo. Tras lo hablado con Juan, si eres tú mismo, te cambiarás la contraseña desde otro lado. @jgallego
@ -10,0 +16,4 @@
if (user.emailVerified) throw new ForbiddenError('This password can only be changed by the user themselves');
await models.VnUser.setPassword(id, pass, options);
await user.updateAttribute('emailVerified', true, options);
porque activas el correo aqui? si el usuario no consigue entrar por cualquier razón no debería verificarse el mail
me lo pidio expresamente @juan . A que te refieres con que no consigue entrar?
Considero que és un mal enfoque.
El hecho de cambiar la contraseña no es lo mismo que hacer un login satisfactorio.
Bajo mi punto de vista poner el email verificado a true sólo se debería hacer cuando el usuario ha conseguido hacer un login satisfactorio
Paso la tarea a feedback pues
después de hablar con Juan quitar await user.updateAttribute('emailVerified', true, options);
poner el email verificado a true sólo se debería hacer cuando el usuario ha conseguido hacer un login satisfactorio
@ -38,3 +36,2 @@
await models.VnUser.setPassword(args.workerFk, args.newPass, myOptions);
await models.VnUser.updateAll({id: args.workerFk}, {emailVerified: true}, myOptions);
await models.Account.setUnverifiedPassword(id, newPass, myOptions);
no podemos poner aquí el contenido de setUnverifiedPassword?
es necesario crear ese método?
me lo pidio exprasemente @juan
poner el email verificado a true sólo se debería hacer cuando el usuario ha conseguido hacer un login satisfactorio
@ -35,3 +33,3 @@
try {
const isSubordinate = await models.Worker.isSubordinate(ctx, args.workerFk, myOptions);
const isSubordinate = await Self.isSubordinate(ctx, id, myOptions);
if (!isSubordinate) throw new UserError('You don\'t have enough privileges.');
Lanzar ForbiddenError indicando en el mensaje que no es subordinado.
6744 fix worker setPasswordto #6744 fix worker setPassword