|
@@ -124,6 +124,7 @@ module.exports = (crowi) => {
|
|
|
registered: UserStatus.STATUS_REGISTERED,
|
|
registered: UserStatus.STATUS_REGISTERED,
|
|
|
active: UserStatus.STATUS_ACTIVE,
|
|
active: UserStatus.STATUS_ACTIVE,
|
|
|
suspended: UserStatus.STATUS_SUSPENDED,
|
|
suspended: UserStatus.STATUS_SUSPENDED,
|
|
|
|
|
+ deleted: UserStatus.STATUS_DELETED,
|
|
|
invited: UserStatus.STATUS_INVITED,
|
|
invited: UserStatus.STATUS_INVITED,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -149,7 +150,6 @@ module.exports = (crowi) => {
|
|
|
query('sortOrder').isIn(['asc', 'desc']),
|
|
query('sortOrder').isIn(['asc', 'desc']),
|
|
|
// validate sort : what column you will sort
|
|
// validate sort : what column you will sort
|
|
|
query('sort').isIn([
|
|
query('sort').isIn([
|
|
|
- 'id',
|
|
|
|
|
'status',
|
|
'status',
|
|
|
'username',
|
|
'username',
|
|
|
'name',
|
|
'name',
|
|
@@ -157,7 +157,7 @@ module.exports = (crowi) => {
|
|
|
'createdAt',
|
|
'createdAt',
|
|
|
'lastLoginAt',
|
|
'lastLoginAt',
|
|
|
]),
|
|
]),
|
|
|
- query('page').isInt({ min: 1 }),
|
|
|
|
|
|
|
+ query('page').isInt({ min: 1 }).toInt(),
|
|
|
query('forceIncludeAttributes')
|
|
query('forceIncludeAttributes')
|
|
|
.toArray()
|
|
.toArray()
|
|
|
.custom((value, { req }) => {
|
|
.custom((value, { req }) => {
|
|
@@ -317,7 +317,7 @@ module.exports = (crowi) => {
|
|
|
validator.statusList,
|
|
validator.statusList,
|
|
|
apiV3FormValidator,
|
|
apiV3FormValidator,
|
|
|
async (req, res) => {
|
|
async (req, res) => {
|
|
|
- const page = parseInt(req.query.page) || 1;
|
|
|
|
|
|
|
+ const page = req.query.page || 1;
|
|
|
|
|
|
|
|
// status
|
|
// status
|
|
|
const forceIncludeAttributes = Array.isArray(
|
|
const forceIncludeAttributes = Array.isArray(
|
|
@@ -340,6 +340,8 @@ module.exports = (crowi) => {
|
|
|
const { sort, sortOrder } = req.query;
|
|
const { sort, sortOrder } = req.query;
|
|
|
const sortOutput = {
|
|
const sortOutput = {
|
|
|
[sort]: sortOrder === 'desc' ? -1 : 1,
|
|
[sort]: sortOrder === 'desc' ? -1 : 1,
|
|
|
|
|
+ // tiebreaker: ensure stable pagination when the primary sort key has duplicate values
|
|
|
|
|
+ _id: 1,
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// For more information about the external specification of the User API, see here (https://dev.growi.org/5fd7466a31d89500488248e3)
|
|
// For more information about the external specification of the User API, see here (https://dev.growi.org/5fd7466a31d89500488248e3)
|