Repositori ini adalah perangkat lunak Aplikasi dengan Nodejs, Express, MongoDB dan Ajax, aplikasi ini berisi API yang dibuat dengan Express dan otentikasi menggunakan Passport.
Lebih disukai menggunakan Nodejs v10.3, Express, Mongoose, Passport, Bcrypt, Express-Validator, Connect-Flash, Express-Handlebars, dll.
Lebih disukai menggunakan MongoDB.
Menggunakan Tukang Pos atau RestEasy untuk memberi makan api.
$ git clone https://github.com/DanielArturoAlejoAlvarez/Strategy.git [NAME APP]
$ npm install
$ npm start
Ikuti langkah-langkah berikut dan Anda siap melakukannya! Penting:
...
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
}
}
} ) )
. . .
Laporan bug dan permintaan penarikan diterima di GitHub di https://github.com/DanielArturoAlejoAlvarez/Strategy. Proyek ini dimaksudkan untuk menjadi ruang kolaborasi yang aman dan ramah, dan kontributor diharapkan mematuhi kode etik Perjanjian Kontributor.
Permata ini tersedia sebagai sumber terbuka berdasarkan ketentuan Lisensi MIT.