mirror of
https://github.com/movie-web/backend.git
synced 2025-09-13 18:13:26 +00:00
update delete user to actually delete all data
This commit is contained in:
@@ -19,7 +19,7 @@ Backend for movie-web
|
|||||||
- [X] GET progress items
|
- [X] GET progress items
|
||||||
- [X] DELETE progress items
|
- [X] DELETE progress items
|
||||||
- [ ] consume provider metrics
|
- [ ] consume provider metrics
|
||||||
- [ ] DELETE user - should delete all associated data
|
- [X] DELETE user - should delete all associated data
|
||||||
- [ ] prometheus metrics
|
- [ ] prometheus metrics
|
||||||
- [X] requests
|
- [X] requests
|
||||||
- [X] user count
|
- [X] user count
|
||||||
@@ -30,7 +30,7 @@ Backend for movie-web
|
|||||||
- [X] global namespacing (accounts are stored on a namespace)
|
- [X] global namespacing (accounts are stored on a namespace)
|
||||||
- [ ] cleanup jobs
|
- [ ] cleanup jobs
|
||||||
- [ ] cleanup expired sessions
|
- [ ] cleanup expired sessions
|
||||||
- [ ] cleanup old metrics
|
- [ ] cleanup old provider metrics
|
||||||
|
|
||||||
## Second todo list
|
## Second todo list
|
||||||
- [ ] think of privacy centric method of auth
|
- [ ] think of privacy centric method of auth
|
||||||
|
@@ -1,5 +1,8 @@
|
|||||||
|
import { Bookmark } from '@/db/models/Bookmark';
|
||||||
|
import { ProgressItem } from '@/db/models/ProgressItem';
|
||||||
import { Session } from '@/db/models/Session';
|
import { Session } from '@/db/models/Session';
|
||||||
import { User } from '@/db/models/User';
|
import { User } from '@/db/models/User';
|
||||||
|
import { UserSettings } from '@/db/models/UserSettings';
|
||||||
import { StatusError } from '@/services/error';
|
import { StatusError } from '@/services/error';
|
||||||
import { handle } from '@/services/handler';
|
import { handle } from '@/services/handler';
|
||||||
import { makeRouter } from '@/services/router';
|
import { makeRouter } from '@/services/router';
|
||||||
@@ -24,10 +27,34 @@ export const userDeleteRouter = makeRouter((app) => {
|
|||||||
if (auth.user.id !== user.id)
|
if (auth.user.id !== user.id)
|
||||||
throw new StatusError('Cannot delete user other than yourself', 403);
|
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.remove([user, ...sessions]);
|
||||||
await em.flush();
|
await em.flush();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: user.id,
|
id: user.id,
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user