feat: version 2.13.0 -- grupos y compartir en Contraseñas

Grupos de un solo nivel (tarjetas, clic entra a ver sus credenciales) y compartir
una credencial individual de solo lectura con otro usuario registrado (puede
revelar/copiar la contraseña real, nunca editar/borrar/compartir/mover de grupo).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Milton Gonzalez
2026-10-14 16:14:36 -05:00
parent 971de05773
commit 3da652c136
13 changed files with 570 additions and 43 deletions
+11
View File
@@ -5,6 +5,8 @@ import { requireVaultUnlock } from './middleware.js';
import {
getStatus, postPin, postUnlock, postChangePin, postForgotPin, postResetPin,
getEntries, getEntry, postEntry, putEntry, deleteEntry,
getGroups, postGroup, putGroup, deleteGroup,
getEntryShares, postEntryShare, deleteEntryShare,
} from './controller.js';
const router = Router();
@@ -22,10 +24,19 @@ router.post('/unlock', unlockLimiter, postUnlock);
router.post('/change-pin', unlockLimiter, postChangePin);
router.post('/forgot-pin', unlockLimiter, postForgotPin);
router.get('/groups', requireVaultUnlock, getGroups);
router.post('/groups', requireVaultUnlock, postGroup);
router.put('/groups/:id', requireVaultUnlock, putGroup);
router.delete('/groups/:id', requireVaultUnlock, deleteGroup);
router.get('/entries', requireVaultUnlock, getEntries);
router.get('/entries/:id', requireVaultUnlock, getEntry);
router.post('/entries', requireVaultUnlock, postEntry);
router.put('/entries/:id', requireVaultUnlock, putEntry);
router.delete('/entries/:id', requireVaultUnlock, deleteEntry);
router.get('/entries/:id/shares', requireVaultUnlock, getEntryShares);
router.post('/entries/:id/shares', requireVaultUnlock, postEntryShare);
router.delete('/entries/:id/shares/:userId', requireVaultUnlock, deleteEntryShare);
export default router;