feat: Improved viewers popover (#2106)

* refactoring popover

* feat: DocumentViews popover

* i18n

* fix: tab focus warnings

* test: Add tests around users.info changes

* snapshots
This commit is contained in:
Tom Moor
2021-05-05 19:35:23 -07:00
committed by GitHub
parent e984a3dcdb
commit 896ee5c20d
18 changed files with 388 additions and 191 deletions

View File

@@ -10,7 +10,7 @@ import { presentUser, presentPolicies } from "../presenters";
import { Op } from "../sequelize";
import pagination from "./middlewares/pagination";
const { authorize } = policy;
const { can, authorize } = policy;
const router = new Router();
router.post("users.list", auth(), pagination(), async (ctx) => {
@@ -23,10 +23,10 @@ router.post("users.list", auth(), pagination(), async (ctx) => {
if (direction !== "ASC") direction = "DESC";
ctx.assertSort(sort, User);
const user = ctx.state.user;
const actor = ctx.state.user;
let where = {
teamId: user.teamId,
teamId: actor.teamId,
};
if (!includeSuspended) {
@@ -56,10 +56,10 @@ router.post("users.list", auth(), pagination(), async (ctx) => {
ctx.body = {
pagination: ctx.state.pagination,
data: users.map((listUser) =>
presentUser(listUser, { includeDetails: user.isAdmin })
data: users.map((user) =>
presentUser(user, { includeDetails: can(actor, "readDetails", user) })
),
policies: presentPolicies(user, users),
policies: presentPolicies(actor, users),
};
});
@@ -75,11 +75,17 @@ router.post("users.count", auth(), async (ctx) => {
});
router.post("users.info", auth(), async (ctx) => {
const { user } = ctx.state;
const { id } = ctx.body;
const actor = ctx.state.user;
const user = id ? await User.findByPk(id) : actor;
authorize(actor, "read", user);
const includeDetails = can(actor, "readDetails", user);
ctx.body = {
data: presentUser(user),
policies: presentPolicies(user, [user]),
data: presentUser(user, { includeDetails }),
policies: presentPolicies(actor, [user]),
};
});
@@ -128,8 +134,10 @@ router.post("users.promote", auth(), async (ctx) => {
ip: ctx.request.ip,
});
const includeDetails = can(actor, "readDetails", user);
ctx.body = {
data: presentUser(user, { includeDetails: true }),
data: presentUser(user, { includeDetails }),
policies: presentPolicies(actor, [user]),
};
});
@@ -159,8 +167,10 @@ router.post("users.demote", auth(), async (ctx) => {
ip: ctx.request.ip,
});
const includeDetails = can(actor, "readDetails", user);
ctx.body = {
data: presentUser(user, { includeDetails: true }),
data: presentUser(user, { includeDetails }),
policies: presentPolicies(actor, [user]),
};
});
@@ -179,8 +189,10 @@ router.post("users.suspend", auth(), async (ctx) => {
ip: ctx.request.ip,
});
const includeDetails = can(actor, "readDetails", user);
ctx.body = {
data: presentUser(user, { includeDetails: true }),
data: presentUser(user, { includeDetails }),
policies: presentPolicies(actor, [user]),
};
});
@@ -205,8 +217,10 @@ router.post("users.activate", auth(), async (ctx) => {
ip: ctx.request.ip,
});
const includeDetails = can(actor, "readDetails", user);
ctx.body = {
data: presentUser(user, { includeDetails: true }),
data: presentUser(user, { includeDetails }),
policies: presentPolicies(actor, [user]),
};
});