Verschieden Settings hinzugefügt (inkomplett)

This commit is contained in:
Torsten Schulz
2024-07-22 20:55:33 +02:00
parent 89842ff6c5
commit 4c12303edc
23 changed files with 269 additions and 208 deletions

View File

@@ -12,7 +12,6 @@ const saltRounds = 10;
export const registerUser = async ({ email, username, password, language }) => {
const iv = generateIv();
const encryptedEmail = encrypt(email, iv);
console.log(email, iv, process.env.SECRET_KEY);
const results = await sequelize.query(
`SELECT * FROM "community"."user" WHERE "email" = :email`,
{
@@ -20,14 +19,11 @@ export const registerUser = async ({ email, username, password, language }) => {
type: sequelize.QueryTypes.SELECT
}
);
console.log(results);
if (results.length && results.length > 0) {
throw new Error('Email already in use');
}
const hashedPassword = await bcrypt.hash(password, saltRounds);
const resetToken = uuidv4();
const user = await User.create({
email: encryptedEmail,
iv: iv.toString('hex'),
@@ -37,18 +33,15 @@ export const registerUser = async ({ email, username, password, language }) => {
active: false,
registration_date: new Date()
});
const languageType = await UserParamType.findOne({ where: { description: 'language' } });
if (!languageType) {
throw new Error('Language type not found');
}
await UserParam.create({
userId: user.id,
paramTypeId: languageType.id,
value: language
});
const activationLink = `${process.env.FRONTEND_URL}/activate?token=${resetToken}`;
await sendAccountActivationEmail(email, activationLink, username, resetToken, language);
@@ -56,7 +49,6 @@ export const registerUser = async ({ email, username, password, language }) => {
};
export const loginUser = async ({ username, password }) => {
console.log('check login');
const user = await User.findOne({ where: { username } });
if (!user) {
throw new Error('credentialsinvalid');
@@ -65,7 +57,7 @@ export const loginUser = async ({ username, password }) => {
if (!match) {
throw new Error('credentialsinvalid');
}
const neededParams = await UserParam.findAll({
const params = await UserParam.findAll({
where: {
userId: user.id
},
@@ -73,23 +65,13 @@ export const loginUser = async ({ username, password }) => {
model: UserParamType,
as: 'paramType',
where: {
description: ['birthdate', 'gender']
description: ['birthdate', 'gender', 'language']
}
}
});
const language = await UserParam.findOne({
where: {
userId: user.id
},
include: {
model: UserParamType,
as: 'paramType',
where: {
description: 'language'
}
}
});
return { id: user.hashedId, username: user.username, active: user.active, forwardDataInput: neededParams.length < 2, language: language.value };
const mappedParams = params.map(param => {
return { 'name': param.paramType.description, 'value': param.value }; });
return { id: user.hashedId, username: user.username, active: user.active, param: mappedParams };
};
export const handleForgotPassword = async ({ email }) => {
@@ -97,16 +79,12 @@ export const handleForgotPassword = async ({ email }) => {
if (!user) {
throw new Error('Email not found');
}
const resetToken = uuidv4();
const resetLink = `${process.env.FRONTEND_URL}/reset-password?token=${resetToken}`;
await user.update({ reset_token: resetToken });
const languageParam = await UserParam.findOne({ where: { user_id: user.id, param_type_id: languageType.id } });
const userLanguage = languageParam ? languageParam.value : 'en';
await sendPasswordResetEmail(email, resetLink, userLanguage);
return { message: 'Password reset email sent' };
};
@@ -115,7 +93,6 @@ export const activateUserAccount = async ({ token }) => {
if (!user) {
throw new Error('Invalid token');
}
await user.update({ active: true, reset_token: null });
return { message: 'Account activated' };
};