✨ [Route] Register
This commit is contained in:
parent
6e86362b1c
commit
7998b39757
@ -5,6 +5,7 @@ import bcrypt from "bcrypt";
|
|||||||
import jwt from "jsonwebtoken";
|
import jwt from "jsonwebtoken";
|
||||||
import Config from "../../../../util/Config";
|
import Config from "../../../../util/Config";
|
||||||
import { User } from "../../../../models/User";
|
import { User } from "../../../../models/User";
|
||||||
|
import { adjustEmail } from "./register";
|
||||||
const router: Router = Router();
|
const router: Router = Router();
|
||||||
|
|
||||||
router.post(
|
router.post(
|
||||||
@ -19,7 +20,9 @@ router.post(
|
|||||||
}),
|
}),
|
||||||
async (req: Request, res: Response) => {
|
async (req: Request, res: Response) => {
|
||||||
const { login, password } = req.body;
|
const { login, password } = req.body;
|
||||||
const userquery = { $or: [{ email: login }, { phone: login }] };
|
|
||||||
|
// query for user with same email or phone number
|
||||||
|
const userquery = { $or: [{ email: adjustEmail(login) }, { phone: login }] };
|
||||||
const user: User = await db.data
|
const user: User = await db.data
|
||||||
.users(userquery)
|
.users(userquery)
|
||||||
.get({ hash: true, id: true, user_settings: { locale: true, theme: true } });
|
.get({ hash: true, id: true, user_settings: { locale: true, theme: true } });
|
||||||
@ -30,6 +33,7 @@ router.post(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the salt is saved in the password refer to bcrypt docs
|
||||||
const same_password = await bcrypt.compare(password, user.hash);
|
const same_password = await bcrypt.compare(password, user.hash);
|
||||||
if (!same_password) {
|
if (!same_password) {
|
||||||
throw FieldErrors({
|
throw FieldErrors({
|
||||||
@ -37,7 +41,7 @@ router.post(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const token = generateToken(user.id);
|
const token = await generateToken(user.id);
|
||||||
|
|
||||||
// Notice this will have a different token structure, than discord
|
// Notice this will have a different token structure, than discord
|
||||||
// Discord header is just the user id as string, which is not possible with npm-jsonwebtoken package
|
// Discord header is just the user id as string, which is not possible with npm-jsonwebtoken package
|
||||||
@ -47,7 +51,7 @@ router.post(
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
export function generateToken(id: bigint) {
|
export async function generateToken(id: bigint) {
|
||||||
const iat = Math.floor(Date.now() / 1000);
|
const iat = Math.floor(Date.now() / 1000);
|
||||||
const algorithm = "HS256";
|
const algorithm = "HS256";
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user