#aws Ec2 instance
Node express js framework ve minimal routing/middleware yapısı kullanılmıştır.
{ "firstname":"John", "lastname":"Doe", "email":"[email protected]", "password":"111111" }
app.js dosyası içerisinde proje routeları bulunmaktadır, auth routeları kayıt ve giriş aksiyonlarnı yaptığından middlware dışında bırakılmıştır.
app.use('/auth', authRouter); app.use(authMiddleware); app.use('/', indexRouter); app.use('/users', usersRouter);
app.use(function(req, res, next) {
res.status(404);
// respond with json
if (req.accepts('json')) {
res.json({ error: 'Not found' });
return;
}
// default to plain-text. send()
res.type('txt').send('Not found');
});
routes -> auth / users / index 3 farklı route prefixi ile oluşmaktadır ve update / delete routeları !! roleMiddleware !! kullanarak role based işlem yapılmasını sağlamaktadır.
router.patch('/update', updateUserValidator(), roleMiddleware, async function(req, res, next) {
return res.send(await updateUser(req.body) )
});
services -> User -> index / authservice olarak iki service'den oluşmaktadır bu kısım proje routelarının içerisinde yalnızca temel / validasyon vb gibi parse işlemlernin yapılıp route dosyalarında fazla kodu önlemek amaçlıdır.
validator -> login / register / remove / update olarak 4 total validator'den oluşmaktadır ve proje validasyonu için her ilgili route'ta çağrılmaktadır.
app.use(cors()); aksiyonu projelerin ikiside aynı ec2 insance'ında bulunduğundan local istek gönderiminde cors block policy önlemek içindir.
config/config.json sequelize default config dosyasıdır ve env bazlı configure edilebilir, local kurulum yapılacak ise NODE_ENV=development olmalıdır
User modeli hasOne lişikisi ile Role modeline bağlıdır, bir kullanıcı eklendiğinde sequelize afterCreate hook'u kullanılarak 'default' rele'ü kullanıcıya atanır.
beforeCreate ve beforeUpdate hookları'da ilgili model içerisinde configure edilmiştir bu sayede projede kullanılan bcrypt hash metodu gereksinimi sağlanır.
Role modeli ise belongsTo ilişkilendirmesi ile User modeline bağlıdır.