core: add user import hooks

This commit is contained in:
undefined committed 2024-10-24 01:27:54 +08:00
1 parent 21c069d998
commit 90f4cdc569
3 files changed
+10 -5

No files matched your search

+1 -1
View File
@@ -26,7 +26,7 @@ class FpsProblemImportHandler extends Handler {
samples: p.sample_input?.map((input, i) => [input, p.sample_output[i]]), samples: p.sample_input?.map((input, i) => [input, p.sample_output[i]]),
hint: p.hint?.[0], hint: p.hint?.[0],
source: p.source?.join(' '), source: p.source?.join(' '),
}, 'html').replace(/<math xm<x>lns=/g, '<math xmlns=').replace(/\[\/?md]/g, ''); }, 'html', (s) => this.translate(s)).replace(/<math xm<x>lns=/g, '<math xmlns=').replace(/\[\/?md]/g, '');
const config: ProblemConfigFile = { const config: ProblemConfigFile = {
time: p.time_limit[0]._ + p.time_limit[0].$.unit, time: p.time_limit[0]._ + p.time_limit[0].$.unit,
memory: p.memory_limit[0]._ + p.memory_limit[0].$.unit, memory: p.memory_limit[0]._ + p.memory_limit[0].$.unit,
+6 -4
View File
@@ -248,12 +248,13 @@ class SystemUserImportHandler extends SystemHandler {
groups[data.group] ||= []; groups[data.group] ||= [];
groups[data.group].push(email); groups[data.group].push(email);
} }
if (data.school) payload.school = data.school; Object.assign(payload, data);
if (data.studentId) payload.studentId = data.studentId;
} catch (e) { } } catch (e) { }
udocs.push({ Object.assign(payload, {
email, username, password, displayName, payload, email, username, password, displayName,
}); });
await this.ctx.serial('user/import/parse', payload);
udocs.push(payload);
} }
} else messages.push(`Line ${+i + 1}: Input invalid.`); } else messages.push(`Line ${+i + 1}: Input invalid.`);
} }
@@ -266,6 +267,7 @@ class SystemUserImportHandler extends SystemHandler {
if (udoc.displayName) await domain.setUserInDomain(domainId, uid, { displayName: udoc.displayName }); if (udoc.displayName) await domain.setUserInDomain(domainId, uid, { displayName: udoc.displayName });
if (udoc.payload?.school) await user.setById(uid, { school: udoc.payload.school }); if (udoc.payload?.school) await user.setById(uid, { school: udoc.payload.school });
if (udoc.payload?.studentId) await user.setById(uid, { studentId: udoc.payload.studentId }); if (udoc.payload?.studentId) await user.setById(uid, { studentId: udoc.payload.studentId });
await this.ctx.serial('user/import/create', uid, udoc);
} catch (e) { } catch (e) {
messages.push(e.message); messages.push(e.message);
} }
+3
View File
@@ -48,6 +48,9 @@ export interface EventMap extends KnownHandlerEvents {
'user/get': (udoc: User) => void 'user/get': (udoc: User) => void
'user/delcache': (content: string | true) => void 'user/delcache': (content: string | true) => void
'user/import/parse': (payload: any) => VoidReturn
'user/import/create': (uid: number, udoc: any) => VoidReturn
'domain/create': (ddoc: DomainDoc) => VoidReturn 'domain/create': (ddoc: DomainDoc) => VoidReturn
'domain/before-get': (query: Filter<DomainDoc>) => VoidReturn 'domain/before-get': (query: Filter<DomainDoc>) => VoidReturn
'domain/get': (ddoc: DomainDoc) => VoidReturn 'domain/get': (ddoc: DomainDoc) => VoidReturn