Ce référentiel est un logiciel d'Application avec Nodejs, Express, MongoDB et Ajax, cette application contient une API créée avec Express et une authentification via Passport.
En utilisant Nodejs v10.3, Express, Mongoose, Passport, Bcrypt, Express-Validator, Connect-Flash, Express-Handlebars, etc. de préférence.
Utiliser MongoDB de préférence.
Utiliser Postman ou RestEasy pour alimenter l'API.
$ git clone https://github.com/DanielArturoAlejoAlvarez/Strategy.git [NAME APP]
$ npm install
$ npm start
Suivez les étapes suivantes et vous êtes prêt à partir ! Important:
...
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
}
}
} ) )
. . .
Les rapports de bogues et les demandes d'extraction sont les bienvenus sur GitHub à l'adresse https://github.com/DanielArturoAlejoAlvarez/Strategy. Ce projet est destiné à être un espace de collaboration sûr et accueillant, et les contributeurs doivent adhérer au code de conduite Contributor Covenant.
La gemme est disponible en open source selon les termes de la licence MIT.