Compare commits

..

2 Commits

Author SHA1 Message Date
91fe66b202
updated getters 2023-05-08 00:57:24 +03:00
59fb43feda
update typings 2023-05-07 18:53:06 +03:00
10 changed files with 49 additions and 33 deletions

View File

@ -1,7 +1,6 @@
import { AbstractUser } from "../src/server/interfaces/index.js"; import { AbstractUser } from "../src/server/interfaces/index.js";
import { ObjectId } from 'mongodb';
import { LoggerClientOptions } from '@navy.gif/logger'; import { LoggerClientOptions } from '@navy.gif/logger';
import { MariaOptions, MongoOptions } from '@navy.gif/wrappers'; import { MariaOptions, MongoOptions, ObjectId } from '@navy.gif/wrappers';
import { Request as ExpressRequest, Response as ExpressResponse, NextFunction } from "express"; import { Request as ExpressRequest, Response as ExpressResponse, NextFunction } from "express";
import http from 'http'; import http from 'http';
import { UploadedFile } from "express-fileupload"; import { UploadedFile } from "express-fileupload";
@ -167,3 +166,9 @@ export type EndpointOptions = {
auth?: MiddlewareFunction | true | null, auth?: MiddlewareFunction | true | null,
loadOrder?: number loadOrder?: number
} }
export type RegistrationInvite = {
code: string,
validFor: number,
created: number
}

View File

@ -15,7 +15,7 @@
"@navy.gif/commandparser": "^1.4.5", "@navy.gif/commandparser": "^1.4.5",
"@navy.gif/logger": "^2.3.3", "@navy.gif/logger": "^2.3.3",
"@navy.gif/passport-discord": "^0.2.2-b", "@navy.gif/passport-discord": "^0.2.2-b",
"@navy.gif/wrappers": "^1.3.11", "@navy.gif/wrappers": "^1.3.12",
"@types/cors": "^2.8.13", "@types/cors": "^2.8.13",
"@types/express-fileupload": "^1.4.1", "@types/express-fileupload": "^1.4.1",
"@types/express-session": "^1.17.7", "@types/express-session": "^1.17.7",

View File

@ -1,4 +1,4 @@
import { OptionType, CommandOptionDefinition, ArgsResult } from '@navy.gif/commandparser'; import { OptionType, ArgsResult } from '@navy.gif/commandparser';
import BaseCommand from '../BaseCommand.js'; import BaseCommand from '../BaseCommand.js';
import Controller from '../Controller.js'; import Controller from '../Controller.js';
import { IPCMessage, SignupCode } from '../../../@types/Other.js'; import { IPCMessage, SignupCode } from '../../../@types/Other.js';
@ -18,7 +18,7 @@ class CreateCommand extends BaseCommand {
type: OptionType.INTEGER, type: OptionType.INTEGER,
valueOptional: true, valueOptional: true,
defaultValue: 1 defaultValue: 1
} as CommandOptionDefinition ] }]
}] }]
}); });
@ -37,8 +37,13 @@ class CreateCommand extends BaseCommand {
const response = await shard.send(msg, true); const response = await shard.send(msg, true);
if (!response) if (!response)
return 'Did not get a response from shard'; return 'Did not get a response from shard';
const code = response.code as SignupCode;
return `Code ${code.code}, valid until ${new Date(code.created + code.validFor).toUTCString()}`; const codes = response.codes as SignupCode[];
let out = `Created codes, valid until ${new Date(codes[0].created + codes[0].validFor).toUTCString()}:\n`;
for (const invite of codes)
out += `${invite.code}\n`;
return out;
} }

View File

