core: allow setting priv_default

pull/61/head
undefined 4 years ago
parent 4a34a91848
commit 3aadb9511d

@ -1,6 +1,6 @@
{
"name": "hydrooj",
"version": "2.20.25",
"version": "2.20.26",
"bin": "bin/hydrooj.js",
"main": "dist/loader.js",
"typings": "dist/loader.d.ts",

@ -168,7 +168,7 @@ class DomainModel {
}
static setMultiUserInDomain(domainId: string, query: any, params: any) {
return collUser.updateMany({ domainId, ...query }, { $set: params });
return collUser.updateMany({ domainId, ...query }, { $set: params }, { upsert: true });
}
static getMultiUserInDomain(domainId: string, query: any = {}) {
@ -176,7 +176,7 @@ class DomainModel {
}
static setUserInDomain(domainId: string, uid: number, params: any) {
return collUser.updateOne({ domainId, uid }, { $set: params });
return collUser.updateOne({ domainId, uid }, { $set: params }, { upsert: true });
}
@ArgMethod

@ -38,6 +38,7 @@ export const DOMAIN_USER_SETTINGS_BY_KEY: SettingDict = {};
export const DOMAIN_SETTINGS_BY_KEY: SettingDict = {};
export const SYSTEM_SETTINGS_BY_KEY: SettingDict = {};
// eslint-disable-next-line max-len
export type SettingType = 'text' | 'yaml' | 'number' | 'markdown' | 'password' | 'boolean' | 'textarea' | [string, string][] | Record<string, string>;
export const Setting = (
@ -160,6 +161,7 @@ SystemSetting(
Setting('setting_server', 'server.xff', null, 'text', 'IP Header', 'e.g. x-forwarded-for (lowercase)'),
Setting('setting_server', 'server.language', 'zh_CN', langRange, 'Default display language'),
Setting('setting_server', 'server.login', true, 'boolean', 'Allow builtin-login'),
Setting('setting_basic', 'default.priv', builtin.PRIV.PRIV_DEFAULT, 'number', 'Default Privilege'),
Setting('setting_basic', 'problem.categories', builtin.CATEGORIES, 'yaml', 'Problem Categories'),
Setting('setting_basic', 'lang.texts', builtin.LANG_TEXTS, 'yaml', 'LANG_TEXTS'),
Setting('setting_basic', 'pagination.problem', 100, 'number', 'Problems per page'),

@ -195,7 +195,7 @@ class UserModel {
@ArgMethod
static async create(
mail: string, uname: string, password: string,
uid: number = 0, regip: string = '127.0.0.1', priv: number = PRIV.PRIV_DEFAULT,
uid: number = 0, regip: string = '127.0.0.1', priv: number = system.get('default.priv'),
) {
const salt = String.random();
if (!uid) uid = await system.inc('user');

@ -4,9 +4,7 @@ import mysql from 'mysql';
import 'hydrooj';
import { buildContent } from 'hydrooj/dist/lib/content';
const {
user, problem, builtin: { PRIV },
} = global.Hydro.model;
const { user, problem, system } = global.Hydro.model;
export async function run({
host = 'localhost', port = 27017, name = 'vijos4', username, password,
@ -45,7 +43,7 @@ export async function run({
const [udocs] = await query('SELECT * FROM `users`');
for (const udoc of udocs) {
const uid = await user.create(udoc.email, udoc.nick, '', null, udoc.ip, udoc.defunct === 'Y' ? 0 : PRIV.PRIV_DEFAULT);
const uid = await user.create(udoc.email, udoc.nick, '', null, udoc.ip, udoc.defunct === 'Y' ? 0 : system.get('default.priv'));
uidMap[udoc.uid] = uid;
await user.setById(uid, {
nSubmit: udoc.submit,

Loading…
Cancel
Save