-
Notifications
You must be signed in to change notification settings - Fork 2.7k
/
info.js
54 lines (46 loc) · 1.8 KB
/
info.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
'use strict';
const db = require('../../database');
const user = require('../../user');
const helpers = require('../helpers');
const accountHelpers = require('./helpers');
const pagination = require('../../pagination');
const infoController = module.exports;
infoController.get = async function (req, res, next) {
const userData = await accountHelpers.getUserDataByUserSlug(req.params.userslug, req.uid);
if (!userData) {
return next();
}
const page = Math.max(1, req.query.page || 1);
const itemsPerPage = 10;
const start = (page - 1) * itemsPerPage;
const stop = start + itemsPerPage - 1;
const [history, sessions, usernames, emails, notes] = await Promise.all([
user.getModerationHistory(userData.uid),
user.auth.getSessions(userData.uid, req.sessionID),
user.getHistory('user:' + userData.uid + ':usernames'),
user.getHistory('user:' + userData.uid + ':emails'),
getNotes(userData, start, stop),
]);
userData.history = history;
userData.sessions = sessions;
userData.usernames = usernames;
userData.emails = emails;
if (userData.isAdminOrGlobalModeratorOrModerator) {
userData.moderationNotes = notes.notes;
const pageCount = Math.ceil(notes.count / itemsPerPage);
userData.pagination = pagination.create(page, pageCount, req.query);
}
userData.title = '[[pages:account/info]]';
userData.breadcrumbs = helpers.buildBreadcrumbs([{ text: userData.username, url: '/user/' + userData.userslug }, { text: '[[user:account_info]]' }]);
res.render('account/info', userData);
};
async function getNotes(userData, start, stop) {
if (!userData.isAdminOrGlobalModeratorOrModerator) {
return;
}
const [notes, count] = await Promise.all([
user.getModerationNotes(userData.uid, start, stop),
db.sortedSetCard('uid:' + userData.uid + ':moderation:notes'),
]);
return { notes: notes, count: count };
}