@ -22,7 +22,7 @@ import { Authenticator, RateLimiter } from './middleware/index.js';
import { UserDatabaseInterface } from './interfaces/index.js'; import { UserDatabaseInterface } from './interfaces/index.js';
import { ExternalProfile, OAuthProvider, Request, Response, ServerOptions, SessionLimit } from '../../@types/Server.js'; import { ExternalProfile, OAuthProvider, Request, Response, ServerOptions, SessionLimit } from '../../@types/Server.js';
import { MongoMemory } from './database/index.js'; import { MongoMemory } from './database/index.js';
import { IPCMessage } from '../../@types/Other.js'; import { IPCMessage, SignupCode } from '../../@types/Other.js';
import { DoneCallback } from 'passport'; import { DoneCallback } from 'passport';
// const pkg = JSON.parse(readFileSync('../../package.json', { encoding: 'utf8' })); // const pkg = JSON.parse(readFileSync('../../package.json', { encoding: 'utf8' }));
@ -292,8 +292,13 @@ class Server extends EventEmitter {
if (!process.send) if (!process.send)
throw new Error('Missing process.send???'); throw new Error('Missing process.send???');
if (msg.type === 'reqregcode') { if (msg.type === 'reqregcode') {
const codes: SignupCode[] = [];
const amount = msg.amount as number;
for (let i = 0; i < amount; i++) {
const code = await this.users.createRegistrationCode(); const code = await this.users.createRegistrationCode();
process.send({ _id: msg._id, code }); codes.push(code);
}
process.send({ _id: msg._id, codes });
} }
} }
@ -366,6 +371,18 @@ class Server extends EventEmitter {
return this.#_port; return this.#_port;
} }
get mongodb () {
return this.#_mongodb;
}
get memoryStoreProvider () {
return this.#_memoryStoreProvider;
}
get mariadb () {
return this.#_mariadb;
}
get users () { get users () {
return this.#_userDatabase; return this.#_userDatabase;
} }

View File

