Strategy
1.0.0
พื้นที่เก็บข้อมูลนี้เป็นซอฟต์แวร์แอปพลิเคชันที่มี Nodejs, Express, MongoDB และ Ajax แอปพลิเคชันนี้มี API ที่สร้างด้วย Express และการตรวจสอบสิทธิ์โดยใช้ Passport
ใช้ Nodejs v10.3, Express, Mongoose, Passport, Bcrypt, Express-Validator, Connect-Flash, Express-Handlebars ฯลฯ โดยเฉพาะอย่างยิ่ง
ใช้ MongoDB จะดีกว่า
ใช้บุรุษไปรษณีย์หรือ RestEasy เพื่อป้อน API
$ git clone https://github.com/DanielArturoAlejoAlvarez/Strategy.git [NAME APP]
$ npm install
$ npm start
ทำตามขั้นตอนต่อไปนี้ เท่านี้ก็เรียบร้อย! สำคัญ:
...
router . post ( '/register' , ( req , res ) => {
let { name , email , username , password , password2 , avatar , role , age , state } = req . body
//Validations
req . checkBody ( 'name' , 'Name is required' ) . notEmpty ( )
req . checkBody ( 'email' , 'Email is not valid' ) . isEmail ( )
req . checkBody ( 'username' , 'Username is required' ) . notEmpty ( )
req . checkBody ( 'password' , 'Password is required' ) . notEmpty ( )
req . checkBody ( 'password2' , 'Password do not match' ) . equals ( req . body . password )
req . checkBody ( 'avatar' , 'Avatar is required' ) . notEmpty ( )
req . checkBody ( 'role' , 'Role is required' ) . isNumeric ( )
req . checkBody ( 'age' , 'Age is required' ) . isNumeric ( )
req . checkBody ( 'state' , 'State is required' ) . isBoolean ( )
let errors = req . validationErrors ( )
if ( errors ) {
res . render ( 'register' , {
errors : errors
} )
} else {
let newUser = new User ( {
name : name ,
email : email ,
username : username ,
password : password ,
avatar : avatar ,
role : role ,
age : age ,
state : state
} )
User . createUser ( newUser , ( err , user ) => {
if ( err ) throw err
console . log ( user )
} )
req . flash ( 'success_msg' , 'You are registered and can now login.' )
res . redirect ( '/users/login' )
}
} )
. . .
...
const UserSchema = new Schema ( {
username : {
type : String ,
index : true
} ,
password : {
type : String
} ,
email : {
type : String
} ,
name : {
type : String
} ,
avatar : {
type : String
} ,
role : {
type : Number
} ,
age : {
type : Number
} ,
state : {
type : Boolean
}
} )
const User = module . exports = mongoose . model ( 'User' , UserSchema )
module . exports . createUser = function ( newUser , callback ) {
bcrypt . genSalt ( 10 , function ( err , salt ) {
bcrypt . hash ( newUser . password , salt , function ( err , hash ) {
newUser . password = hash
newUser . save ( callback )
} )
} )
}
. . .
...
//Session
app . use ( session ( {
secret : 'mysecretkey' ,
saveUninitialized : true ,
resave : true
} ) )
//Passport init
app . use ( passport . initialize ( ) )
app . use ( passport . session ( ) )
//Validator
app . use ( expressValidator ( {
errorFormatter : function ( param , msg , value ) {
var namespace = param . split ( '.' ) ,
root = namespace . shift ( ) ,
formParam = root
while ( namespace . length ) {
formParam += '[' + namespace . shift ( ) + ']'
}
return {
param : formParam ,
msg : msg ,
value : value
}
}
} ) )
. . .
รายงานข้อผิดพลาดและคำขอดึงยินดีต้อนรับบน GitHub ที่ https://github.com/DanielArturoAlejoAlvarez/Strategy โครงการนี้มีวัตถุประสงค์เพื่อเป็นพื้นที่ที่ปลอดภัยและเป็นมิตรสำหรับการทำงานร่วมกัน และผู้มีส่วนร่วมจะต้องปฏิบัติตามจรรยาบรรณของผู้ร่วมให้ข้อมูล
อัญมณีนี้มีให้ใช้งานในรูปแบบโอเพ่นซอร์สภายใต้เงื่อนไขของใบอนุญาต MIT