Я создаю Gitbook Legacy с входом пользователя из Auth0. Я ограничил вход пользователя в определенные почтовые домены и теперь хочу ограничить переход к определенному разделу (то есть разделу заработной платы) моего Gitbook. У меня проблемы с доступом как к данным пользователя Auth0, так и к данным пользователя Google, чтобы пользователи без определенных ролей или информации о пользователях (электронных писем) не могли перейти в /payroll'.
.
Я изучил документацию / StackOverflow и попробовал несколько различных методов, предложенных для получения информации о пользователе. Ничего из этого не сработало. Я могу получить свой токен доступа, но не смог использовать для него доступ к необходимой мне информации.
Будем весьма благодарны за любые предложения, указания и аналогичные решения.
Вот мой сервер. Js
const path = require('path');
const nconf = require('nconf');
const Express = require('express');
const compression = require('compression');
const session = require('express-session');
const passport = require('passport');
const cookieParser = require('cookie-parser');
const Auth0Strategy = require('passport-auth0');
// Initialize configuration.
nconf.argv()
.env()
.file({
file: './config.json'
});
// Initialize authentication.
passport.serializeUser((user, done) => done(null, user));
passport.deserializeUser((user, done) => done(null, user));
passport.use(new Auth0Strategy({
domain: nconf.get('AUTH0_DOMAIN'),
clientID: nconf.get('AUTH0_CLIENT_ID'),
clientSecret: nconf.get('AUTH0_CLIENT_SECRET'),
callbackURL: '/login/callback'
}, function (accessToken, refreshToken, extraParams, profile, done) {
return done(null, profile);
}));
// Initialize the app.
const app = new Express();
app.use(cookieParser());
app.use(session({
secret: nconf.get('SESSION_SECRET'),
saveUninitialized: true,
resave: false,
cookie: {
maxAge: 3600000
}
}));
app.use(passport.initialize());
app.use(passport.session());
app.use(compression());
// Authentication endpoints.
app.get('/login',
passport.authenticate('auth0', {
connection: nconf.get('AUTH0_CONNECTION')
}),
function (req, res) {});
app.get('/login/callback',
passport.authenticate('auth0'),
function (req, res) {
res.redirect('/');
});
app.get('/logout',
function (req, res) {
req.session.destroy();
req.logout();
res.redirect('/');
});
// Force authentication for the next routes.
app.use(function (req, res, next) {
if (!req.isAuthenticated()) {
return res.redirect('/login');
}
next();
});
// Host the book.
app.use(Express.static(path.join(__dirname, './content/_book')));
// Start the server.
const port = process.env.PORT || 4001;
app.listen(port, function (error) {
if (error) {
console.log(error);
} else {
console.log('Listening on http://localhost:' + port);
}
});