Änderungen am TAgebuch

This commit is contained in:
Torsten Schulz
2024-08-30 11:50:54 +02:00
parent 828035d339
commit 1ac1fc9ca0
116 changed files with 6859 additions and 6765 deletions

View File

@@ -7,6 +7,10 @@ const Club = sequelize.define('Club', {
allowNull: false,
unique: true,
},
}, {
tableName: 'clubs',
underscored: true,
timestamps: true
});
export default Club;

View File

@@ -0,0 +1,34 @@
import { DataTypes } from 'sequelize';
import sequelize from '../database.js';
import Club from './Club.js'; // Importiere das Club-Modell
const DiaryDate = sequelize.define('DiaryDate', {
date: {
type: DataTypes.DATEONLY,
allowNull: false,
},
clubId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: Club,
key: 'id'
},
onDelete: 'CASCADE',
},
trainingStart: {
type: DataTypes.TIME,
allowNull: true,
},
trainingEnd: {
type: DataTypes.TIME,
allowNull: true,
}
}, {
tableName: 'diary_dates',
underscored: true,
timestamps: true
});
export default DiaryDate;

View File

@@ -7,20 +7,18 @@ const Log = sequelize.define('Log', {
type: DataTypes.STRING,
allowNull: false,
},
timestamp: {
type: DataTypes.DATE,
defaultValue: DataTypes.NOW,
},
userId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: User,
model: 'user',
key: 'id',
},
},
},
{
underscored: true
}, {
underscored: true,
tableName: 'log',
timestamps: true
});
export default Log;

View File

@@ -1,12 +1,10 @@
const { DataTypes, Model } = require('sequelize');
const crypto = require('crypto');
const sequelize = require('../database');
const Club = require('./Club');
const { encryptData, decryptData } = require('../utils/encrypt');
import { DataTypes, Model } from 'sequelize';
import crypto from 'crypto';
import sequelize from '../database.js';
import Club from './Club.js';
import { encryptData, decryptData } from '../utils/encrypt.js';
class Member extends Model {}
Member.init({
const Member = sequelize.define('User', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
@@ -18,18 +16,30 @@ Member.init({
unique: true,
allowNull: false,
defaultValue() {
return crypto.randomBytes(16).toString('hex');
return crypto.randomBytes(64).toString('hex');
}
},
name: {
firstName: {
type: DataTypes.STRING,
allowNull: false,
set(value) {
const encryptedValue = encryptData(value);
this.setDataValue('name', encryptedValue);
this.setDataValue('firstName', encryptedValue);
},
get() {
const encryptedValue = this.getDataValue('name');
const encryptedValue = this.getDataValue('firstName');
return decryptData(encryptedValue);
}
},
lastName: {
type: DataTypes.STRING,
allowNull: false,
set(value) {
const encryptedValue = encryptData(value);
this.setDataValue('lastName', encryptedValue);
},
get() {
const encryptedValue = this.getDataValue('lastName');
return decryptData(encryptedValue);
}
},
@@ -80,27 +90,50 @@ Member.init({
const encryptedValue = this.getDataValue('city');
return decryptData(encryptedValue);
}
},
email: {
type: DataTypes.STRING,
allowNull: false,
set(value) {
const encryptedValue = encryptData(value);
this.setDataValue('email', encryptedValue);
},
get() {
const encryptedValue = this.getDataValue('email');
return decryptData(encryptedValue);
}
},
clubId: {
type: DataTypes.INTEGER,
allowNull: false,
},
active: {
type: DataTypes.BOOLEAN,
allowNull: false,
default: true,
}
}, {
underscored: true,
sequelize,
modelName: 'Member',
tableName: 'members',
tableName: 'member',
timestamps: true,
hooks: {
beforeCreate: (member) => {
afterCreate: (member) => {
member.hashedId = crypto.createHash('sha256').update(String(member.id)).digest('hex');
member.save();
},
beforeUpdate: (member) => {
if (member.changed('id')) {
member.hashedId = crypto.createHash('sha256').update(String(member.id)).digest('hex');
}
}
}
});
},
{
underscored: true,
tableName: 'log',
timestamps: true
}
);
Member.belongsTo(Club);
Club.hasMany(Member);
Member.belongsTo(Club, { as: 'club' });
Club.hasMany(Member, { as: 'members' });
module.exports = Member;
export default Member;

View File

@@ -3,6 +3,12 @@ import sequelize from '../database.js';
import bcrypt from 'bcrypt';
const User = sequelize.define('User', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false
},
hashedId: {
type: DataTypes.STRING(1024),
allowNull: true,
@@ -16,6 +22,10 @@ const User = sequelize.define('User', {
type: DataTypes.STRING,
allowNull: false,
},
salt: {
type: DataTypes.STRING,
allowNull: true,
},
activationCode: {
type: DataTypes.STRING,
allowNull: true,
@@ -30,20 +40,27 @@ const User = sequelize.define('User', {
}
}, {
underscored: true,
table: 'user',
tableName: 'user',
timestamps: true,
hooks: {
beforeCreate: async (user) => {
const salt = await bcrypt.genSalt(10);
user.salt = salt;
console.log(user);
user.password = await bcrypt.hash(user.password, salt);
},
beforeUpdate: async (user) => {
if (user.changed('password')) {
const salt = await bcrypt.genSalt(10);
user.password = await bcrypt.hash(user.password, salt);
if (!user.password.startsWith('$2b$') && !user.password.startsWith('$2a$')) {
const salt = user.salt;
user.password = await bcrypt.hash(user.password, salt);
}
}
},
afterCreate: async (user) => {
user.hashedId = bcrypt.hash(user.id.toString());
const salt = await bcrypt.genSalt(10);
user.hashedId = await bcrypt.hash(user.id.toString(), salt);
await user.save();
}
},
});

View File

@@ -23,7 +23,9 @@ const UserClub = sequelize.define('UserClub', {
defaultValue: false,
},
}, {
underscored: true
underscored: true,
tableName: 'user_club',
timestamps: true
});
User.belongsToMany(Club, { through: UserClub, foreignKey: 'userId' });

View File

@@ -2,6 +2,7 @@ import User from './User.js';
import Log from './Log.js';
import Club from './Club.js';
import UserClub from './UserClub.js';
import DiaryDate from './DiaryDates.js';
User.hasMany(Log, { foreignKey: 'userId' });
Log.belongsTo(User, { foreignKey: 'userId' });
@@ -9,4 +10,7 @@ Log.belongsTo(User, { foreignKey: 'userId' });
User.belongsToMany(Club, { through: UserClub, foreignKey: 'userId' });
Club.belongsToMany(User, { through: UserClub, foreignKey: 'clubId' });
DiaryDate.belongsTo(Club, { foreignKey: 'clubId' });
Club.hasMany(DiaryDate, { foreignKey: 'clubId' });
export { User, Log, Club, UserClub };