88from flask import Flask , render_template , request , jsonify
99import subprocess
1010
11- from src .scripts .email_me import send_email
11+ from src .scripts .email_me import send_smpt_email
1212
1313from src .config import app , db
1414from src .models import User , SmptEamilPasswordConfig , DashboardSettings
@@ -74,15 +74,18 @@ def login():
7474 # log in alert to admin
7575
7676 if admin_email_address :
77- context = {"username" : current_user .username , "login_time" : datetime .datetime .now ()}
78- login_body = render_template_from_file ("src/templates/email_templates/admin_login_alert.html" , ** context )
79- # send_email(admin_email_address, 'Login Alert', login_body, is_html=True)
77+ if receiver_email in admin_email_address :
78+ admin_email_address .remove (receiver_email )
79+ if admin_email_address :
80+ context = {"username" : current_user .username , "login_time" : datetime .datetime .now ()}
81+ login_body = render_template_from_file ("src/templates/email_templates/admin_login_alert.html" , ** context )
82+ send_smpt_email (admin_email_address , 'Login Alert' , login_body , is_html = True )
8083
8184 # log in alert to user
8285 if receiver_email :
8386 context = {"username" : current_user .username , "login_time" : datetime .datetime .now ()}
8487 login_body = render_template_from_file ("src/templates/email_templates/login.html" , ** context )
85- # send_email (receiver_email, 'Login Alert', login_body, is_html=True)
88+ send_smpt_email (receiver_email , 'Login Alert' , login_body , is_html = True )
8689 return redirect (url_for ('dashboard' ))
8790 flash ('Invalid username or password' , 'danger' )
8891 return render_template ('login.html' )
@@ -93,16 +96,19 @@ def logout():
9396 if receiver_email :
9497 context = {"username" : current_user .username }
9598 logout_body = render_template_from_file ("src/templates/email_templates/logout.html" , ** context )
96- # send_email (receiver_email, 'Logout Alert', logout_body, is_html=True)
99+ send_smpt_email (receiver_email , 'Logout Alert' , logout_body , is_html = True )
97100 logout_user ()
98101 return redirect (url_for ('login' ))
99102
100103@app .route ('/signup' , methods = ['GET' , 'POST' ])
101104def signup ():
102105 if request .method == 'POST' :
103106 username = request .form ['username' ]
107+ email = request .form ['email' ]
104108 password = request .form ['password' ]
105109 confirm_password = request .form ['confirm_password' ]
110+ user_level = request .form .get ('user_level' , 'user' ) # Default to 'user' if not provided
111+ receive_email_alerts = 'receive_email_alerts' in request .form # Checkbox is either checked or not
106112
107113 if password != confirm_password :
108114 flash ('Passwords do not match' )
@@ -114,16 +120,29 @@ def signup():
114120 return redirect (url_for ('signup' ))
115121
116122 hashed_password = generate_password_hash (password )
117- new_user = User (username = username , password = hashed_password )
123+ new_user = User (username = username , email = email , password = hashed_password , user_level = user_level , receive_email_alerts = receive_email_alerts )
118124
119125 # Get Admin Emails with Alerts Enabled:
120126 admin_email_address = get_email_addresses (user_level = 'admin' , receive_email_alerts = True )
121- # extends the signup user to send an email to the admin
122127 if admin_email_address :
123- send_email (admin_email_address , 'New User Alert' , f'{ username } has signed up to the system.' )
124-
125- # send email to the new user
126- send_email ([new_user .email ], 'Welcome to the system' , f'Hello { new_user .username } , welcome to the system.' )
128+ subject = "New User Alert"
129+ context = {
130+ "username" : new_user .username ,
131+ "email" : new_user .email ,
132+ "signup_time" : datetime .datetime .now (),
133+ "user_level" : new_user .user_level
134+ }
135+ html_body = render_template_from_file ("src/templates/email_templates/new_user_alert.html" , ** context )
136+ send_smpt_email (admin_email_address , subject , html_body , is_html = True )
137+
138+ # Send email to the new user
139+ subject = "Welcome to the systemGuard"
140+ context = {
141+ "username" : new_user .username ,
142+ "email" : new_user .email ,
143+ }
144+ html_body = render_template_from_file ("src/templates/email_templates/welcome.html" , ** context )
145+ send_smpt_email (email , subject , html_body , is_html = True )
127146
128147 db .session .add (new_user )
129148 db .session .commit ()
@@ -263,7 +282,7 @@ def send_email_page():
263282 attachment_path = f"/tmp/{ attachment .filename } "
264283 attachment .save (attachment_path )
265284 try :
266- respose = send_email (receiver_email , subject , body , attachment_path )
285+ respose = send_smpt_email (receiver_email , subject , body , attachment_path )
267286 print (respose )
268287 if respose and respose .get ("status" ) == "success" :
269288 flash (respose .get ("message" ), "success" )
@@ -293,7 +312,11 @@ def terminal():
293312 return render_template ('terminal.html' )
294313
295314@app .route ('/add_user' , methods = ['GET' , 'POST' ])
315+ @login_required
296316def add_user ():
317+ if current_user .user_level != 'admin' :
318+ flash ("Your account does not have permission to view this page." , "danger" )
319+ return render_template ("error/permission_denied.html" )
297320 if request .method == 'POST' :
298321 username = request .form ['username' ]
299322 email = request .form ['email' ]
@@ -313,6 +336,28 @@ def add_user():
313336 user_level = user_level ,
314337 receive_email_alerts = receive_email_alerts
315338 )
339+
340+ admin_email_address = get_email_addresses (user_level = 'admin' , receive_email_alerts = True )
341+ if admin_email_address :
342+ subject = "New User Alert"
343+ context = {
344+ "current_user" : current_user .username ,
345+ "username" : new_user .username ,
346+ "email" : new_user .email ,
347+ "signup_time" : datetime .datetime .now (),
348+ "user_level" : new_user .user_level
349+ }
350+ html_body = render_template_from_file ("src/templates/email_templates/new_user_create.html" , ** context )
351+ send_smpt_email (admin_email_address , subject , html_body , is_html = True )
352+
353+ subject = "Welcome to the systemGuard"
354+ context = {
355+ "username" : new_user .username ,
356+ "email" : new_user .email ,
357+ }
358+ html_body = render_template_from_file ("src/templates/email_templates/welcome.html" , ** context )
359+ send_smpt_email (email , subject , html_body , is_html = True )
360+
316361 db .session .add (new_user )
317362 db .session .commit ()
318363 flash ('User created successfully!' , 'success' )
0 commit comments