nodejs-authentication/app/v1/models/user.js
2025-03-11 10:51:27 +00:00

117 lines
3.2 KiB
JavaScript

const DataTypes = require('sequelize');
class user {
constructor(connection) {
this.connection = connection;
const Model = DataTypes.Model;
class user extends Model { }
this.user = user.init({
id: {
type: DataTypes.BIGINT,
allowNull: false,
primaryKey: true,
autoIncrement: true
},
email: {
type: DataTypes.STRING(255),
allowNull: false
},
password: {
type: DataTypes.STRING(255),
allowNull: false
},
auth_token: {
type: DataTypes.STRING(255),
allowNull: true
},
auth_token_update: {
type: DataTypes.INTEGER(11),
allowNull: true
},
recover_token: {
type: DataTypes.STRING(255),
allowNull: true
},
recover_token_update: {
type: DataTypes.INTEGER(11),
allowNull: true
},
}, {
sequelize: connection,
modelName: 'user',
freezeTableName: true,
timestamps: false,
tableName: 'user'
});
}
async getOne(query) {
return await this.user.findOne({ where: query });
}
async getAll(query) {
return await this.user.findAll({ where: query });
}
async insertOne(email, password) {
let user = await this.getOne({ email: email })
if (user == null) {
try {
let insert_result = await this.user.create({ email: email, password: password })
try {
return { code: 200, message: "user created", result: insert_result }
} catch (error) {
await this.user.destroy(
{
where:
{
email: email
}
})
return { code: 500, error: 'Internal Server Error' }
}
} catch (error) {
return { code: 500, error: 'Internal Server Error' }
}
} else {
return { code: 400, error: 'Choose another email' }
}
}
async validateToken(auth_token) {
var data = await this.getOne({ auth_token: auth_token })
if (data != null) {
return data;
} else {
return null
}
}
async updatePassword(id, pwd) {
return await this.update({ password: pwd }, { where: { id: id } })
}
async deleteOne(auth_token) {
try {
let result = await this.user.destroy(
{
where:
{
"auth_token": auth_token
}
})
return { code: 200, message: result }
} catch (error) {
return { code: 400, error: 'User not found' }
}
}
}
module.exports = function (application) {
return user;
}