@ -1,21 +1,14 @@
// const { Collection } = require("@discordjs/collection");
// const { ObjectId } = require("mongodb");
// const { UserDatabaseInterface, Entity } = require("../interfaces/");
// const { User, UserApplication, Role } = require("../structures");
// const { Util } = require("../../util");
import { Collection } from '@discordjs/collection'; import { Collection } from '@discordjs/collection';
import { ObjectId, Document } from 'mongodb';
import { LoggerClient } from '@navy.gif/logger'; import { LoggerClient } from '@navy.gif/logger';
import { MongoDB } from '@navy.gif/wrappers'; import { MongoDB, ObjectId, Document } from '@navy.gif/wrappers';
import Server from "../Server.js"; import Server from "../Server.js";
import { Entity, UserDatabaseInterface } from "../interfaces/index.js"; import { Entity, UserDatabaseInterface } from "../interfaces/index.js";
import { Role, User, UserApplication } from "../structures/index.js"; import { Role, User, UserApplication } from "../structures/index.js";
import { ApplicationData, ExternalProfile, RoleData, UserData } from '../../../@types/Server.js'; import { ApplicationData, ExternalProfile, RoleData, UserData } from '../../../@types/Server.js';
import { Util } from '../../util/index.js'; import { Util } from '../../util/index.js';
import { SignupCode } from '../../../@types/Other.js';
type UserDBOptions = { type UserDBOptions = {
userCollection?: string, userCollection?: string,
@ -380,7 +373,7 @@ class UserDatabase implements UserDatabaseInterface {
* @param {number} [validFor=1] Amount of days the code is valid * @param {number} [validFor=1] Amount of days the code is valid
* @memberof UserDatabase * @memberof UserDatabase
*/ */
async createRegistrationCode (validFor = 1) { async createRegistrationCode (validFor = 1): Promise<SignupCode> {
const string = Util.randomString(); const string = Util.randomString();
const now = Date.now(); const now = Date.now();
const obj = { code: string, validFor: validFor * 24 * 60 * 60 * 1000, created: now }; const obj = { code: string, validFor: validFor * 24 * 60 * 60 * 1000, created: now };

View File

@ -1,11 +1,8 @@
// const { ObjectId } = require("mongodb");
// const { PermissionManager } = require("../../util");
// const UserDatabaseInterface = require("./UserDatabaseInterface");
import { ObjectId } from 'mongodb';
import { PermissionManager } from '../../util/index.js'; import { PermissionManager } from '../../util/index.js';
import UserDatabaseInterface from './UserDatabaseInterface.js'; import UserDatabaseInterface from './UserDatabaseInterface.js';
import Server from '../Server.js'; import Server from '../Server.js';
import { EntityData, EntityJson, Permissions } from '../../../@types/Server.js'; import { EntityData, EntityJson, Permissions } from '../../../@types/Server.js';
import { ObjectId } from '@navy.gif/wrappers';
// API entity superclass // API entity superclass
class Entity { class Entity {

View File

@ -1,4 +1,4 @@
import { DeleteResult } from 'mongodb'; import { DeleteResult } from "@navy.gif/wrappers";
import { SignupCode } from "../../../@types/Other.js"; import { SignupCode } from "../../../@types/Other.js";
import { ApplicationData, ExternalProfile, RoleData } from "../../../@types/Server.js"; import { ApplicationData, ExternalProfile, RoleData } from "../../../@types/Server.js";
import { Role, User, UserApplication } from "../structures/index.js"; import { Role, User, UserApplication } from "../structures/index.js";

View File

@ -1,10 +1,10 @@
// const { AbstractUser } = require("../interfaces"); // const { AbstractUser } = require("../interfaces");
// const { ObjectId } = require("mongodb"); // const { ObjectId } = require("mongodb");
import { ObjectId } from "@navy.gif/wrappers";
import { ApplicationData } from "../../../@types/Server.js"; import { ApplicationData } from "../../../@types/Server.js";
import Server from "../Server.js"; import Server from "../Server.js";
import { AbstractUser } from "../interfaces/index.js"; import { AbstractUser } from "../interfaces/index.js";
import { ObjectId } from 'mongodb';
class UserApplication extends AbstractUser { class UserApplication extends AbstractUser {

View File

@ -61,7 +61,6 @@ class PermissionManager {
const resolveables = perm.split(':'); const resolveables = perm.split(':');
let selector = null; let selector = null;
if (typeof perms.developer === 'number' && perms.developer > 0 if (typeof perms.developer === 'number' && perms.developer > 0
|| typeof perms.developer === 'object' && typeof perms.developer.default === 'number' && perms.developer?.default > 0) || typeof perms.developer === 'object' && typeof perms.developer.default === 'number' && perms.developer?.default > 0)
return true; return true;

View File

@ -1773,15 +1773,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@navy.gif/wrappers@npm:^1.3.11": "@navy.gif/wrappers@npm:^1.3.12":
version: 1.3.11 version: 1.3.12
resolution: "@navy.gif/wrappers@npm:1.3.11" resolution: "@navy.gif/wrappers@npm:1.3.12"
dependencies: dependencies:
amqp-connection-manager: ^4.1.12 amqp-connection-manager: ^4.1.12
amqplib: ^0.10.3 amqplib: ^0.10.3
mongodb: ^5.2.0 mongodb: ^5.2.0
mysql: ^2.18.1 mysql: ^2.18.1
checksum: e0170f5e0d78e77e464781f6c00fb979fa86a4360faea31df832b64b78799182234656b97098bb8e1c8b2ca0ef5558e477f59c6cb51d1dce01ab8d2c6547dc4a checksum: 4e95129ff4dfb43037ebb47d55ab16be730cbf43030c5b75e1adc7f92251f92e8abc689ebe429ae3b60f2efc5761c3c78e617e72470c68fc9818bd431a0f4de3
languageName: node languageName: node
linkType: hard linkType: hard
@ -7038,7 +7038,7 @@ __metadata:
"@navy.gif/commandparser": ^1.4.5 "@navy.gif/commandparser": ^1.4.5
"@navy.gif/logger": ^2.3.3 "@navy.gif/logger": ^2.3.3
"@navy.gif/passport-discord": ^0.2.2-b "@navy.gif/passport-discord": ^0.2.2-b
"@navy.gif/wrappers": ^1.3.11 "@navy.gif/wrappers": ^1.3.12
"@types/cors": ^2.8.13 "@types/cors": ^2.8.13
"@types/express-fileupload": ^1.4.1 "@types/express-fileupload": ^1.4.1
"@types/express-session": ^1.17.7 "@types/express-session": ^1.17.7