vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit b5f9fe4d3bb57cada7fa01371efc3978a5937173
parent 013d4c28b2e06dc654b7f2a1f21b56b1c8a7838d
Author: Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>
Date:   Sat,  7 Nov 2020 23:03:02 +0100

Fix #1206

Diffstat:
Msrc/db/models/collection.rs | 17++++++++++++-----
Msrc/db/models/organization.rs | 2+-
2 files changed, 13 insertions(+), 6 deletions(-)

diff --git a/src/db/models/collection.rs b/src/db/models/collection.rs @@ -356,13 +356,20 @@ impl CollectionUser { }} } - pub fn delete_all_by_user(user_uuid: &str, conn: &DbConn) -> EmptyResult { - User::update_uuid_revision(&user_uuid, conn); + pub fn delete_all_by_user_and_org(user_uuid: &str, org_uuid: &str, conn: &DbConn) -> EmptyResult { + let collectionusers = Self::find_by_organization_and_user_uuid(org_uuid, user_uuid, conn); db_run! { conn: { - diesel::delete(users_collections::table.filter(users_collections::user_uuid.eq(user_uuid))) - .execute(conn) - .map_res("Error removing user from collections") + for user in collectionusers { + diesel::delete(users_collections::table.filter( + users_collections::user_uuid.eq(user_uuid) + .and(users_collections::collection_uuid.eq(user.collection_uuid)) + + )) + .execute(conn) + .map_res("Error removing user from collections")?; + } + Ok(()) }} } } diff --git a/src/db/models/organization.rs b/src/db/models/organization.rs @@ -389,7 +389,7 @@ impl UserOrganization { pub fn delete(self, conn: &DbConn) -> EmptyResult { User::update_uuid_revision(&self.user_uuid, conn); - CollectionUser::delete_all_by_user(&self.user_uuid, &conn)?; + CollectionUser::delete_all_by_user_and_org(&self.user_uuid, &self.org_uuid, &conn)?; db_run! { conn: { diesel::delete(users_organizations::table.filter(users_organizations::uuid.eq(self.uuid)))