From 4fa2a876daf5734b7af1632678a3aa50ee2b51c3 Mon Sep 17 00:00:00 2001 From: Emmanuel Ng'ang'a <60355631+emmanuel-karanja@users.noreply.github.com> Date: Wed, 27 Nov 2024 16:34:24 +0300 Subject: [PATCH 1/2] Automate CustomHeaders Update --- module/Entra/config/moduleMapping.json | 3 +- src/EntraModuleSplitter.ps1 | 40 ++++++++++++++++++++++---- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/module/Entra/config/moduleMapping.json b/module/Entra/config/moduleMapping.json index e8052b436..9cb329aae 100644 --- a/module/Entra/config/moduleMapping.json +++ b/module/Entra/config/moduleMapping.json @@ -162,7 +162,7 @@ "New-EntraOauth2PermissionGrant": "SignIns", "New-EntraConditionalAccessPolicy": "SignIns", "New-EntraIdentityProvider": "SignIns", - "New-EntraInvitation": "Invitations", + "New-EntraInvitation": "SignIns", "New-EntraPermissionGrantConditionSet": "SignIns", "New-EntraPermissionGrantPolicy": "SignIns", "Remove-EntraConditionalAccessPolicy": "SignIns", @@ -189,6 +189,7 @@ "Set-EntraTenantDetail": "DirectoryManagement", "Add-EntraScopedRoleMembership": "DirectoryManagement", "Get-EntraUser": "Users", + "Get-EntraUserAuthenticationMethod":"SignIns", "Get-EntraUserAppRoleAssignment": "Users", "Get-EntraUserCreatedObject": "Users", "Get-EntraUserDirectReport": "Users", diff --git a/src/EntraModuleSplitter.ps1 b/src/EntraModuleSplitter.ps1 index 7a04eddfc..c37d8085f 100644 --- a/src/EntraModuleSplitter.ps1 +++ b/src/EntraModuleSplitter.ps1 @@ -33,9 +33,9 @@ class EntraModuleSplitter { [string] GetOutputDirectory([string]$source) { if ($source -eq 'Entra') { - return (Join-Path $PSScriptRoot "..\module\Entra\") + return (Join-Path $PSScriptRoot "..\module-test\Entra\") } else { - return (Join-Path $PSScriptRoot "..\module\EntraBeta\") + return (Join-Path $PSScriptRoot "..\module-test\EntraBeta\") } } @@ -121,7 +121,13 @@ class EntraModuleSplitter { } - [void] AddFunctionsToAllDirectories([string]$moduleOutputDirectory, [PSCustomObject[]]$functionContents) { +[void] AddFunctionsToAllDirectories([string]$moduleOutputDirectory, [PSCustomObject[]]$functionContents, [string]$Module = 'Entra') { + # Validate the module parameter + if ($Module -notin @('Entra', 'EntraBeta')) { + Write-Error "Invalid module specified. Please provide either 'Entra' or 'EntraBeta'." + return + } + # Get all directories under the module output directory $subDirectories = Get-ChildItem -Path $moduleOutputDirectory -Directory @@ -129,7 +135,30 @@ class EntraModuleSplitter { foreach ($functionContent in $functionContents) { # Construct the full path for the function file $functionName = $functionContent.Name - $headerPs1Content = $this.Header + "`n" + $functionContent.Content+ "`n"+"`n" + $headerPs1Content = $this.Header + "`n" + $functionContent.Content + "`n" + "`n" + + # If the function is 'New-EntraCustomHeaders', modify the version line + if ($functionName -eq "New-EntraCustomHeaders") { + $currentSubDirName = $subDir.Name + + # Search for the line containing the version line + if ($Module -eq 'Entra') { + # For Entra module, look for 'Microsoft.Graph.Entra' in the version line + if ($headerPs1Content -match "Microsoft.Graph.Entra") { + # Replace 'Microsoft.Graph.Entra' with 'Microsoft.Entra.' + $headerPs1Content = $headerPs1Content -replace "Microsoft.Graph.Entra", "Microsoft.Entra.$currentSubDirName" + } + } + elseif ($Module -eq 'EntraBeta') { + # For EntraBeta module, look for 'Microsoft.Graph.Entra.Beta' in the version line + if ($headerPs1Content -match "Microsoft.Graph.Entra.Beta") { + # Replace 'Microsoft.Graph.Entra.Beta' with 'Microsoft.Entra.Beta.' + $headerPs1Content = $headerPs1Content -replace "Microsoft.Graph.Entra.Beta", "Microsoft.Entra.Beta.$currentSubDirName" + } + } + } + + # Construct the function file path $functionFilePath = Join-Path -Path $subDir.FullName -ChildPath "$functionName.ps1" # Write the function to the specified file @@ -139,6 +168,7 @@ class EntraModuleSplitter { } } + [string] GetModuleName([string] $Module="Entra"){ if ($Module -eq 'Entra') { return "Microsoft.Entra" @@ -189,7 +219,7 @@ class EntraModuleSplitter { } # Call the new method to add functions to all directories - $this.AddFunctionsToAllDirectories($moduleOutputDirectory, $functionContents) + $this.AddFunctionsToAllDirectories($moduleOutputDirectory, $functionContents,$Module) Log-Message "[EntraModuleSplitter] Splitting and organizing complete." -Level 'SUCCESS' } From 5444f6162a6b18f0039b563042c07c09b5649219 Mon Sep 17 00:00:00 2001 From: Emmanuel Ng'ang'a <60355631+emmanuel-karanja@users.noreply.github.com> Date: Wed, 27 Nov 2024 16:40:40 +0300 Subject: [PATCH 2/2] Automate CustomHeaders Update --- src/EntraModuleSplitter.ps1 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/EntraModuleSplitter.ps1 b/src/EntraModuleSplitter.ps1 index c37d8085f..1160728a8 100644 --- a/src/EntraModuleSplitter.ps1 +++ b/src/EntraModuleSplitter.ps1 @@ -33,9 +33,9 @@ class EntraModuleSplitter { [string] GetOutputDirectory([string]$source) { if ($source -eq 'Entra') { - return (Join-Path $PSScriptRoot "..\module-test\Entra\") + return (Join-Path $PSScriptRoot "..\module\Entra\") } else { - return (Join-Path $PSScriptRoot "..\module-test\EntraBeta\") + return (Join-Path $PSScriptRoot "..\module\EntraBeta\") } }