73 lines
2.1 KiB
JavaScript
73 lines
2.1 KiB
JavaScript
/* eslint-disable func-names */
|
|
import { Strategy as LocalStrategy } from "passport-local";
|
|
import { BasicStrategy } from "passport-http";
|
|
import { Strategy as CustomStrategy } from "passport-custom";
|
|
|
|
import Users from "../models/users";
|
|
|
|
import { jobsHeaderKey, jobsHeaderValue } from "../config";
|
|
|
|
export default (passport) => {
|
|
passport.serializeUser((user, done) => {
|
|
done(null, user);
|
|
});
|
|
|
|
passport.deserializeUser((user, done) => {
|
|
done(null, user);
|
|
});
|
|
passport.use(
|
|
"user",
|
|
new LocalStrategy(
|
|
{
|
|
usernameField: "email",
|
|
passwordField: "password",
|
|
},
|
|
(email, password, done) => {
|
|
Users.findOne({ email })
|
|
.then((user) => {
|
|
if (!user || !user.validPassword(password)) {
|
|
return done(
|
|
null,
|
|
false,
|
|
"Oops! Identifiants incorrects"
|
|
);
|
|
}
|
|
|
|
return done(null, user);
|
|
})
|
|
.catch(done);
|
|
}
|
|
)
|
|
);
|
|
passport.use(
|
|
"basic",
|
|
new BasicStrategy((email, password, done) => {
|
|
Users.findOne({ email })
|
|
.then((user) => {
|
|
if (!user || !user.validPassword(password)) {
|
|
return done(
|
|
null,
|
|
false,
|
|
"Oops! Identifiants incorrects"
|
|
);
|
|
}
|
|
|
|
return done(null, user);
|
|
})
|
|
.catch(done);
|
|
})
|
|
);
|
|
passport.use(
|
|
"jobs",
|
|
new CustomStrategy((req, next) => {
|
|
const apiKey = req.headers[jobsHeaderKey];
|
|
|
|
if (apiKey === jobsHeaderValue) {
|
|
return next(null, {
|
|
username: "jobs",
|
|
});
|
|
}
|
|
return next(null, false, "Oops! Identifiants incorrects");
|
|
})
|
|
);
|
|
};
|