Implementiere Passwort-Zurücksetzen-Funktionalität im authController, einschließlich E-Mail-Versand und Token-Generierung. Aktualisiere die Benutzer- und Router-Modelle, um neue Routen für Passwort-Wiederherstellung hinzuzufügen. Passe die Frontend-Komponenten für die Passwort-Zurücksetzen-Logik an und verbessere die Benutzeroberfläche für die Eingabe der E-Mail-Adresse.

This commit is contained in:
Torsten Schulz (local)
2025-09-24 09:12:20 +02:00
parent 7c09abf534
commit 46783b35ea
15 changed files with 553 additions and 12 deletions

View File

@@ -0,0 +1,45 @@
const { DataTypes } = require('sequelize');
module.exports = (sequelize) => {
const PasswordResetToken = sequelize.define('PasswordResetToken', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
userId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: 'Users',
key: 'id'
}
},
token: {
type: DataTypes.STRING,
allowNull: false,
unique: true
},
expiresAt: {
type: DataTypes.DATE,
allowNull: false
},
used: {
type: DataTypes.BOOLEAN,
defaultValue: false
}
}, {
timestamps: true,
createdAt: 'created_at',
updatedAt: 'updated_at'
});
PasswordResetToken.associate = (models) => {
PasswordResetToken.belongsTo(models.User, {
foreignKey: 'userId',
as: 'user'
});
};
return PasswordResetToken;
};

View File

@@ -25,5 +25,12 @@ module.exports = (sequelize) => {
updatedAt: false
});
User.associate = (models) => {
User.hasMany(models.PasswordResetToken, {
foreignKey: 'userId',
as: 'passwordResetTokens'
});
};
return User;
};