Feature Registration

Inisiasi Model Data

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: bcrypt

npm install bcrypt

Generate Table users

npm run db:migrate

Membuat API Registrasi

kita akan membuat api registrasi dengan alamat /api/v1/users/register

1. Membuat Service Registrasi

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.

2. Membuat Controller User Registrasi

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