@@ -4,7 +4,7 @@ const url = require('url');
44const fs = require ( 'fs' ) ;
55const asciidoctor = require ( 'asciidoctor.js' ) ;
66const Mustache = require ( 'mustache' ) ;
7- const { fetchOpenshiftUser } = require ( './server_middleware' ) ;
7+ const { requireRoles } = require ( './server_middleware' ) ;
88const giteaClient = require ( './gitea_client' ) ;
99const gitClient = require ( './git_client' ) ;
1010const bodyParser = require ( 'body-parser' ) ;
@@ -70,6 +70,12 @@ const WALKTHROUGH_LOCATION_DEFAULT = {
7070 header : null
7171} ;
7272
73+ const backendRequiredRoles = [
74+ 'system:cluster-admins' ,
75+ 'system:dedicated-admins' ,
76+ 'dedicated-admins'
77+ ] ;
78+
7379const walkthroughs = [ ] ;
7480let server ;
7581
@@ -83,6 +89,7 @@ app.get('/metrics', (req, res) => {
8389 res . end ( Prometheus . register . metrics ( ) ) ;
8490} ) ;
8591
92+
8693// Get all user defined walkthrough repositories
8794app . get ( '/user_walkthroughs' , ( req , res ) =>
8895 getUserWalkthroughs ( )
@@ -101,7 +108,8 @@ app.get('/user_walkthroughs', (req, res) =>
101108) ;
102109
103110// Insert new user defined walkthrough repositories
104- app . post ( '/user_walkthroughs' , ( req , res ) => {
111+ // This requires cluster- or dedicated admin permissions
112+ app . post ( '/user_walkthroughs' , requireRoles ( backendRequiredRoles ) , ( req , res ) => {
105113 const { data } = req . body ;
106114 return setUserWalkthroughs ( data )
107115 . then ( ( { value } ) => res . json ( value ) )
@@ -111,39 +119,6 @@ app.post('/user_walkthroughs', (req, res) => {
111119 } ) ;
112120} ) ;
113121
114- // Init custom walkthroughs dependencies
115- app . post ( '/initThread' , fetchOpenshiftUser , ( req , res ) => {
116- if ( ! req . body || ! req . body . dependencies ) {
117- console . warn ( 'Dependencies not provided in request body. Skipping thread initialization.' ) ;
118- res . sendStatus ( 200 ) ;
119- return ;
120- }
121- const {
122- dependencies : { repos } ,
123- openshiftUser
124- } = req . body ;
125-
126- // Return success in mock mode without actually creating any repositories
127- if ( ! process . env . OPENSHIFT_HOST ) {
128- console . warn ( 'OPENSHIFT_HOST not set. Skipping thread initialization.' ) ;
129- res . sendStatus ( 200 ) ;
130- return ;
131- }
132-
133- if ( ! repos || repos . length === 0 ) {
134- res . sendStatus ( 200 ) ;
135- return ;
136- }
137-
138- // eslint-disable-next-line consistent-return
139- return Promise . all ( repos . map ( repo => giteaClient . createRepoForUser ( openshiftUser , repo ) ) )
140- . then ( ( ) => res . sendStatus ( 200 ) )
141- . catch ( err => {
142- console . error ( `Error creating repositories: ${ err } ` ) ;
143- return res . status ( 500 ) . json ( { error : err . message } ) ;
144- } ) ;
145- } ) ;
146-
147122// Dynamic configuration for openshift API calls
148123app . get ( '/config.js' , ( req , res ) => {
149124 if ( ! process . env . OPENSHIFT_HOST ) {
0 commit comments