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:
@@ -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]),
|
||||
};
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user