Yükleme

Yükleme islemi yada kendiniz tekrar yazabilmeniz icin gereksinimleri tamamlayiniz:
Temel Gereksinimler:
1- Node! (Cok bariz bir bilgi)
2- Npm!
3- MongoDB
4- MongoDB-Compass (opsiyonel tabii)
NPM yüklemeleri:
1- npm install express
2- npm install –save-dev nodemon
3- npm install pug
4- npm install body-parser (SADECE EXPRESS < = V3 )
5- npm install express-validator
6- npm install dotenv
7- npm install mongoose
8- npm install http-auth
Digerleri:
1- Daha güzel htaccess sifreleri icin : https://hostingcanada.org/htpasswd-generator/
2- Bootstrap : https://getbootstrap.com/docs/4.4/getting-started/download/
Baslangic
Projeyi init etmeyi unutmayiniz:
$ npm init -y
Projeyi calistirma ve inceleme:
Projeyi calistirmak icin : npm run proje
Hata almadiginizdan emin olduktan sonra : http://localhost:3000 üstünde Kayitlari yapabilirsiniz.
Kayitlari incelemek icin : http://localhost:3000/registrations addressine gidin.
Giris
Giris sifresini degistirmezseniz standart giris ve sifre bilgisi:
Kullanici Adi: saizzou
Kullanici Sifresi : test12345
HTACCESS Bilgilendirme
Projedeki users.htpasswd icerigini degistirin bunu sifreleyip yapmanizi tavsiye ederim. Kolay bir MD5 sifrelemesi icin : https://hostingcanada.org/htpasswd-generator/
Projeyi yayinlayacaksaniz dikkat!
Bulunan users.htpasswd dosyasi iceriginin izinlerini degistirin! 755 izinini 644 olarak degistirmenizi tavsiye ederim!
const express = require('express');
const path = require('path');
const routes = require('./routes/index');
const app = express();
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(express.urlencoded({extended: true})); // Eski tip Express (<=3) kullananlar buraya bodyParse kullanmali!
app.use(express.json())
app.use('/', routes); // Sakin bunu basa atamayin Parser isleminden önce olursa Parser dönümü bosa cikar!
app.use(express.static('public'));
module.exports = app;
require('dotenv').config();
const Registration = require('./models/Registration');
const mongoose = require('mongoose');
mongoose.connect(process.env.DATABASE, {
useNewUrlParser: true,
useUnifiedTopology: true
});
mongoose.connection
.on('open', () => {
console.log('Mongoose baglantisi olusturuldu!');
})
.on('error', (err) => {
console.log(`Baglanti hatasi: ${err.message}`);
});
const app = require('./app');
const server = app.listen(3000, () => {
console.log(`Express ${server.address().port} Portu üstünde calisiyor!`);
});
const express = require('express');
const mongoose = require('mongoose');
const { check, validationResult } = require('express-validator');
const router = express.Router();
const Registration = mongoose.model('Registration');
const path = require('path');
const auth = require('http-auth');
const basic = auth.basic({
file: path.join(__dirname, '../users.htpasswd'),
});
module.exports = router;
router.get('/', (req, res) => {
res.render('form', { title: 'Giris Formu!'});
});
router.post('/', [
check('name')
.isLength({min: 1 })
.withMessage('Lütfen bir isim giriniz!'),
check('email')
.isLength({min: 5 })
.withMessage('Email addressi gecersizdir!'),
check('email')
.isEmail()
.withMessage('Email addressi girmediniz!')
] ,
(req, res) => {
const errors = validationResult(req);
console.log(req.body);
if (errors.isEmpty()){
const registration = new Registration(req.body);
registration.save()
.then(() => { res.send('Kayit icin Tesekkürtler!'); })
.catch((err) => {
console.log(err);
res.send('Sanirim birseyler ters gitti!');
});
} else {
res.render('form', {
title: 'Giris Formu!',
errors: errors.array(),
data: req.body,
});
}
});
router.get('/registrations', basic.check((req, res) =>{
Registration.find()
.then((registrations) => {
res.render('index', { title: 'Kayitli Üyeler Listesi', registrations});
})
.catch(() => { res.send('Üzgünüm bir sorun olustu!'); });
}));
const mongoose = require('mongoose');
const registrationSchema = new mongoose.Schema({
name: {
type: String,
trim: true,
},
email: {
type: String,
trim: true,
},
});
module.exports = mongoose.model('Registration', registrationSchema);
extends layout
block content
-data = data || {}
if errors
ul
for error in errors
li= error.msg
//li= arasina bosluk konulmamali! yoksa link fonksiyonu calismayacaktir. Pug kodlamada bosluklar önemlidir!
form(action="." method="POST" class="form-registration")
label(for="name") Isim:
input(
type="text"
id="name"
name="name"
class="form-control"
value=data.name
)
label(for="email") Email:
input(
type="email"
id="email"
name="email"
class="form-control"
value=data.email
)
input(type="submit" value="Giris Yap" class="btn btn-lg btn-primary btn-block")
extends layout
block content
p Kayitli üyeler Listesi:
if registrations.length
table.listing-table.table-dark.table-striped
tr
th Isim
th Email
each registration in registrations
tr
td= registration.name
td= registration.email
else
p Kayitli Üye bulunamadi!
doctype html
html
head
title= `${title}`
link(rel='stylesheet', href='/css/bootstrap.min.css')
link(rel='stylesheet', href='/css/styles.css')
body
div.container.listing-reg
h1 Yeni bir App!
block content