Files
2026-03-04 20:02:39 +01:00

90 lines
2.3 KiB
Markdown

# 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