# Harmadik Gyakorlat - MINTA Megoldás

Ez a mappa tartalmazza a harmadik gyakorlat **teljes, működő megoldását**.

## Amit implementáltunk:

### 1. **Authentication (Hitelesítés)**
- User regisztráció jelszó hash-eléssel (bcrypt)
- User bejelentkezés JWT tokenekkel
- Cookie-based session kezelés
- Token frissítés (refresh token)
- Kijelentkezés

### 2. **Authorization (Jogosultságkezelés)**
- JWT token validálás middleware
- Role-based access control (RBAC)
- Resource ownership ellenőrzés
- Védett endpoint-ok

### 3. **Security Best Practices**
- HttpOnly cookie-k
- Secure cookie-k (production)
- JWT token expiry
- Password hashing (bcrypt)
- Input validáció

## Indítás

```bash
npm install
npm run docker:up
npx prisma generate
npx prisma migrate dev
npm run dev
```

## API Endpoints

### Auth Endpoints
- `POST /api/auth/register` - Regisztráció
- `POST /api/auth/login` - Bejelentkezés
- `POST /api/auth/logout` - Kijelentkezés (védett)
- `POST /api/auth/refresh` - Token frissítés
- `GET /api/auth/me` - Aktuális user (védett)

### Blog Endpoints
- `GET /api/blogs` - Összes blog (publikus)
- `GET /api/blogs/:id` - Egy blog (publikus)
- `POST /api/blogs` - Blog létrehozás (védett)
- `PUT /api/blogs/:id` - Blog módosítás (védett + ownership)
- `DELETE /api/blogs/:id` - Blog törlés (védett + ownership)

## Példa Használat

```bash
# Regisztráció
curl -X POST http://localhost:3000/api/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "email": "test@test.com",
    "username": "testuser",
    "password": "Test1234"
  }'

# Login
curl -X POST http://localhost:3000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "test@test.com",
    "password": "Test1234"
  }'

# Blog létrehozás (védett)
curl -X POST http://localhost:3000/api/blogs \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "My Blog",
    "content": "Blog content..."
  }'
```

## Tanulási Pontok

1. **JWT Tokens**: Access és Refresh tokenek használata
2. **Bcrypt**: Jelszó hash-elés és validálás
3. **Cookie-based Auth**: HttpOnly, Secure cookie-k
4. **Authorization Middleware**: Token validálás, role check, ownership
5. **Security**: Best practices implementálása
