update delete user to actually delete all data

This commit is contained in:
mrjvs
2023-10-29 16:34:50 +01:00
parent 54ae6cac3d
commit 91750a5086
2 changed files with 30 additions and 3 deletions

View File

@@ -19,7 +19,7 @@ Backend for movie-web
- [X] GET progress items
- [X] DELETE progress items
- [ ] consume provider metrics
- [ ] DELETE user - should delete all associated data
- [X] DELETE user - should delete all associated data
- [ ] prometheus metrics
- [X] requests
- [X] user count
@@ -30,7 +30,7 @@ Backend for movie-web
- [X] global namespacing (accounts are stored on a namespace)
- [ ] cleanup jobs
- [ ] cleanup expired sessions
- [ ] cleanup old metrics
- [ ] cleanup old provider metrics
## Second todo list
- [ ] think of privacy centric method of auth

View File

@@ -1,5 +1,8 @@
import { Bookmark } from '@/db/models/Bookmark';
import { ProgressItem } from '@/db/models/ProgressItem';
import { Session } from '@/db/models/Session';
import { User } from '@/db/models/User';
import { UserSettings } from '@/db/models/UserSettings';
import { StatusError } from '@/services/error';
import { handle } from '@/services/handler';
import { makeRouter } from '@/services/router';
@@ -24,10 +27,34 @@ export const userDeleteRouter = makeRouter((app) => {
if (auth.user.id !== user.id)
throw new StatusError('Cannot delete user other than yourself', 403);
const sessions = await em.find(Session, { user: user.id });
// delete data
await em
.createQueryBuilder(Bookmark)
.delete()
.where({
userId: user.id,
})
.execute();
await em
.createQueryBuilder(ProgressItem)
.delete()
.where({
userId: user.id,
})
.execute();
await em
.createQueryBuilder(UserSettings)
.delete()
.where({
id: user.id,
})
.execute();
// delete account & login sessions
const sessions = await em.find(Session, { user: user.id });
await em.remove([user, ...sessions]);
await em.flush();
return {
id: user.id,
};