MCPcopy Create free account
hub / github.com/hydro-dev/Hydro / get

Method get

packages/hydrooj/src/handler/domain.ts:105–166  ·  view source on GitHub ↗
({ domainId }, format = 'default')

Source from the content-addressed store, hash-verified

103 @requireSudo
104 @param('format', Types.Range(['default', 'raw']), true)
105 async get({ domainId }, format = 'default') {
106 const showDefault = system.get('server.showDefaultRole') || domainId !== 'system';
107 const [dudocs, roles] = await Promise.all([
108 domain.collUser.aggregate([
109 {
110 $match: {
111 role: showDefault ? { $ne: 'guest' } : {
112 $nin: ['default', 'guest'],
113 $ne: null,
114 },
115 domainId,
116 },
117 },
118 {
119 $lookup: {
120 from: 'user',
121 let: { uid: '$uid' },
122 pipeline: [
123 {
124 $match: {
125 $expr: { $eq: ['$_id', '$$uid'] },
126 priv: { $bitsAllSet: PRIV.PRIV_USER_PROFILE },
127 },
128 },
129 {
130 $project: {
131 _id: 1,
132 uname: 1,
133 avatar: 1,
134 },
135 },
136 ],
137 as: 'user',
138 },
139 },
140 { $unwind: '$user' },
141 {
142 $project: {
143 user: 1,
144 role: 1,
145 join: 1,
146 ...(this.user.hasPerm(PERM.PERM_VIEW_USER_PRIVATE_INFO) ? { displayName: 1 } : {}),
147 },
148 },
149 ]).toArray(),
150 domain.getRoles(domainId),
151 ]);
152 const users = dudocs.map((dudoc) => {
153 const u = {
154 ...dudoc,
155 ...dudoc.user,
156 };
157 delete u.user;
158 return u;
159 });
160 const rudocs = {};
161 for (const role of roles) rudocs[role._id] = users.filter((udoc) => (udoc.role || 'default') === role._id);
162 this.response.template = format === 'raw' ? 'domain_user_raw.html' : 'domain_user.html';

Callers

nothing calls this directly

Calls 4

hasPermMethod · 0.80
getRolesMethod · 0.80
getMethod · 0.45
allMethod · 0.45

Tested by

no test coverage detected