1.7 KiB
1.7 KiB
Proje Yapısı
goaresv3/
├── main.go
├── .env
├── app/
│ ├── accounts/
│ │ ├── controllers/user.go
│ │ └── models/accounts.go
│ ├── settings/
│ │ ├── controllers/settings.go
│ │ └── models/{setting,hero,cors}.go
│ ├── shop/
│ │ ├── controllers/shop.go
│ │ └── models/{product,cart}.go
│ └── blog/
│ ├── controllers/blog.go
│ └── models/blog.go
├── config/database.go
├── pkg/
│ ├── jwt/jwt.go
│ ├── mailer/mailer.go
│ ├── middleware/{auth,cors_dynamic,rate_limit_dynamic}.go
│ └── swaggerui/initializer.go
├── router/router.go
├── docs/{docs.go,swagger.json,swagger.yaml}
└── belgeler/
Uygulama Akışı
.envyüklenir (godotenv).config.ConnectDB()ile MySQL bağlantısı açılır.config.RunAutoMigrate()tüm modüllerin şemalarını uygular.config.SeedSecurityDefaults()CORS/RateLimit başlangıç kayıtlarını (yoksa) ekler.- Gin başlatılır, global middlewareler çalışır:
DynamicCORS()DynamicRateLimit()
router.Setup(r)ile endpointler yüklenir.
Yetki Modeli
AuthRequired():- Access token doğrular
- Context'e
user_id,email,usernameyazar
AdminRequired():users.is_adminalanını kontrol ederPOST/PUT/DELETE/PATCHgibi mutating endpointlerde kullanılır
Route Grupları
- Public:
/api/v1/auth/* - Auth zorunlu (read + user işlemleri):
/api/v1/* - Admin zorunlu (mutating yönetim işlemleri):
/api/v1/*altında admin grubu - Swagger UI:
/swagger/*any