2020-04-30 22:26:12 +03:00
const errors = require ( '@tryghost/errors' ) ;
2021-10-05 12:34:07 +03:00
const tpl = require ( '@tryghost/tpl' ) ;
const messages = {
authorizationFailed : 'Authorization failed' ,
missingContentMemberOrIntegration : 'Unable to determine the authenticated member or integration. Check the supplied Content API Key and ensure cookies are being passed through if member auth is failing.' ,
missingAdminUserOrIntegration : 'Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication.'
} ;
2016-09-30 14:45:59 +03:00
2018-10-05 13:45:17 +03:00
const authorize = {
2018-11-07 13:29:40 +03:00
authorizeContentApi ( req , res , next ) {
const hasApiKey = req . api _key && req . api _key . id ;
2018-11-07 13:41:49 +03:00
const hasMember = req . member ;
2018-11-07 13:29:40 +03:00
if ( hasApiKey ) {
return next ( ) ;
}
2021-01-28 21:07:45 +03:00
if ( hasMember ) {
2018-11-07 13:41:49 +03:00
return next ( ) ;
}
2020-04-30 22:26:12 +03:00
return next ( new errors . NoPermissionError ( {
2021-10-05 12:34:07 +03:00
message : tpl ( messages . authorizationFailed ) ,
context : tpl ( messages . missingContentMemberOrIntegration )
2019-01-18 19:33:36 +03:00
} ) ) ;
2018-11-07 13:29:40 +03:00
} ,
2019-01-18 19:41:52 +03:00
authorizeAdminApi ( req , res , next ) {
2018-10-15 12:23:34 +03:00
const hasUser = req . user && req . user . id ;
const hasApiKey = req . api _key && req . api _key . id ;
2019-01-18 19:33:36 +03:00
2018-10-15 12:23:34 +03:00
if ( hasUser || hasApiKey ) {
return next ( ) ;
} else {
2020-04-30 22:26:12 +03:00
return next ( new errors . NoPermissionError ( {
2021-10-05 12:34:07 +03:00
message : tpl ( messages . authorizationFailed ) ,
context : tpl ( messages . missingAdminUserOrIntegration )
2019-01-18 19:33:36 +03:00
} ) ) ;
2018-10-15 12:23:34 +03:00
}
}
2016-09-30 14:45:59 +03:00
} ;
module . exports = authorize ;