2020-04-30 20:26:12 +01:00
const errors = require ( '@tryghost/errors' ) ;
2021-10-05 11:34:07 +02: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 13:45:59 +02:00
2018-10-05 17:45:17 +07:00
const authorize = {
2018-11-07 17:29:40 +07:00
authorizeContentApi ( req , res , next ) {
const hasApiKey = req . api _key && req . api _key . id ;
2018-11-07 17:41:49 +07:00
const hasMember = req . member ;
2018-11-07 17:29:40 +07:00
if ( hasApiKey ) {
return next ( ) ;
}
2021-01-28 18:07:45 +00:00
if ( hasMember ) {
2018-11-07 17:41:49 +07:00
return next ( ) ;
}
2020-04-30 20:26:12 +01:00
return next ( new errors . NoPermissionError ( {
2021-10-05 11:34:07 +02:00
message : tpl ( messages . authorizationFailed ) ,
context : tpl ( messages . missingContentMemberOrIntegration )
2019-01-18 17:33:36 +01:00
} ) ) ;
2018-11-07 17:29:40 +07:00
} ,
2019-01-18 17:41:52 +01:00
authorizeAdminApi ( req , res , next ) {
2018-10-15 16:23:34 +07:00
const hasUser = req . user && req . user . id ;
const hasApiKey = req . api _key && req . api _key . id ;
2019-01-18 17:33:36 +01:00
2018-10-15 16:23:34 +07:00
if ( hasUser || hasApiKey ) {
return next ( ) ;
} else {
2020-04-30 20:26:12 +01:00
return next ( new errors . NoPermissionError ( {
2021-10-05 11:34:07 +02:00
message : tpl ( messages . authorizationFailed ) ,
context : tpl ( messages . missingAdminUserOrIntegration )
2019-01-18 17:33:36 +01:00
} ) ) ;
2018-10-15 16:23:34 +07:00
}
}
2016-09-30 13:45:59 +02:00
} ;
module . exports = authorize ;