File tree Expand file tree Collapse file tree 3 files changed +53
-0
lines changed Expand file tree Collapse file tree 3 files changed +53
-0
lines changed Original file line number Diff line number Diff line change 1+ const passport = require ( 'passport' ) ;
2+ const User = require ( '../users/user.model' ) ;
3+ const { Strategy, ExtractJwt } = require ( 'passport-jwt' ) ;
4+
5+ passport . use ( new Strategy (
6+ {
7+ jwtFromRequest : ExtractJwt . fromAuthHeaderAsBearerToken ( ) , // extract token from Authorization header as a Bearer token
8+ secretOrKey : process . env . JWT_SECRET // jwt secret extracted from .env
9+ } ,
10+ function ( token , done ) {
11+ User . findOne ( { _id : token . sub } , function ( err , user ) {
12+ if ( err ) return done ( err , false ) ; // error
13+ if ( user ) return done ( null , {
14+ _id :user ?. _id ,
15+ role :user ?. role
16+ } ) ; // user found
17+ return done ( null , false ) ; // user not found
18+ } ) ;
19+ }
20+ )
21+ ) ;
22+ module . exports = passport ;
Original file line number Diff line number Diff line change 1+ const passport = require ( 'passport' ) ;
2+ const { Strategy } = require ( 'passport-local' ) ;
3+ const User = require ( '../users/user.model' ) ;
4+ const usersService = require ( '../users/user.service' ) ;
5+
6+ passport . use ( new Strategy (
7+ function ( username , password , done ) {
8+ User . findOne ( { username } , async function ( err , user ) {
9+ if ( err ) return done ( err )
10+ if ( ! user ) {
11+ console . log ( "[-] User not found" ) ;
12+ return done ( null , false ) ;
13+ }
14+ if ( ! await usersService . verify ( username , password ) ) {
15+ console . log ( "[-] Wrong password..." ) ;
16+ return done ( null , false ) ;
17+ }
18+ return done ( null , user ) ;
19+ } ) ;
20+ }
21+ ) ) ;
22+
23+ module . exports = passport
Original file line number Diff line number Diff line change 1+ const roleMiddleware = ( allowedRoles = [ ] ) => ( req , res , next ) => {
2+ if ( ! allowedRoles || allowedRoles === [ ] ) return ;
3+ if ( ! req . user ?. role ) return res . status ( 401 ) . send ( ) ; // No user
4+ if ( ! allowedRoles . includes ( req . user . role ) ) return res . status ( 403 ) . send ( ) ; // No role
5+ next ( ) ;
6+ }
7+
8+ module . exports = roleMiddleware ;
You can’t perform that action at this time.
0 commit comments