mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 07:37:25 +01:00
63 lines
2.0 KiB
JavaScript
63 lines
2.0 KiB
JavaScript
import { sendJob } from '../../libs/worker';
|
|
import { authWithHeaders } from '../../middlewares/auth';
|
|
import { ensurePermission } from '../../middlewares/ensureAccessRight';
|
|
import { TransactionModel as Transaction } from '../../models/transaction';
|
|
|
|
const api = {};
|
|
|
|
/**
|
|
* @api {get} /api/v4/members/:memberId/purchase-history Get members purchase history
|
|
* @apiName MemberGetPurchaseHistory
|
|
* @apiGroup Member
|
|
*
|
|
*/
|
|
api.purchaseHistory = {
|
|
method: 'GET',
|
|
middlewares: [authWithHeaders(), ensurePermission('userSupport')],
|
|
url: '/members/:memberId/purchase-history',
|
|
async handler (req, res) {
|
|
req.checkParams('memberId', res.t('memberIdRequired')).notEmpty().isUUID();
|
|
const validationErrors = req.validationErrors();
|
|
if (validationErrors) throw validationErrors;
|
|
let transactions = await Transaction
|
|
.find({ userId: req.params.memberId })
|
|
.sort({ createdAt: -1 })
|
|
.exec();
|
|
|
|
if (!res.locals.user.hasPermission('userSupport')) {
|
|
transactions = transactions.filter(t => t.transactionType !== 'create_bank_challenge');
|
|
}
|
|
|
|
res.respond(200, transactions);
|
|
},
|
|
};
|
|
|
|
/**
|
|
* @api {delete} /api/v4/members/:memberId Delete a user
|
|
* @apiName DeleteMember
|
|
* @apiGroup Member
|
|
*
|
|
*/
|
|
api.deleteMember = {
|
|
method: 'DELETE',
|
|
middlewares: [authWithHeaders(), ensurePermission('userSupport')],
|
|
url: '/members/:memberId',
|
|
async handler (req, res) {
|
|
req.checkParams('memberId', res.t('memberIdRequired')).notEmpty().isUUID();
|
|
req.checkQuery('deleteAccount').optional().isIn(['true', 'false']);
|
|
req.checkQuery('deleteAmplitude').optional().isIn(['true', 'false']);
|
|
const validationErrors = req.validationErrors();
|
|
if (validationErrors) throw validationErrors;
|
|
sendJob('delete-user', {
|
|
data: {
|
|
userId: req.params.memberId,
|
|
deleteAccount: req.query.deleteAccount === 'true',
|
|
deleteAmplitude: req.query.deleteAmplitude === 'true',
|
|
},
|
|
});
|
|
res.respond(200, {});
|
|
},
|
|
};
|
|
|
|
export default api;
|