mirror of
https://gitcode.com/gh_mirrors/hy/Hydro.git
synced 2026-10-20 17:46:28 +08:00
core: add maintainer field for doc (#101)
This commit is contained in:
1 parent
7bde6a922c
commit
da32c79f21
24 files changed
+85
-74
No files matched your search
@@ -65,8 +65,17 @@ class User implements _User {
|
||||
for (const key in setting.DOMAIN_USER_SETTINGS_BY_KEY) {
|
||||
this[key] = dudoc[key] ?? setting.DOMAIN_USER_SETTINGS_BY_KEY[key].value;
|
||||
}
|
||||
}
|
||||
|
||||
bus.serial('user/get', this);
|
||||
async init() {
|
||||
await bus.serial('user/get', this);
|
||||
return this;
|
||||
}
|
||||
|
||||
own<T extends { owner: number, maintainer?: number[] }>(doc: T, exact = false) {
|
||||
return exact
|
||||
? doc.owner === this._id
|
||||
: doc.owner === this._id || (doc.maintainer || []).includes(this._id);
|
||||
}
|
||||
|
||||
hasPerm(...perm: bigint[]) {
|
||||
@@ -122,7 +131,7 @@ class UserModel {
|
||||
if (!udoc) return null;
|
||||
const dudoc = await domain.getDomainUser(domainId, udoc);
|
||||
if (typeof scope === 'string') scope = BigInt(scope);
|
||||
return new User(udoc, dudoc, scope);
|
||||
return new UserModel.User(udoc, dudoc, scope).init();
|
||||
}
|
||||
|
||||
static async getList(domainId: string, uids: number[]): Promise<Udict> {
|
||||
@@ -143,7 +152,7 @@ class UserModel {
|
||||
: await coll.findOne({ unameLower });
|
||||
if (!udoc) return null;
|
||||
const dudoc = await domain.getDomainUser(domainId, udoc);
|
||||
return new UserModel.User(udoc, dudoc);
|
||||
return new UserModel.User(udoc, dudoc).init();
|
||||
}
|
||||
|
||||
@ArgMethod
|
||||
@@ -156,7 +165,7 @@ class UserModel {
|
||||
: await coll.findOne({ mailLower });
|
||||
if (!udoc) return null;
|
||||
const dudoc = await domain.getDomainUser(domainId, udoc);
|
||||
return new UserModel.User(udoc, dudoc);
|
||||
return new UserModel.User(udoc, dudoc).init();
|
||||
}
|
||||
|
||||
@ArgMethod
|
||||
@@ -233,7 +242,7 @@ class UserModel {
|
||||
@ArgMethod
|
||||
static async getPrefixList(domainId: string, prefix: string, limit: number = 50) {
|
||||
prefix = prefix.toLowerCase();
|
||||
const $regex = new RegExp(`\\A${escapeRegExp(prefix)}`, 'gmi');
|
||||
const $regex = new RegExp(`^${escapeRegExp(prefix)}`, 'gmi');
|
||||
const uids = await coll.find({ unameLower: { $regex } })
|
||||
.limit(limit).map((doc) => doc._id).toArray();
|
||||
const users = [];
|
||||
|
||||
Reference in new issue
Block a user