1- Function Invoke-ExecPasswordConfig {
1+ function Invoke-ExecPasswordConfig {
22 <#
33 . FUNCTIONALITY
44 Entrypoint
@@ -14,42 +14,30 @@ Function Invoke-ExecPasswordConfig {
1414 $PasswordSettings = Get-CIPPAzDataTableEntity @Table - Filter " PartitionKey eq 'settings' and RowKey eq 'settings'"
1515
1616 # Helper functions for consistent data conversion
17- function ConvertTo-BoolString ($raw ) {
18- if ($null -eq $raw ) { return $false }
19- $stringValue = " $raw "
20- return ($stringValue -eq ' true' -or $stringValue -eq ' 1' -or $stringValue -eq ' yes' )
21- }
22-
2317 function ConvertTo-Bool ($raw ) {
2418 if ($null -eq $raw ) { return $false }
2519 $stringValue = " $raw "
2620 return ($stringValue -eq ' true' -or $stringValue -eq ' 1' -or $stringValue -eq ' yes' )
2721 }
2822
29- function Test-RequestBody ($body ) {
30- if (-not $body ) { return $false }
31- if ($body -is [string ] -or $body -is [array ]) { return $false }
32- return $true
33- }
34-
3523
3624 $results = try {
3725 if ($Request.Query.List ) {
3826 if (-not $PasswordSettings ) {
3927 # Return default values if not set
4028 @ {
41- passwordType = ' Classic'
42- charCount = 14
43- includeUppercase = $true
44- includeLowercase = $true
45- includeDigits = $true
29+ passwordType = ' Classic'
30+ charCount = 14
31+ includeUppercase = $true
32+ includeLowercase = $true
33+ includeDigits = $true
4634 includeSpecialChars = $true
47- specialCharSet = ' $%&*#'
48- wordCount = 4
49- separator = ' -'
50- capitalizeWords = $false
51- appendNumber = $false
52- appendSpecialChar = $false
35+ specialCharSet = ' $%&*#'
36+ wordCount = 4
37+ separator = ' -'
38+ capitalizeWords = $false
39+ appendNumber = $false
40+ appendSpecialChar = $false
5341 }
5442 } else {
5543 # Migrate legacy 'Correct-Battery-Horse' type to 'Passphrase'
@@ -60,37 +48,37 @@ Function Invoke-ExecPasswordConfig {
6048 }
6149
6250 $resolvedConfig = @ {
63- passwordType = $storedType
64- charCount = if ($PasswordSettings.charCount -and [int ]::TryParse(" $ ( $PasswordSettings.charCount ) " , [ref ]$null )) { [int ]$PasswordSettings.charCount } else { 14 }
65- includeUppercase = if ($null -ne $PasswordSettings.includeUppercase ) { ConvertTo-Bool $PasswordSettings.includeUppercase } else { $true }
66- includeLowercase = if ($null -ne $PasswordSettings.includeLowercase ) { ConvertTo-Bool $PasswordSettings.includeLowercase } else { $true }
67- includeDigits = if ($null -ne $PasswordSettings.includeDigits ) { ConvertTo-Bool $PasswordSettings.includeDigits } else { $true }
51+ passwordType = $storedType
52+ charCount = if ($PasswordSettings.charCount -and [int ]::TryParse(" $ ( $PasswordSettings.charCount ) " , [ref ]$null )) { [int ]$PasswordSettings.charCount } else { 14 }
53+ includeUppercase = if ($null -ne $PasswordSettings.includeUppercase ) { ConvertTo-Bool $PasswordSettings.includeUppercase } else { $true }
54+ includeLowercase = if ($null -ne $PasswordSettings.includeLowercase ) { ConvertTo-Bool $PasswordSettings.includeLowercase } else { $true }
55+ includeDigits = if ($null -ne $PasswordSettings.includeDigits ) { ConvertTo-Bool $PasswordSettings.includeDigits } else { $true }
6856 includeSpecialChars = if ($null -ne $PasswordSettings.includeSpecialChars ) { ConvertTo-Bool $PasswordSettings.includeSpecialChars } else { $true }
69- specialCharSet = if ($PasswordSettings.specialCharSet ) { $PasswordSettings.specialCharSet } else { ' $%&*#' }
70- wordCount = if ($PasswordSettings.wordCount -and [int ]::TryParse(" $ ( $PasswordSettings.wordCount ) " , [ref ]$null )) { [int ]$PasswordSettings.wordCount } else { 4 }
71- separator = if ($null -ne $PasswordSettings.separator ) { $PasswordSettings.separator } else { ' -' }
72- capitalizeWords = if ($null -ne $PasswordSettings.capitalizeWords ) { ConvertTo-Bool $PasswordSettings.capitalizeWords } else { $false }
73- appendNumber = if ($null -ne $PasswordSettings.appendNumber ) { ConvertTo-Bool $PasswordSettings.appendNumber } else { $false }
74- appendSpecialChar = if ($null -ne $PasswordSettings.appendSpecialChar ) { ConvertTo-Bool $PasswordSettings.appendSpecialChar } else { $false }
57+ specialCharSet = if ($PasswordSettings.specialCharSet ) { $PasswordSettings.specialCharSet } else { ' $%&*#' }
58+ wordCount = if ($PasswordSettings.wordCount -and [int ]::TryParse(" $ ( $PasswordSettings.wordCount ) " , [ref ]$null )) { [int ]$PasswordSettings.wordCount } else { 4 }
59+ separator = if ($null -ne $PasswordSettings.separator ) { $PasswordSettings.separator } else { ' -' }
60+ capitalizeWords = if ($null -ne $PasswordSettings.capitalizeWords ) { ConvertTo-Bool $PasswordSettings.capitalizeWords } else { $false }
61+ appendNumber = if ($null -ne $PasswordSettings.appendNumber ) { ConvertTo-Bool $PasswordSettings.appendNumber } else { $false }
62+ appendSpecialChar = if ($null -ne $PasswordSettings.appendSpecialChar ) { ConvertTo-Bool $PasswordSettings.appendSpecialChar } else { $false }
7563 }
7664
7765 # Persist migrated config so legacy type is upgraded in storage
7866 if ($needsMigration ) {
7967 $MigratedEntity = @ {
80- ' PartitionKey' = ' settings'
81- ' RowKey' = ' settings'
82- ' passwordType' = $resolvedConfig.passwordType
83- ' charCount' = " $ ( $resolvedConfig.charCount ) "
84- ' includeUppercase' = $resolvedConfig.includeUppercase
85- ' includeLowercase' = $resolvedConfig.includeLowercase
86- ' includeDigits' = $resolvedConfig.includeDigits
68+ ' PartitionKey' = ' settings'
69+ ' RowKey' = ' settings'
70+ ' passwordType' = $resolvedConfig.passwordType
71+ ' charCount' = " $ ( $resolvedConfig.charCount ) "
72+ ' includeUppercase' = $resolvedConfig.includeUppercase
73+ ' includeLowercase' = $resolvedConfig.includeLowercase
74+ ' includeDigits' = $resolvedConfig.includeDigits
8775 ' includeSpecialChars' = $resolvedConfig.includeSpecialChars
88- ' specialCharSet' = $resolvedConfig.specialCharSet
89- ' wordCount' = " $ ( $resolvedConfig.wordCount ) "
90- ' separator' = $resolvedConfig.separator
91- ' capitalizeWords' = $resolvedConfig.capitalizeWords
92- ' appendNumber' = $resolvedConfig.appendNumber
93- ' appendSpecialChar' = $resolvedConfig.appendSpecialChar
76+ ' specialCharSet' = $resolvedConfig.specialCharSet
77+ ' wordCount' = " $ ( $resolvedConfig.wordCount ) "
78+ ' separator' = $resolvedConfig.separator
79+ ' capitalizeWords' = $resolvedConfig.capitalizeWords
80+ ' appendNumber' = $resolvedConfig.appendNumber
81+ ' appendSpecialChar' = $resolvedConfig.appendSpecialChar
9482 }
9583 Add-CIPPAzDataTableEntity @Table - Entity $MigratedEntity - Force | Out-Null
9684 Write-LogMessage - headers $Request.Headers - API $APIName - message " Migrated legacy password type 'Correct-Battery-Horse' to 'Passphrase'" - Sev ' Info'
@@ -99,11 +87,7 @@ Function Invoke-ExecPasswordConfig {
9987 $resolvedConfig
10088 }
10189 } else {
102- # ── Validate request body ────────────────────────────────────────
103- if (-not (Test-RequestBody $Request.Body )) {
104- $StatusCode = [HttpStatusCode ]::BadRequest
105- throw ' Request body must be a valid JSON object'
106- }
90+
10791
10892 # Password type validation
10993 $pwType = if ($null -ne $Request.Body.passwordType ) { " $ ( $Request.Body.passwordType ) " } else { ' ' }
@@ -116,13 +100,13 @@ Function Invoke-ExecPasswordConfig {
116100 throw ' Please select a valid password type (Classic or Passphrase)'
117101 }
118102
119- $includeUppercase = ConvertTo-Bool $Request.Body.includeUppercase
120- $includeLowercase = ConvertTo-Bool $Request.Body.includeLowercase
121- $includeDigits = ConvertTo-Bool $Request.Body.includeDigits
103+ $includeUppercase = ConvertTo-Bool $Request.Body.includeUppercase
104+ $includeLowercase = ConvertTo-Bool $Request.Body.includeLowercase
105+ $includeDigits = ConvertTo-Bool $Request.Body.includeDigits
122106 $includeSpecialChars = ConvertTo-Bool $Request.Body.includeSpecialChars
123- $capitalizeWords = ConvertTo-Bool $Request.Body.capitalizeWords
124- $appendNumber = ConvertTo-Bool $Request.Body.appendNumber
125- $appendSpecialChar = ConvertTo-Bool $Request.Body.appendSpecialChar
107+ $capitalizeWords = ConvertTo-Bool $Request.Body.capitalizeWords
108+ $appendNumber = ConvertTo-Bool $Request.Body.appendNumber
109+ $appendSpecialChar = ConvertTo-Bool $Request.Body.appendSpecialChar
126110
127111 # Char count validation (classic only)
128112 $charCount = 0
@@ -235,25 +219,25 @@ Function Invoke-ExecPasswordConfig {
235219
236220 # ── Persist validated config ──────────────────────────────────────
237221 $PasswordConfig = @ {
238- ' PartitionKey' = ' settings'
239- ' RowKey' = ' settings'
240- ' passwordType' = $pwType
241- ' charCount' = " $charCount "
242- ' includeUppercase' = $includeUppercase
243- ' includeLowercase' = $includeLowercase
244- ' includeDigits' = $includeDigits
222+ ' PartitionKey' = ' settings'
223+ ' RowKey' = ' settings'
224+ ' passwordType' = $pwType
225+ ' charCount' = " $charCount "
226+ ' includeUppercase' = $includeUppercase
227+ ' includeLowercase' = $includeLowercase
228+ ' includeDigits' = $includeDigits
245229 ' includeSpecialChars' = $includeSpecialChars
246- ' specialCharSet' = $specialCharSet
247- ' wordCount' = " $wordCount "
248- ' separator' = $separator
249- ' capitalizeWords' = $capitalizeWords
250- ' appendNumber' = $appendNumber
251- ' appendSpecialChar' = $appendSpecialChar
230+ ' specialCharSet' = $specialCharSet
231+ ' wordCount' = " $wordCount "
232+ ' separator' = $separator
233+ ' capitalizeWords' = $capitalizeWords
234+ ' appendNumber' = $appendNumber
235+ ' appendSpecialChar' = $appendSpecialChar
252236 }
253237
254238 Add-CIPPAzDataTableEntity @Table - Entity $PasswordConfig - Force | Out-Null
255- Write-LogMessage - headers $Request.Headers - API $APIName - message " Successfully set password configuration" - Sev ' Info'
256- " Successfully set the configuration"
239+ Write-LogMessage - headers $Request.Headers - API $APIName - message ' Successfully set password configuration' - Sev ' Info'
240+ ' Successfully set the configuration'
257241 }
258242 } catch {
259243 if ($StatusCode -eq [HttpStatusCode ]::OK) {
@@ -264,7 +248,7 @@ Function Invoke-ExecPasswordConfig {
264248 " Failed to set configuration: $ ( $ErrorMessage.NormalizedError ) "
265249 }
266250
267- $body = [pscustomobject ]@ {' Results' = if ($null -ne $results ) { $results } else { " Operation completed" } }
251+ $body = [pscustomobject ]@ {' Results' = if ($null -ne $results ) { $results } else { ' Operation completed' } }
268252
269253 return ([HttpResponseContext ]@ {
270254 StatusCode = $StatusCode
0 commit comments