mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-09-27 19:52:59 +00:00
Move to the new page-routes.js
This commit is contained in:
-134
@@ -194,140 +194,6 @@ export default async function createApp(vite) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//Edit Page
|
|
||||||
app.get('/edit/:id', asyncHandler(getBrew('edit')), asyncHandler(async(req, res, next)=>{
|
|
||||||
req.brew = req.brew.toObject ? req.brew.toObject() : req.brew;
|
|
||||||
|
|
||||||
req.userThemes = await(getUsersBrewThemes(req.account?.username));
|
|
||||||
|
|
||||||
req.ogMeta = { ...defaultMetaTags,
|
|
||||||
title : req.brew.title || 'Untitled Brew',
|
|
||||||
description : req.brew.description || 'No description.',
|
|
||||||
image : req.brew.thumbnail || defaultMetaTags.image,
|
|
||||||
locale : req.brew.lang,
|
|
||||||
type : 'article'
|
|
||||||
};
|
|
||||||
|
|
||||||
sanitizeBrew(req.brew, 'edit');
|
|
||||||
res.header('Cache-Control', 'no-cache, no-store'); //reload the latest saved brew when pressing back button, not the cached version before save.
|
|
||||||
return next();
|
|
||||||
}));
|
|
||||||
|
|
||||||
//New Page from ID
|
|
||||||
app.get('/new/:id', asyncHandler(getBrew('share')), asyncHandler(async(req, res, next)=>{
|
|
||||||
sanitizeBrew(req.brew, 'share');
|
|
||||||
const brew = {
|
|
||||||
shareId : req.brew.shareId,
|
|
||||||
title : `CLONE - ${req.brew.title}`,
|
|
||||||
text : req.brew.text,
|
|
||||||
style : req.brew.style,
|
|
||||||
renderer : req.brew.renderer,
|
|
||||||
theme : req.brew.theme,
|
|
||||||
tags : req.brew.tags,
|
|
||||||
snippets : req.brew.snippets
|
|
||||||
};
|
|
||||||
req.brew = _.defaults(brew, DEFAULT_BREW);
|
|
||||||
|
|
||||||
req.userThemes = await(getUsersBrewThemes(req.account?.username));
|
|
||||||
|
|
||||||
req.ogMeta = { ...defaultMetaTags,
|
|
||||||
title : 'New',
|
|
||||||
description : 'Start crafting your homebrew on the Homebrewery!'
|
|
||||||
};
|
|
||||||
|
|
||||||
return next();
|
|
||||||
}));
|
|
||||||
|
|
||||||
//New Page
|
|
||||||
app.get('/new', asyncHandler(async(req, res, next)=>{
|
|
||||||
req.userThemes = await(getUsersBrewThemes(req.account?.username));
|
|
||||||
|
|
||||||
req.ogMeta = { ...defaultMetaTags,
|
|
||||||
title : 'New',
|
|
||||||
description : 'Start crafting your homebrew on the Homebrewery!'
|
|
||||||
};
|
|
||||||
|
|
||||||
return next();
|
|
||||||
}));
|
|
||||||
|
|
||||||
//Share Page
|
|
||||||
app.get('/share/:id', dbCheck, asyncHandler(getBrew('share')), asyncHandler(async (req, res, next)=>{
|
|
||||||
const { brew } = req;
|
|
||||||
req.ogMeta = { ...defaultMetaTags,
|
|
||||||
title : `${req.brew.title || 'Untitled Brew'} - ${req.brew.authors[0] || 'No author.'}`,
|
|
||||||
description : req.brew.description || 'No description.',
|
|
||||||
image : req.brew.thumbnail || defaultMetaTags.image,
|
|
||||||
type : 'article'
|
|
||||||
};
|
|
||||||
|
|
||||||
// increase visitor view count, do not include visits by author(s)
|
|
||||||
if(!brew.authors.includes(req.account?.username)){
|
|
||||||
if(req.params.id.length > 12 && !brew._id) {
|
|
||||||
const googleId = brew.googleId;
|
|
||||||
const shareId = brew.shareId;
|
|
||||||
await GoogleActions.increaseView(googleId, shareId, 'share', brew)
|
|
||||||
.catch((err)=>{next(err);});
|
|
||||||
} else {
|
|
||||||
await HomebrewModel.increaseView({ shareId: brew.shareId });
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
brew.authors.includes(req.account?.username) ? sanitizeBrew(req.brew, 'shareAuthor') : sanitizeBrew(req.brew, 'share');
|
|
||||||
return next();
|
|
||||||
}));
|
|
||||||
|
|
||||||
//Account Page
|
|
||||||
app.get('/account', dbCheck, asyncHandler(async (req, res, next)=>{
|
|
||||||
const data = {};
|
|
||||||
data.title = 'Account Information Page';
|
|
||||||
|
|
||||||
if(!req.account) {
|
|
||||||
res.set('WWW-Authenticate', 'Bearer realm="Authorization Required"');
|
|
||||||
const error = new Error('No valid account');
|
|
||||||
error.status = 401;
|
|
||||||
error.HBErrorCode = '50';
|
|
||||||
error.page = data.title;
|
|
||||||
return next(error);
|
|
||||||
};
|
|
||||||
|
|
||||||
let auth;
|
|
||||||
let googleCount = [];
|
|
||||||
if(req.account) {
|
|
||||||
if(req.account.googleId) {
|
|
||||||
auth = await GoogleActions.authCheck(req.account, res, false);
|
|
||||||
|
|
||||||
googleCount = await GoogleActions.listGoogleBrews(auth)
|
|
||||||
.catch((err)=>{
|
|
||||||
console.error(err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const query = { authors: req.account.username, googleId: { $exists: false } };
|
|
||||||
const mongoCount = await HomebrewModel.countDocuments(query)
|
|
||||||
.catch((err)=>{
|
|
||||||
console.log(err);
|
|
||||||
return 0;
|
|
||||||
});
|
|
||||||
|
|
||||||
data.accountDetails = {
|
|
||||||
username : req.account.username,
|
|
||||||
issued : req.account.issued,
|
|
||||||
googleId : Boolean(req.account.googleId),
|
|
||||||
authCheck : Boolean(req.account.googleId && auth?.credentials.access_token),
|
|
||||||
mongoCount : mongoCount,
|
|
||||||
googleCount : googleCount?.length
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
req.brew = data;
|
|
||||||
|
|
||||||
req.ogMeta = { ...defaultMetaTags,
|
|
||||||
title : `Account Page`,
|
|
||||||
description : null
|
|
||||||
};
|
|
||||||
|
|
||||||
return next();
|
|
||||||
}));
|
|
||||||
// Create Event Stream source for pages to listen to
|
// Create Event Stream source for pages to listen to
|
||||||
app.get('/stream', (req, res)=>{
|
app.get('/stream', (req, res)=>{
|
||||||
res.writeHead(200, {
|
res.writeHead(200, {
|
||||||
|
|||||||
@@ -244,7 +244,6 @@ export default function pageRoutes({
|
|||||||
};
|
};
|
||||||
|
|
||||||
sanitizeBrew(req.brew, 'edit');
|
sanitizeBrew(req.brew, 'edit');
|
||||||
splitTextStyleAndMetadata(req.brew);
|
|
||||||
res.header('Cache-Control', 'no-cache, no-store'); //reload the latest saved brew when pressing back button, not the cached version before save.
|
res.header('Cache-Control', 'no-cache, no-store'); //reload the latest saved brew when pressing back button, not the cached version before save.
|
||||||
return next();
|
return next();
|
||||||
}));
|
}));
|
||||||
@@ -252,7 +251,6 @@ export default function pageRoutes({
|
|||||||
//New Page from ID
|
//New Page from ID
|
||||||
app.get('/new/:id', asyncHandler(getBrew('share')), asyncHandler(async(req, res, next)=>{
|
app.get('/new/:id', asyncHandler(getBrew('share')), asyncHandler(async(req, res, next)=>{
|
||||||
sanitizeBrew(req.brew, 'share');
|
sanitizeBrew(req.brew, 'share');
|
||||||
splitTextStyleAndMetadata(req.brew);
|
|
||||||
const brew = {
|
const brew = {
|
||||||
shareId : req.brew.shareId,
|
shareId : req.brew.shareId,
|
||||||
title : `CLONE - ${req.brew.title}`,
|
title : `CLONE - ${req.brew.title}`,
|
||||||
@@ -310,7 +308,6 @@ export default function pageRoutes({
|
|||||||
};
|
};
|
||||||
|
|
||||||
brew.authors.includes(req.account?.username) ? sanitizeBrew(req.brew, 'shareAuthor') : sanitizeBrew(req.brew, 'share');
|
brew.authors.includes(req.account?.username) ? sanitizeBrew(req.brew, 'shareAuthor') : sanitizeBrew(req.brew, 'share');
|
||||||
splitTextStyleAndMetadata(req.brew);
|
|
||||||
return next();
|
return next();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user