first commit
This commit is contained in:
279
AUTH-QUICK-START.md
Normal file
279
AUTH-QUICK-START.md
Normal file
@@ -0,0 +1,279 @@
|
||||
# 🚀 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
|
||||
|
||||
Reference in New Issue
Block a user