90 lines
2.3 KiB
Markdown
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
|