یه برنامه نویس معمولی لینوکس کار
ساخت صفحه لاگین با ExpressJs + pug
خیلی تخصصی و حرفه ای نیست . چند مورد کوچیک و جالب رو دیدم و گفتم به اشتراک بزارم .
آخر همین پست به صفحه github من برید و پروژه رو از اونجا دریافت کنین .
با دوتا جستجو معمولی به همه این چیزایی که مینویسم میرسید .
میخوام یک صفحه لاگین و یک صفحه خوشامد در صورت لاگین موفقیت آمیز با داده های استاتیک ، داخل express Js و موتور قالب قدرمتند و جذاب pug بنویسیم .
اول از همه ترمینال رو باز کنین و دستور زیر رو بزنید تا express generator رو نصب کنیم .
npm install express-generator -g
حالا باید برنامه رو ایجاد کنیم
cd /var/www/html
mkdir expressLogin
cd expressLogin
npm init
چند تا سوال میپرسه و جواب بدید و در آخر yes .
حالا express رو ایجاد کنیم .
express --view=pug expressLogin
این دستور عالیه . براتون روتر و ویو یک سری چیز های باحال رو میسازه و میریم جلو .
حالا بریم داخل bin/www و فایل رو ویرایش کنین .
پورت 3000 رو میتونین اینجا تغییر بدید به 8080 یا هر چیز دیگه .
حالا بریم bootstrap رو نصب کنیم روی pug .
فایل view/layout.pug رو باز کنین و به این شکل تغییر بدید .
doctype html
html
head
title= title
link(rel='stylesheet', href='https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css')
link(rel='stylesheet', href='../stylesheets/style.css')
body
block content
script(src='https://code.jquery.com/jquery-3.3.1.slim.min.js')
script(src='https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js')
script(src='https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js')
حالا بریم صفحه لاگین و صفحه خوشامد رو بسازیم
من صفحه لاگین رو دقیقا از روی این لینک ساختم :
برای اینکه استایلمون کامل بشه ، به public/stylesheets/style.css برید .
کل فایل رو به زیر تغییر بدید .
html,
body {
height: 100%;
}
body {
padding-top: 40px;
padding-bottom: 40px;
background-color: #f5f5f5;
}
.form-signin {
width: 100%;
max-width: 330px;
padding: 15px;
margin: auto;
}
.form-signin .checkbox {
font-weight: 400;
}
.form-signin .form-control {
position: relative;
box-sizing: border-box;
height: auto;
padding: 10px;
font-size: 16px;
}
.form-signin .form-control:focus {
z-index: 2;
}
.form-signin input[type="email"] {
margin-bottom: -1px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.form-signin input[type="password"] {
margin-bottom: 10px;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
حالا صفحه view/index.pug رو باز کنین و به زیر تغییر بدید .
extends layout
block content
div.text-center
form(class="form-signin" method="POST" action="/users/login")
#error
if error
p.text-danger Error!!!
- var h1Classes = ['h3', 'mb-3', 'font-weight-normal']
h1(class=h1Classes) Please sign in
//-input email
label( for="inputEmail" class="sr-only") Email address
input(type="email" name="username" id="inputEmail" class="form-control" placeholder="Email address" required autofocus)
//-input password
label(for="inputPassword" class="sr-only") Password
input(type="password" name="password" id="inputPassword" class="form-control" placeholder="Password" required)
//-remember Checkbox
- var divClasses=['checkbox', 'mb-3'];
div(class=divClasses)
label
input(type="checkbox" value="remember-me")
span Remember me
//-signIn button
- var buttonClass=['btn', 'btn-lg', 'btn-primary', 'btn-block'];
button(class=buttonClass type="submit") Sign in
- var pClasses=['mt-5', 'mb-3', 'text-muted'];
p(class=pClasses) © 2017-2018
حالا یک فایل ایجاد کنید داخل view به اسم users.pug با محتوای زیر
extends layout
block content
div.text-center
div(class="form-signin")
div.text-center
p wellCome Dear #{username}!
حالا بریم روتر ها و درخواست ها رو درست کنیم
برید داخل app.js تا میدلور اضافه کنیم تا درخواست ها رو بتونیم پارس کنیم . زیر var app .... کد زیر رو وارد کنین :
//parse requests
app.use(bodyParser.urlencoded({ extended: true }));
و بالای همین فایل بالای cookieParser کد زیر رو جایگزین کنید :
var bodyParser = require('body-parser');
خوب حالا بریم داخل routes/index.jsو کد زیر رو جایگزین کنین :
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { error: false });
});
اینجا متغیر error رو false گذاشتیم .
حالا شما میتونین سرور رو اجرا کنین . و روی پورت 8080 (یا اگر تغییر ندادین ، روی 3000) ببینید . برای این کار دستور زیر رو بزنید :
npm run start
خوب میبینید که صفحه لاگین بدون خطا دقیقا مشابه نمونه که گذاشتم ایجاد شد .
حالا بریم سراغ ساختن روتر users/login و authorize کردن کاربر با داده های استاتیک .
برید داخل routes/users.js و کد زیر رو به جای محتوای فایل بزارید .
var express = require('express');
var router = express.Router();
var login = require('../controller/authenticate/login');
/* GET users listing. */
router.get('/', function (req, res, next) {
res.send('respond with a resource');
});
/* Login user */
router.post('/login', function (req, res, next) {
const username = req.body.username;
let loginResult = login(username, req.body.password);
if (loginResult) {
res.render('users', {username: username});
}
else {
res.render('index', {error: true});
}
});
module.exports = router;
اینجا داریم داخل بخش login میگیم اگر خروجی login برابر با true بود ، بریم به صفحه کاربر. در غیر این صورت بریم به index و error رو بزاریم true . خوب همه چیز عالیه جز یک چیز . این که ما متود login رو نساختیم .
پس داخل روت پروژه برید و پوشه controller/authenticate رو بسازید و داخل پوشه authenticate فایل login.js رو با محتوای زیر ایجاد کنین :
var login =function(user,password){
console.log(user,password)
if(user==="admin@admin.com" && password==="admin"){
return true;
}
else{
return false;
}
}
module.exports=login;
تمومه
حالا اگر نام کاربری رو admin@admin.com وارد کنید با رمز عبور admin ، وارد صفحه users میشید و در غیر این صورت یک خطا بالای صفحه لاگین میاد .
میخواستم یک سری نکته ریز رو توی پروژه بگم . کار حرفه ای نیست .
ارادت
مطلبی دیگر از این انتشارات
چگونه در node و nginx در حالت توزیع شده از socket-io استفاده کنیم
مطلبی دیگر از این انتشارات
کوتاه تر کد بنویسیم (قسمت سوم)
مطلبی دیگر از این انتشارات
تازه های تایپ اسکریپت ۳