280 lines
5.4 KiB
Markdown
280 lines
5.4 KiB
Markdown
# 🚀 Authentication Quick Start Guide
|
||
|
||
Hızlı başlangıç için adım adım kılavuz.
|
||
|
||
## ⚡ 5 Dakikada Kurulum
|
||
|
||
### 1. Environment Variables Oluştur
|
||
|
||
```bash
|
||
# .env.local dosyası oluştur
|
||
cat > .env.local << 'EOF'
|
||
NEXTAUTH_URL=http://localhost:3000
|
||
NEXTAUTH_SECRET=super-secret-change-this-in-production
|
||
NEXT_PUBLIC_API_BASE_URL=http://localhost:8000/api/v1
|
||
GOOGLE_ID=
|
||
GOOGLE_SECRET=
|
||
GITHUB_ID=
|
||
GITHUB_SECRET=
|
||
EOF
|
||
```
|
||
|
||
### 2. NextAuth Secret Üret
|
||
|
||
```bash
|
||
openssl rand -base64 32
|
||
```
|
||
|
||
Çıktıyı `.env.local` dosyasındaki `NEXTAUTH_SECRET` değerine yapıştır.
|
||
|
||
### 3. Django Backend'i Başlat
|
||
|
||
```bash
|
||
# Django projenizde
|
||
cd your-django-project
|
||
python manage.py runserver
|
||
```
|
||
|
||
### 4. Next.js'i Başlat
|
||
|
||
```bash
|
||
# Bu projede
|
||
npm run dev
|
||
# veya
|
||
yarn dev
|
||
```
|
||
|
||
### 5. Test Et! 🎉
|
||
|
||
```bash
|
||
# Tarayıcıda aç:
|
||
http://localhost:3000/auth/register
|
||
```
|
||
|
||
## 📍 Hızlı Test Rotaları
|
||
|
||
| URL | Açıklama |
|
||
|-----|----------|
|
||
| `/auth/register` | Yeni hesap oluştur |
|
||
| `/auth/login` | Giriş yap |
|
||
| `/profile` | Profili görüntüle |
|
||
| `/dashboard` | Dashboard |
|
||
|
||
## 🧪 Test Senaryosu (5 Dakika)
|
||
|
||
### Senaryo 1: Email/Password ile Kayıt
|
||
|
||
```bash
|
||
1. http://localhost:3000/auth/register
|
||
- Email: test@example.com
|
||
- Password: Test1234!
|
||
- İsim: Test User
|
||
|
||
2. http://localhost:8025 (MailPit)
|
||
- Aktivasyon emailini aç
|
||
- Linke tıkla
|
||
|
||
3. http://localhost:3000/auth/login
|
||
- Email: test@example.com
|
||
- Password: Test1234!
|
||
- Giriş yap
|
||
|
||
4. http://localhost:3000/profile
|
||
- Profilini gör
|
||
- İsim değiştir
|
||
```
|
||
|
||
### Senaryo 2: Şifre Sıfırlama
|
||
|
||
```bash
|
||
1. http://localhost:3000/auth/password-reset
|
||
- Email: test@example.com
|
||
- Gönder
|
||
|
||
2. http://localhost:8025 (MailPit)
|
||
- Reset emailini aç
|
||
- Linke tıkla
|
||
|
||
3. Yeni şifre: NewPass123!
|
||
- Şifreyi değiştir
|
||
|
||
4. http://localhost:3000/auth/login
|
||
- Yeni şifre ile giriş
|
||
```
|
||
|
||
## 🔑 Social Auth Kurulumu (Opsiyonel)
|
||
|
||
### Google OAuth2 (2 dakika)
|
||
|
||
```bash
|
||
1. https://console.cloud.google.com/ → Giriş yap
|
||
2. Proje seç/oluştur
|
||
3. "APIs & Services" → "Credentials"
|
||
4. "Create Credentials" → "OAuth 2.0 Client ID"
|
||
5. Web application seç
|
||
6. Authorized redirect URIs:
|
||
http://localhost:3000/api/auth/callback/google
|
||
7. Client ID ve Secret'i .env.local'e ekle
|
||
```
|
||
|
||
### GitHub OAuth2 (2 dakika)
|
||
|
||
```bash
|
||
1. https://github.com/settings/developers → "New OAuth App"
|
||
2. Application name: "Your App"
|
||
3. Homepage URL: http://localhost:3000
|
||
4. Callback URL: http://localhost:3000/api/auth/callback/github
|
||
5. Client ID ve Secret'i .env.local'e ekle
|
||
```
|
||
|
||
## 🎯 API Kullanımı
|
||
|
||
### Kullanıcı Bilgilerini Al
|
||
|
||
```typescript
|
||
const { data: session } = useSession();
|
||
|
||
const response = await fetch(
|
||
`${process.env.NEXT_PUBLIC_API_BASE_URL}/auth/users/me/`,
|
||
{
|
||
headers: {
|
||
Authorization: `Bearer ${session.accessToken}`,
|
||
},
|
||
}
|
||
);
|
||
|
||
const user = await response.json();
|
||
```
|
||
|
||
### Profil Güncelle
|
||
|
||
```typescript
|
||
const response = await fetch(
|
||
`${process.env.NEXT_PUBLIC_API_BASE_URL}/auth/users/me/`,
|
||
{
|
||
method: "PATCH",
|
||
headers: {
|
||
"Content-Type": "application/json",
|
||
Authorization: `Bearer ${session.accessToken}`,
|
||
},
|
||
body: JSON.stringify({
|
||
first_name: "Yeni İsim",
|
||
last_name: "Yeni Soyisim",
|
||
}),
|
||
}
|
||
);
|
||
```
|
||
|
||
## 🔒 Protected Route Oluşturma
|
||
|
||
```typescript
|
||
"use client";
|
||
|
||
import { useSession } from "next-auth/react";
|
||
import { useRouter } from "next/navigation";
|
||
import { useEffect } from "react";
|
||
|
||
export default function ProtectedPage() {
|
||
const { data: session, status } = useSession();
|
||
const router = useRouter();
|
||
|
||
useEffect(() => {
|
||
if (status === "unauthenticated") {
|
||
router.push("/auth/login");
|
||
}
|
||
}, [status, router]);
|
||
|
||
if (status === "loading") {
|
||
return <div>Loading...</div>;
|
||
}
|
||
|
||
if (!session) {
|
||
return null;
|
||
}
|
||
|
||
return <div>Protected Content</div>;
|
||
}
|
||
```
|
||
|
||
## 🐛 Hızlı Troubleshooting
|
||
|
||
### Problem: "CORS error"
|
||
**Çözüm**: Django `settings.py`
|
||
```python
|
||
CORS_ALLOWED_ORIGINS = [
|
||
"http://localhost:3000",
|
||
]
|
||
```
|
||
|
||
### Problem: "Login failed"
|
||
**Kontrol**:
|
||
- ✅ Django backend çalışıyor mu?
|
||
- ✅ API_BASE_URL doğru mu?
|
||
- ✅ Email aktifleştirildi mi?
|
||
|
||
### Problem: "Social auth failed"
|
||
**Kontrol**:
|
||
- ✅ OAuth credentials doğru mu?
|
||
- ✅ Redirect URI eşleşiyor mu?
|
||
- ✅ Django'da social auth kurulu mu?
|
||
|
||
### Problem: "Email gelmiyor"
|
||
**Kontrol**:
|
||
- ✅ MailPit çalışıyor mu? (`http://localhost:8025`)
|
||
- ✅ Django email ayarları yapıldı mı?
|
||
|
||
## 📦 Paketler
|
||
|
||
Tüm gerekli paketler zaten kurulu:
|
||
|
||
```json
|
||
{
|
||
"dependencies": {
|
||
"next": "16.1.1",
|
||
"next-auth": "^4.24.13",
|
||
"react": "19.2.3",
|
||
"react-dom": "19.2.3"
|
||
}
|
||
}
|
||
```
|
||
|
||
## 📚 Daha Fazla Bilgi
|
||
|
||
- **Detaylı API Docs**: `AUTH.md`
|
||
- **Kurulum Kılavuzu**: `SETUP.md`
|
||
- **Implementation**: `AUTH-IMPLEMENTATION.md`
|
||
|
||
## ✅ Checklist
|
||
|
||
Kurulum tamamlandı mı?
|
||
|
||
- [ ] `.env.local` oluşturuldu
|
||
- [ ] `NEXTAUTH_SECRET` oluşturuldu
|
||
- [ ] Django backend çalışıyor
|
||
- [ ] Next.js dev server çalışıyor
|
||
- [ ] `/auth/register` sayfası açılıyor
|
||
- [ ] Test kullanıcı oluşturuldu
|
||
- [ ] Email aktivasyonu test edildi
|
||
- [ ] Login başarılı
|
||
- [ ] Dashboard erişildi
|
||
- [ ] Profil güncelleme çalışıyor
|
||
|
||
## 🎉 Başarılı!
|
||
|
||
Artık tam özellikli bir authentication sistemine sahipsiniz:
|
||
|
||
✅ Email/Password authentication
|
||
✅ Social authentication (Google, GitHub)
|
||
✅ Email activation
|
||
✅ Password reset
|
||
✅ User profile management
|
||
✅ Token refresh
|
||
✅ Protected routes
|
||
|
||
**Production'a hazır!** 🚀
|
||
|
||
---
|
||
|
||
**Last Updated**: 24 Aralık 2025
|
||
|