diff --git a/src/routes/api/v8/auth/login.ts b/src/routes/api/v8/auth/login.ts
index ac9775df..acdac1ce 100644
--- a/src/routes/api/v8/auth/login.ts
+++ b/src/routes/api/v8/auth/login.ts
@@ -2,7 +2,7 @@ import { Request, Response, Router } from "express";
import { check, FieldErrors, Length } from "../../../../util/instanceOf";
import bcrypt from "bcrypt";
import jwt from "jsonwebtoken";
-import { db, User } from "fosscord-server-util";
+import { User, UserModel } from "fosscord-server-util";
import Config from "../../../../util/Config";
import { adjustEmail } from "./register";
@@ -23,10 +23,12 @@ router.post(
const { login, password } = req.body;
// * MongoDB Specific query for user with same email or phone number
- const userquery = { $or: [{ email: adjustEmail(login) }, { phone: login }] };
- const user: User = await db.data
- .users(userquery)
- .get({ hash: true, id: true, user_settings: { locale: true, theme: true } });
+ const user = await UserModel.findOne(
+ {
+ $or: [{ email: adjustEmail(login) }, { phone: login }],
+ },
+ `hash id user_settings.locale user_settings.theme`
+ ).exec();
if (!user) {
throw FieldErrors({
diff --git a/src/routes/api/v8/auth/register.ts b/src/routes/api/v8/auth/register.ts
index 1250b689..1205c462 100644
--- a/src/routes/api/v8/auth/register.ts
+++ b/src/routes/api/v8/auth/register.ts
@@ -1,6 +1,6 @@
import { Request, Response, Router } from "express";
import Config from "../../../../util/Config";
-import { db, trimSpecial, User, Snowflake } from "fosscord-server-util";
+import { trimSpecial, User, Snowflake, UserModel } from "fosscord-server-util";
import bcrypt from "bcrypt";
import { check, Email, EMAIL_REGEX, FieldErrors, Length } from "../../../../util/instanceOf";
import "missing-native-js-functions";
@@ -80,7 +80,8 @@ router.post(
adjusted_email = adjustEmail(email);
// check if there is already an account with this email
- const exists = await db.data.users({ email: adjusted_email }).get();
+ const exists = await UserModel.findOne({ email: adjusted_email }).exec();
+
if (exists) {
throw FieldErrors({
email: {
@@ -116,7 +117,8 @@ router.post(
if (!register.allowMultipleAccounts) {
// TODO: check if fingerprint was eligible generated
- const exists = await db.data.users({ fingerprint }).get();
+ const exists = await UserModel.findOne({ fingerprints: fingerprint }).exec();
+
if (exists) {
throw FieldErrors({
email: {
@@ -150,7 +152,7 @@ router.post(
// TODO: is there any better way to generate a random discriminator only once, without checking if it already exists in the mongodb database?
for (let tries = 0; tries < 5; tries++) {
discriminator = Math.randomIntBetween(1, 9999).toString().padStart(4, "0");
- exists = await db.data.users({ discriminator, username: adjusted_username }).get({ id: true });
+ exists = await UserModel.findOne({ discriminator, username: adjusted_username }, "id").exec();
if (!exists) break;
}
@@ -164,6 +166,8 @@ router.post(
}
// constructing final user object
+ // TODO fix:
+ // @ts-ignore
const user: User = {
id: Snowflake.generate(),
created_at: Date.now(),
@@ -220,7 +224,7 @@ router.post(
};
// insert user into database
- await db.data.users.push(user);
+ await new UserModel(user).save({});
return res.json({ token: await generateToken(user.id) });
}
|