import express from 'express' ; import { OAuthClientModel } from '@server/models/oauth/oauth-client' ; import { HttpStatusCode , OAuthClientLocal } from '@shared/models' ; import { logger } from '../../helpers/logger' ; import { CONFIG } from '../../initializers/config' ; import { asyncMiddleware , openapiOperationDoc } from '../../middlewares' ; const oauthClientsRouter = express . Router ( ) ; oauthClientsRouter . get ( '/local' , openapiOperationDoc ( { operationId : 'getOAuthClient' } ) , asyncMiddleware ( getLocalClient ) ) ; async function getLocalClient ( req , res , next ) { const serverHostname = CONFIG . WEBSERVER . HOSTNAME ; const serverPort = CONFIG . WEBSERVER . PORT ; let headerHostShouldBe = serverHostname ; if ( serverPort !== 80 && serverPort !== 443 ) { headerHostShouldBe += ':' + serverPort ; } if ( process . env . NODE_ENV !== 'test' && req . get ( 'host' ) !== headerHostShouldBe ) { logger . info ( 'Getting client tokens for host %s is forbidden (expected %s).' , req . get ( 'host' ) , headerHostShouldBe ) ; return res . fail ( { status : HttpStatusCode . FORBIDDEN_403 , message : `Getting client tokens for host ${ req . get ( 'host' ) } is forbidden` } ) ; } const client = await OAuthClientModel . loadFirstClient ( ) ; if ( ! client ) throw new Error ( 'No client available.' ) ; const json = { client_id : client . clientId , client_secret : client . clientSecret } ; return res . json ( json ) ; } export { oauthClientsRouter } ;