- Vue ile yazabilirsin admin panelini, ayrıyeten handlebars gibi bir template Engine kullanmana gerek yok. Lâkin, şöyle bir şey yapman gerekecek; kullanıcılara bir rol vermen gerekecek ve her sayfa yüklendiğinde kullanıcının rolünü kontrol edip, eğer talep edilen sayfa admin rolü gerektiyorsa ve kullanıcının rolü de admin ise, kullanıcıya bu sayfayı sunmalısın.
Handlebars kullanırsan, ayrı bir Endpoint'e bu paneli tanımlayabilirsin, fakat giriş ekranları da farklı olacaktır bu durumda.
En temizi; kullanıcılara rol verip, admin panelini de vue ile yapmak. Ben bunu tercih ediyorum.
- Jwt kurgusu şu şekilde olur; bir adet Endpoint'in olur login için. Eğer talep edilen Email'e ait bir kullanıcı var ise ve gönderilen parola veritabanındaki parola ile eşleşiyorsa, bir token imzalayıp, kullanıcıya response olarak dönersin ve kullanıcı bunu tarayıcısının local Storage'ına kaydeder.
Bir adet de Express Middleware'in olur. Kullanıcı her atacağı istekte, authorization Header'da, local Storage'da kaydettiği Token'i gönderir. Express Middleware'in, gönderilen Token'de bir sorun olup olmadığını kontrol eder (token geçerli bir token mi, secret doğru mu, imzada sorun var mı vs.). Eğer sorun yoksa, next()
fonksiyonunu çağırırsın ve kullanıcının istek attığı Endpoint'in Controller fonksiyonu çalışır. Eğer Token'de sorun varsa, next()
fonksiyonunu çağırmak yerine, kullanıcıya response olarak hata dönersin (genelde status code da gönderilir, örneğin 403).
Express middleware hakkında bilgin yok ise, önce bunun ne olduğunu ve nasıl kullanıldığını araştırmanı öneririm. JWT kullanımı için de, NPM sayfasını inceleyebilirsin.