B. Authentication & Authorization

Tutorial Authentication & Authorization

1. Backend Authentication

1.1 Setup Auth Middleware (src/middleware/auth.js)

const jwt = require('jsonwebtoken');

const auth = (req, res, next) => {
  try {
    const token = req.headers.authorization.split(' ')[1];
    const decoded = jwt.verify(token, process.env.JWT_SECRET);
    req.user = decoded;
    next();
  } catch (error) {
    res.status(401).json({ message: 'Auth failed' });
  }
};

// Role middleware akan diimplementasikan nanti
/*
const checkRole = (roles) => {
  return (req, res, next) => {...}
};
*/

module.exports = { auth };

1.2 User Model (src/models/User.js)

1.3 Auth Controller (src/controllers/authController.js)

1.4 Auth Routes (src/routes/auth.routes.js)

2. Frontend Authentication

2.1 Auth Slice (src/store/slices/authSlice.js)

2.2 Auth Service (src/services/auth.service.js)

2.3 Protected Route Component (src/components/common/ProtectedRoute.js)

2.4 Login Page (src/pages/Login.js)

2.5 Update App.js dengan Protected Routes

Catatan Penting:

  • Implementasikan validasi form sebelum mengirim request ke server

  • Tambahkan error handling yang proper di semua endpoints

  • Implementasikan logout functionality

  • Tambahkan loading states untuk feedback user

  • Implementasikan refresh token jika diperlukan

  • Pastikan semua routes terlindungi dengan proper authorization

  • Implementasikan remember me functionality jika diperlukan

Untuk testing:

  1. Register user baru

  2. Login dengan credentials

  3. Akses protected route

  4. Test role-based access

  5. Test token expiration

  6. Test unauthorized access

Last updated

Was this helpful?