Sebelum kita buat kan fitur registrasi, tentunya model perlu kita buatkan terlebih dahulu, untuk inisiasi model data user, kita dapat menjalankan perintah sebagi berikut.
sequelize model:generate --name user --attributes email:string,password:string,name:string
untuk password kita butuh enkripsi, untuk proses enkripsi kita butuh library bcrypt dengan cara.
npm install bcrypt
usersnpm run db:migrate
kita akan membuat api registrasi dengan alamat /api/v1/users/register
Membuat class UserService buat file user.service.js di folder services. dan buat method store untuk fungsi create user di db.
const { user } = require("../models");
const bcrypt = require("bcrypt");
class UserService {
constructor() {
this.userModel = user;
}
async store(payload) {
const date = new Date();
const { name, email, password } = payload;
const encript = await bcrypt.hash(password, 10);
// Simpan data pengguna ke database
const data = await this.userModel.create({
name,
email,
password: encript,
createdAt: date,
updatedAt: date,
});
return data;
}
}
module.exports = UserService;
Fungsi const encript = await bcrypt.hash(password, 10); merupakan fungsi untuk enkripsi atau hashing password yang akan di simpan di database.
Membuat class UserController , buat file user.controller di folder controllers, dan buat method register
const UserService = require("../services/user.service");
const userService = new UserService();
class UserController {
async register(req, res) {
try {
await userService.store(req.body);
// Tampilkan pesan sukses atau respons yang sesuai
res.status(201).json({ message: 'Registrasi berhasil' });
} catch (error) {
console.error(error);
res.status(500).json({ error: 'Gagal mendaftar' });
}
}
}
module.exports = UserController;
Panggil class UserController dan buat endpoint /api/v1/users/register di file router api.js