Odak modu

Node.js

Kayıt Sayfası ve Bcrypt Paketi

Kayıt Sayfası ve Bcrypt Paketi


SmartEdu projemizin kayıt sayfasını oluşturacağız. Kullanıcı modelimizi oluşturmak ile başlayalım.


const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const UserSchema = new Schema({
  name: {
    type: String,
    required: true,
  },
  email: {
    type: String,
    required: true,
    unique: true,
  },
  password: {
      type:String,
      required: true
  }
});

const User = mongoose.model('User', UserSchema);
module.exports = User;


User modelimizi oluşturduktan sonra kullanıcıyı oluşturacak olan ilgili controller fonksiyonunu yazalım.


const User = require('../models/User');

exports.createUser = async (req, res) => {
  try {
    const user = await User.create(req.body);

    res.status(201).json({
      status: 'success',
      user,
    });
  } catch (error) {
    res.status(400).json({
      status: 'fail',
      error,
    });
  }
};


Burada dikkat edilmesi gereken nokta, aslında tüm modellerimiz için yaptığımız CRUD işlemlerinin tamamı aynıdır. Bu controller fonksiyonunu adresleyecek olan ilgili route dosyası aşağıdaki gibi olacak.


router.route('/signup').post(authController.createUser);


app.js içerisinde de kayıt işlemini users/signup adreslenmiş oldu. Bu adresin kayıt formunda action ile aynı olması gerekir.



Bcrypt Paketi


Kullanıcıları oluşturduktan sonra veritabanımızda ilgili dökümanı incelediğimizde şifre bilgilerinin açık ve ulaşılabilir durumda olduklarını görüyoruz. Bu durum ciddi bir güvenlik açığı oluşturur, bu nedenle User modeli içerisinde şifrelerimizi veritabanına kaydetmeden önce şifreleyeceğiz.


Önce paketi indirelim.


npm i bcrypt


Sonra modelimizde password alanını şifreleyip "hash" e çeviriyoruz ve veritabanımına şifrelenmiş şekilde kaydediyoruz.


UserSchema.pre('save', function (next){
    const user = this;
    bcrypt.hash(user.password, 10, (error, hash) => {
        user.password = hash;
        next();
    })
})


Proje GitHub


Çalışma Özel GitHub



Daha Fazlası İçin


Background Pattern
Birlikte öğrenelim

Sektörde en çok aranan yazılım becerilerini kazan

Yapay zeka desteği, birebir mentörlük saatleri, canlı dersler ve senin için özel hazırlanmış içeriklerle eksiklerini tamamla, düzenli geri bildirimler al ve öğrenme sürecini en verimli hale getir.

Yunus Emre Kabakcı

Patika+ mezunu

Patika+ Fullstack Web Development Bootcamp mezunumuz Yunus Emre,

3 ay içinde Katar’dan aldığı teklif ile, global bir şirket olan Pavo Group’da işe başladı!


“İçerik zenginliği, mentor desteği, ileriye dönük bir network sağlaması ve dünyada en çok tercih edilen frameworkler üzerinden bir eğitim veriyor olması Patika+’ı tercih etmemin temel sebepleri oldu!“

Yorumlar

Yorum yapabilmek için derse kayıt olmalısın!