mirror of
https://github.com/usatiuk/writer.git
synced 2025-10-29 00:17:48 +01:00
account deletion backend logic
This commit is contained in:
@@ -48,6 +48,9 @@ app.use(userRouter.routes()).use(userRouter.allowedMethods());
|
|||||||
app.use(docsRouter.routes()).use(docsRouter.allowedMethods());
|
app.use(docsRouter.routes()).use(docsRouter.allowedMethods());
|
||||||
|
|
||||||
app.on("error", (err, ctx) => {
|
app.on("error", (err, ctx) => {
|
||||||
|
if (ctx.response.status == "500") {
|
||||||
|
console.error(err);
|
||||||
|
}
|
||||||
ctx.body = {
|
ctx.body = {
|
||||||
error: err.message,
|
error: err.message,
|
||||||
data: false,
|
data: false,
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import * as Router from "koa-router";
|
import * as Router from "koa-router";
|
||||||
|
import { Document } from "~entity/Document";
|
||||||
import { IUserJWT, User } from "~entity/User";
|
import { IUserJWT, User } from "~entity/User";
|
||||||
|
|
||||||
export const userRouter = new Router();
|
export const userRouter = new Router();
|
||||||
@@ -15,6 +16,20 @@ userRouter.get("/users/user", async (ctx) => {
|
|||||||
ctx.body = { error: false, data: user.toAuthJSON() };
|
ctx.body = { error: false, data: user.toAuthJSON() };
|
||||||
});
|
});
|
||||||
|
|
||||||
|
userRouter.delete("/users/user", async (ctx) => {
|
||||||
|
if (!ctx.state.user) {
|
||||||
|
ctx.throw(401);
|
||||||
|
}
|
||||||
|
|
||||||
|
const jwt = ctx.state.user as IUserJWT;
|
||||||
|
|
||||||
|
const user = await User.findOne(jwt.id);
|
||||||
|
await Document.remove(await Document.find({ user }));
|
||||||
|
await user.remove();
|
||||||
|
|
||||||
|
ctx.body = { error: false };
|
||||||
|
});
|
||||||
|
|
||||||
userRouter.post("/users/login", async (ctx) => {
|
userRouter.post("/users/login", async (ctx) => {
|
||||||
const request = ctx.request as any;
|
const request = ctx.request as any;
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import * as request from "supertest";
|
|||||||
import { getConnection } from "typeorm";
|
import { getConnection } from "typeorm";
|
||||||
import { app } from "~app";
|
import { app } from "~app";
|
||||||
import { IUserAuthJSON, User } from "~entity/User";
|
import { IUserAuthJSON, User } from "~entity/User";
|
||||||
|
import { Document } from "~entity/Document";
|
||||||
|
|
||||||
import { ISeed, seedDB } from "./util";
|
import { ISeed, seedDB } from "./util";
|
||||||
|
|
||||||
@@ -41,6 +42,37 @@ describe("users", function () {
|
|||||||
expect(user).to.deep.equal(seed.user1.toJSON());
|
expect(user).to.deep.equal(seed.user1.toJSON());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("should delete user", async function () {
|
||||||
|
const response = await request(callback)
|
||||||
|
.delete("/users/user")
|
||||||
|
.set({
|
||||||
|
Authorization: `Bearer ${seed.user1.toJWT()}`,
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
})
|
||||||
|
.expect("Content-Type", /json/)
|
||||||
|
.expect(200);
|
||||||
|
|
||||||
|
expect(response.body.error).to.be.false;
|
||||||
|
expect(await User.findOne(seed.user1.id)).to.be.undefined;
|
||||||
|
expect(await Document.findOne(seed.doc1.id)).to.be.undefined;
|
||||||
|
});
|
||||||
|
|
||||||
|
it("should not delete user with wrong jwt", async function () {
|
||||||
|
const response = await request(callback)
|
||||||
|
.delete("/users/user")
|
||||||
|
.set({
|
||||||
|
Authorization: `Bearer ${seed.user2.toJWT()}`,
|
||||||
|
"Content-Type": "application/json",
|
||||||
|
})
|
||||||
|
.expect("Content-Type", /json/)
|
||||||
|
.expect(200);
|
||||||
|
|
||||||
|
expect(response.body.error).to.be.false;
|
||||||
|
expect(await User.findOne(seed.user2.id)).to.be.undefined;
|
||||||
|
expect(await User.findOne(seed.user1.id)).to.not.be.undefined;
|
||||||
|
expect(await Document.findOne(seed.doc1.id)).to.not.be.undefined;
|
||||||
|
});
|
||||||
|
|
||||||
it("should login user", async function () {
|
it("should login user", async function () {
|
||||||
const response = await request(callback)
|
const response = await request(callback)
|
||||||
.post("/users/login")
|
.post("/users/login")
|
||||||
|
|||||||
Reference in New Issue
Block a user