@@ -10,6 +10,11 @@ function isUserEntitled(entitlementsObject: any): boolean {
1010 return ( entitlementsObject ?. repos ?. length ?? 0 ) > 0 ;
1111}
1212
13+ function isRestrictedToDeploy ( userId : string ) : boolean {
14+ const { restrictedProdDeploy, entitledSlackUsers } = c . get < any > ( 'prodDeploy' ) ;
15+ return restrictedProdDeploy && ! entitledSlackUsers . includes ( userId ) ;
16+ }
17+
1318function prepReponse ( statusCode , contentType , body ) {
1419 return {
1520 statusCode : statusCode ,
@@ -61,8 +66,12 @@ export const DisplayRepoOptions = async (event: any = {}, context: any = {}): Pr
6166 const branchRepository = new BranchRepository ( db , c , consoleLogger ) ;
6267 const key_val = getQSString ( event . body ) ;
6368 const entitlement = await repoEntitlementRepository . getRepoEntitlementsBySlackUserId ( key_val [ 'user_id' ] ) ;
64- if ( ! isUserEntitled ( entitlement ) ) {
65- return prepReponse ( 401 , 'text/plain' , 'User is not entitled!' ) ;
69+ if ( ! isUserEntitled ( entitlement ) || isRestrictedToDeploy ( key_val [ 'user_id' ] ) ) {
70+ const { restrictedProdDeploy } = c . get < any > ( 'prodDeploy' ) ;
71+ const response = restrictedProdDeploy
72+ ? 'Production freeze in place - please notify DOP if seeing this past 3/26'
73+ : 'User is not entitled!' ;
74+ return prepReponse ( 401 , 'text/plain' , response ) ;
6675 }
6776 const entitledBranches = await buildEntitledBranchList ( entitlement , branchRepository ) ;
6877 const resp = await slackConnector . displayRepoOptions ( entitledBranches , key_val [ 'trigger_id' ] ) ;
@@ -78,12 +87,7 @@ export const DisplayRepoOptions = async (event: any = {}, context: any = {}): Pr
7887 } ;
7988} ;
8089
81- async function deployRepo (
82- deployable : Array < any > ,
83- logger : ILogger ,
84- jobRepository : JobRepository ,
85- jobQueueUrl
86- ) {
90+ async function deployRepo ( deployable : Array < any > , logger : ILogger , jobRepository : JobRepository , jobQueueUrl ) {
8791 try {
8892 await jobRepository . insertJBulkJobs ( deployable , jobQueueUrl ) ;
8993 } catch ( err ) {
@@ -92,14 +96,22 @@ async function deployRepo(
9296}
9397
9498// Used solely for adding parallel deploy jobs to another array
95- const parallelPrefixDeployHelper = ( deployable , payload , jobTitle , jobUserName , jobUserEmail , parallelPrefix = undefined , parallelDeployable = [ ] ) => {
99+ const parallelPrefixDeployHelper = (
100+ deployable ,
101+ payload ,
102+ jobTitle ,
103+ jobUserName ,
104+ jobUserEmail ,
105+ parallelPrefix = undefined ,
106+ parallelDeployable = [ ]
107+ ) => {
96108 deployable . push ( createJob ( { ...payload } , jobTitle , jobUserName , jobUserEmail ) ) ;
97109 if ( parallelPrefix ) {
98110 const parallelPayload = { ...payload } ;
99111 parallelPayload . prefix = parallelPrefix ;
100112 parallelDeployable . push ( createJob ( parallelPayload , jobTitle , jobUserName , jobUserEmail ) ) ;
101- }
102- }
113+ }
114+ } ;
103115
104116export const DeployRepo = async ( event : any = { } , context : any = { } ) : Promise < any > => {
105117 const consoleLogger = new ConsoleLogger ( ) ;
@@ -185,7 +197,15 @@ export const DeployRepo = async (event: any = {}, context: any = {}): Promise<an
185197 if ( non_versioned ) {
186198 newPayload . urlSlug = '' ;
187199 }
188- parallelPrefixDeployHelper ( deployable , newPayload , jobTitle , jobUserName , jobUserEmail , parallelPrefix , parallelDeployable ) ;
200+ parallelPrefixDeployHelper (
201+ deployable ,
202+ newPayload ,
203+ jobTitle ,
204+ jobUserName ,
205+ jobUserEmail ,
206+ parallelPrefix ,
207+ parallelDeployable
208+ ) ;
189209 jobCount += 1 ;
190210 }
191211 //if this is stablebranch, we want autobuilder to know this is unaliased branch and therefore can reindex for search
@@ -202,16 +222,40 @@ export const DeployRepo = async (event: any = {}, context: any = {}): Promise<an
202222 // we use the primary alias for indexing search, not the original branch name (ie 'master'), for aliased repos
203223 if ( urlSlug ) {
204224 newPayload . urlSlug = urlSlug ;
205- parallelPrefixDeployHelper ( deployable , newPayload , jobTitle , jobUserName , jobUserEmail , parallelPrefix , parallelDeployable ) ;
225+ parallelPrefixDeployHelper (
226+ deployable ,
227+ newPayload ,
228+ jobTitle ,
229+ jobUserName ,
230+ jobUserEmail ,
231+ parallelPrefix ,
232+ parallelDeployable
233+ ) ;
206234 jobCount += 1 ;
207235 }
208236 if ( non_versioned ) {
209237 newPayload . urlSlug = '' ;
210- parallelPrefixDeployHelper ( deployable , newPayload , jobTitle , jobUserName , jobUserEmail , parallelPrefix , parallelDeployable ) ;
238+ parallelPrefixDeployHelper (
239+ deployable ,
240+ newPayload ,
241+ jobTitle ,
242+ jobUserName ,
243+ jobUserEmail ,
244+ parallelPrefix ,
245+ parallelDeployable
246+ ) ;
211247 jobCount += 1 ;
212248 } else if ( publishOriginalBranchName ) {
213249 newPayload . urlSlug = branchName ;
214- parallelPrefixDeployHelper ( deployable , newPayload , jobTitle , jobUserName , jobUserEmail , parallelPrefix , parallelDeployable ) ;
250+ parallelPrefixDeployHelper (
251+ deployable ,
252+ newPayload ,
253+ jobTitle ,
254+ jobUserName ,
255+ jobUserEmail ,
256+ parallelPrefix ,
257+ parallelDeployable
258+ ) ;
215259 jobCount += 1 ;
216260 }
217261 aliases . forEach ( async ( alias ) => {
@@ -220,7 +264,15 @@ export const DeployRepo = async (event: any = {}, context: any = {}): Promise<an
220264 newPayload . stable = '' ;
221265 newPayload . urlSlug = alias ;
222266 newPayload . primaryAlias = primaryAlias ;
223- parallelPrefixDeployHelper ( deployable , newPayload , jobTitle , jobUserName , jobUserEmail , parallelPrefix , parallelDeployable ) ;
267+ parallelPrefixDeployHelper (
268+ deployable ,
269+ newPayload ,
270+ jobTitle ,
271+ jobUserName ,
272+ jobUserEmail ,
273+ parallelPrefix ,
274+ parallelDeployable
275+ ) ;
224276 jobCount += 1 ;
225277 }
226278 } ) ;
0 commit comments