diff --git a/app/controllers/post.js b/app/controllers/post.js index e5090d1..9fd9f2e 100644 --- a/app/controllers/post.js +++ b/app/controllers/post.js @@ -260,7 +260,8 @@ class PostController extends SiteController { async getView (req, res, next) { const { comment: commentService, resource: resourceService } = this.dtp.services; try { - if ((res.locals.post.status !== 'published') && + if ((res.locals.post.status !== 'published') && + req.user && !res.locals.post.author._id.equals(req.user._id) && !req.user.hasAuthorDashboard) { throw new SiteError(403, 'The post is not published'); diff --git a/app/controllers/welcome.js b/app/controllers/welcome.js index b6bdef3..f92320e 100644 --- a/app/controllers/welcome.js +++ b/app/controllers/welcome.js @@ -39,6 +39,7 @@ class WelcomeController extends SiteController { } async getWelcomeCoreMember (req, res) { + await this.checkForUser(req, res); res.render('welcome/core-member'); } @@ -58,23 +59,33 @@ class WelcomeController extends SiteController { } async getSignupView (req, res) { + await this.checkForUser(req, res); req.session.captcha = req.session.captcha || { }; req.session.captcha.signup = captcha.randomText(4 + Math.floor(Math.random()*4)); res.render('welcome/signup'); } async getLoginView (req, res) { + await this.checkForUser(req, res); res.locals.loginResult = req.session.loginResult; res.render('welcome/login'); } async getHomeView (req, res, next) { try { + await this.checkForUser(req, res); res.render('welcome/index'); } catch (error) { return next(error); } } + + async checkForUser (req, res) { + if (req.user) { + res.redirect(301, '/'); + } + } + } module.exports = {