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:
45
models/PasswordResetToken.js
Normal file
45
models/PasswordResetToken.js
Normal 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;
|
||||
};
|
||||
@@ -25,5 +25,12 @@ module.exports = (sequelize) => {
|
||||
updatedAt: false
|
||||
});
|
||||
|
||||
User.associate = (models) => {
|
||||
User.hasMany(models.PasswordResetToken, {
|
||||
foreignKey: 'userId',
|
||||
as: 'passwordResetTokens'
|
||||
});
|
||||
};
|
||||
|
||||
return User;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user