negyedik gyakorlat + megoldasok
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user