This commit is contained in:
Oli Passey
2024-12-19 18:02:20 +00:00
parent 868cf236ab
commit c45ac7d7bb
4 changed files with 64 additions and 9 deletions

View File

@@ -65,11 +65,6 @@ def get_app_registrations():
app_registrations = response.json().get('value', [])
logging.info(f"Fetched {len(app_registrations)} app registrations")
# Debug log the first app registration
if app_registrations:
logging.info(f"Sample app data: {json.dumps(app_registrations[0], indent=2)}")
return app_registrations
except requests.exceptions.RequestException as e:

View File

@@ -32,6 +32,15 @@ def generate_html(app_registrations):
<head>
<title>App Registrations</title>
<style>
body {{
font-family: Arial, sans-serif;
margin: 20px;
color: #333;
}}
.intro {{
margin-bottom: 20px;
line-height: 1.5;
}}
table {{
width: 100%;
border-collapse: collapse;
@@ -59,6 +68,36 @@ def generate_html(app_registrations):
</style>
</head>
<body>
<div class="intro">
<h2>Azure App Registration Expiry Notification</h2>
<p>This is an automated notification regarding expiring Azure App Registrations that you own or manage.</p>
<p><strong>Why am I receiving this?</strong><br>
You are receiving this email because you are listed as an owner of one or more Azure App Registrations that are approaching their expiration date or have already expired.</p>
<p><strong>Required Actions:</strong></p>
<ul>
<li>Review the list of app registrations below</li>
<li>For any expiring or expired registrations:
<ul>
<li>Verify if the app registration is still needed</li>
<li>If needed, renew the credentials before they expire</li>
<li>If not needed, consider removing the app registration</li>
</ul>
</li>
</ul>
<p><strong>Color Coding:</strong></p>
<ul>
<li style="background-color: #d4edda; padding: 3px;">Green: More than 30 days until expiry</li>
<li style="background-color: #fff3cd; padding: 3px;">Yellow: Between 8-30 days until expiry</li>
<li style="background-color: #ffeeba; padding: 3px;">Orange: 7 days or less until expiry</li>
<li style="background-color: #f8d7da; padding: 3px;">Red: Expired</li>
</ul>
<p>If you need assistance, please contact the IT Support team.</p>
</div>
<h1>App Registrations</h1>
<p>Exported on: {current_time}</p>
<table>
@@ -127,6 +166,27 @@ def generate_html(app_registrations):
return html
def generate_expiry_text(app_name, days_to_expiry, expiry_date):
if days_to_expiry > 30:
color = "#28a745" # green
elif days_to_expiry > 7:
color = "#ffc107" # yellow
elif days_to_expiry > 0:
color = "#ff9800" # orange
else:
color = "#dc3545" # red
days_to_expiry = "EXPIRED"
return f"""
<div style="font-size: 26px; margin-bottom: 20px;">
<p>The app registration <strong>{app_name}</strong> is set to expire in
<span style="color: {color}; font-weight: bold; font-size: 28px;">
{days_to_expiry}
</span>
days on <strong>{expiry_date.strftime('%Y-%m-%d')}</strong></p>
</div>
"""
# Example usage
if __name__ == "__main__":
# Sample app registration data

View File

@@ -7,7 +7,7 @@ from datetime import datetime
import requests
import json
import logging
from data_export import generate_html
from data_export import generate_html, generate_expiry_text
# Load environment variables
load_dotenv()
@@ -65,11 +65,11 @@ def send_notifications(app_registrations):
days_to_expiry = (expiry_date - current_date).days
if days_to_expiry in notification_periods or days_to_expiry < 0:
subject = f"App Registration Expiry Notification: {app['displayName']}"
body = f"The app registration {app['displayName']} is set to expire in {days_to_expiry} days on {expiry_date.strftime('%Y-%m-%d')}.<br><br>{html_content}"
body = generate_expiry_text(app['displayName'], days_to_expiry, expiry_date) + html_content
# Fetch and debug log owner information
owners = app.get('owners', [])
logging.info(f"Found owners for {app['displayName']}: {json.dumps(owners, indent=2)}")
#logging.info(f"Found owners for {app['displayName']}: {json.dumps(owners, indent=2)}")
# Get CC emails from owners
cc_emails = []

View File

@@ -1,4 +1,4 @@
azure-identity==1.19.0
azure-identity
azure-mgmt-resource==23.2.0
msal==1.24.0
python-dotenv==1.0.0