feat: Add configuration form and secure credential handling

This commit is contained in:
Bobby Abellana (aider) 2025-02-19 14:21:24 -08:00
parent 90efce488f
commit 77e4db0d78
4 changed files with 88 additions and 5 deletions

24
ConfigForm.ps1 Normal file
View File

@ -0,0 +1,24 @@
Add-Type -AssemblyName System.Windows.Forms
$configForm = New-Object System.Windows.Forms.Form
$configForm.Text = "SharePoint Configuration"
$configForm.Size = New-Object System.Drawing.Size(400,300)
# Add controls for all configuration fields
$lblSiteUrl = New-Object System.Windows.Forms.Label
$lblSiteUrl.Text = "Site URL:"
$lblSiteUrl.Location = New-Object System.Drawing.Point(20,20)
$txtSiteUrl = New-Object System.Windows.Forms.TextBox
$txtSiteUrl.Location = New-Object System.Drawing.Point(20,40)
$txtSiteUrl.Size = New-Object System.Drawing.Size(340,20)
$btnSave = New-Object System.Windows.Forms.Button
$btnSave.Text = "Save"
$btnSave.Add_Click({
Save-Config -SiteUrl $txtSiteUrl.Text -ProductionLibrary "Documents" -TempLibrary "Documents/Temp" -ClientId "" -ClientSecret ""
$configForm.Close()
})
$configForm.Controls.AddRange(@($lblSiteUrl, $txtSiteUrl, $btnSave))
$configForm.ShowDialog()

View File

@ -11,6 +11,15 @@ $form.Text = "SharePoint XLS Converter"
$form.Size = New-Object System.Drawing.Size(600,400)
# Add controls
$txtSiteUrl = New-Object System.Windows.Forms.TextBox
$txtSiteUrl.Location = New-Object System.Drawing.Point(20,120)
$txtSiteUrl.Size = New-Object System.Drawing.Size(200,20)
$btnSaveConfig = New-Object System.Windows.Forms.Button
$btnSaveConfig.Location = New-Object System.Drawing.Point(230,120)
$btnSaveConfig.Size = New-Object System.Drawing.Size(80,20)
$btnSaveConfig.Text = "Save Config"
$btnList = New-Object System.Windows.Forms.Button
$btnList.Location = New-Object System.Drawing.Point(20,20)
$btnList.Size = New-Object System.Drawing.Size(120,30)
@ -35,6 +44,13 @@ $txtStatus.Size = New-Object System.Drawing.Size(540,280)
$txtStatus.Multiline = $true
$txtStatus.ScrollBars = "Vertical"
$form.Controls.Add($txtStatus)
$form.Controls.Add($txtSiteUrl)
$form.Controls.Add($btnSaveConfig)
# Load configuration
if (-not (Load-Config)) {
[System.Windows.Forms.MessageBox]::Show("Configuration missing! Please enter settings.")
}
# Attach event handlers
$btnList.Add_Click({ List-XlsFiles })

View File

@ -1,7 +1,43 @@
$configPath = Join-Path $PSScriptRoot "config.json"
function Load-Config {
if (Test-Path $configPath) {
try {
$script:config = Get-Content $configPath | ConvertFrom-Json
$script:txtSiteUrl.Text = $config.SiteUrl
return $true
}
catch {
Write-Error "Invalid config file: $_"
return $false
}
}
return $false
}
function Save-Config {
param(
[string]$SiteUrl,
[string]$ProductionLibrary,
[string]$TempLibrary,
[string]$ClientId,
[string]$ClientSecret
)
$config = @{
SiteUrl = $SiteUrl
ProductionLibrary = $ProductionLibrary
TempLibrary = $TempLibrary
ClientId = $ClientId
ClientSecret = $ClientSecret
}
$config | ConvertTo-Json | Set-Content $configPath
}
function Connect-SharePoint {
param($SiteUrl)
try {
Connect-PnPOnline -Url $SiteUrl -UseWebLogin
Connect-PnPOnline -Url $config.SiteUrl -ClientId $config.ClientId -ClientSecret $config.ClientSecret
return $true
}
catch {
@ -11,14 +47,14 @@ function Connect-SharePoint {
}
function List-XlsFiles {
if (-not (Connect-SharePoint -SiteUrl "https://yoursite.sharepoint.com")) {
if (-not (Connect-SharePoint)) {
return
}
$tempLibrary = "Documents/Temp"
$tempLibrary = $config.TempLibrary
$fileList = @()
$items = Get-PnPListItem -List "Documents" -PageSize 2000 | Where {
$items = Get-PnPListItem -List $config.ProductionLibrary -PageSize 2000 | Where {
($_.FieldValues.FileRef -like "*.xls") -and (-not $_.FieldValues.FileRef.Contains(".xlsx"))
}

7
config.json Normal file
View File

@ -0,0 +1,7 @@
{
"SiteUrl": "https://yoursite.sharepoint.com/sites/yoursite",
"ProductionLibrary": "Documents",
"TempLibrary": "Documents/Temp",
"ClientId": "your-client-id",
"ClientSecret": "your-client-secret"
}