# Reset password for notifications@dataforth.com using Exchange Online
# This works when Microsoft Graph permissions are insufficient

Write-Host "[OK] Resetting password via Azure AD (using web portal method)..." -ForegroundColor Green
Write-Host ""

$UserPrincipalName = "notifications@dataforth.com"

# Generate a strong password
Add-Type -AssemblyName System.Web
$NewPassword = [System.Web.Security.Membership]::GeneratePassword(16, 4)

Write-Host "================================================================"
Write-Host "PASSWORD RESET OPTIONS"
Write-Host "================================================================"
Write-Host ""
Write-Host "[OPTION 1] Use Azure AD Portal (Recommended - Always Works)" -ForegroundColor Cyan
Write-Host ""
Write-Host "1. Open browser to: https://portal.azure.com"
Write-Host "2. Navigate to: Azure Active Directory > Users"
Write-Host "3. Search for: notifications@dataforth.com"
Write-Host "4. Click 'Reset password'"
Write-Host "5. Use this generated password: $NewPassword" -ForegroundColor Yellow
Write-Host "6. UNCHECK 'Make this user change password on first sign in'"
Write-Host ""

Write-Host "[OPTION 2] Use PowerShell with Elevated Admin Account" -ForegroundColor Cyan
Write-Host ""
Write-Host "If you have a Global Admin account, connect to Azure AD:"
Write-Host ""
Write-Host "Install-Module AzureAD -Scope CurrentUser" -ForegroundColor Gray
Write-Host "Connect-AzureAD -TenantId 7dfa3ce8-c496-4b51-ab8d-bd3dcd78b584" -ForegroundColor Gray
Write-Host "`$Password = ConvertTo-SecureString '$NewPassword' -AsPlainText -Force" -ForegroundColor Gray
Write-Host "Set-AzureADUserPassword -ObjectId notifications@dataforth.com -Password `$Password -ForceChangePasswordNextSignIn `$false" -ForegroundColor Gray
Write-Host ""

Write-Host "================================================================"
Write-Host "RECOMMENDED PASSWORD"
Write-Host "================================================================"
Write-Host ""
Write-Host "    $NewPassword" -ForegroundColor Yellow
Write-Host ""
Write-Host "SAVE THIS PASSWORD for the website configuration!"
Write-Host ""

# Save to file
$CredPath = "D:\ClaudeTools\dataforth-notifications-NEW-PASSWORD.txt"
@"
Dataforth Notifications Account - PASSWORD RESET
Generated: $(Get-Date -Format "yyyy-MM-dd HH:mm:ss")

Username: notifications@dataforth.com
NEW Password: $NewPassword

IMPORTANT: Password policy is already set to never expire!
You just need to reset the actual password.

SMTP Configuration for Website:
- Server: smtp.office365.com
- Port: 587
- TLS: Yes
- Username: notifications@dataforth.com
- Password: $NewPassword

STATUS:
- Password Never Expires: YES (already configured)
- Password Reset: PENDING (use Azure portal or PowerShell above)

DO NOT COMMIT TO GIT OR SHARE PUBLICLY
"@ | Out-File -FilePath $CredPath -Encoding UTF8

Write-Host "[OK] Instructions and password saved to:" -ForegroundColor Green
Write-Host "    $CredPath" -ForegroundColor Cyan
Write-Host ""
Write-Host "================================================================"
Write-Host "AFTER RESETTING PASSWORD"
Write-Host "================================================================"
Write-Host "1. Update website SMTP config with new password"
Write-Host "2. Test: D:\ClaudeTools\Test-DataforthSMTP.ps1"
Write-Host "3. Verify: Get-MessageTrace -SenderAddress notifications@dataforth.com"
Write-Host ""
