22from flask_login import LoginManager , UserMixin , login_user , login_required , logout_user , current_user
33from flask_sqlalchemy import SQLAlchemy
44from werkzeug .security import generate_password_hash , check_password_hash
5+ from src .scripts .email_me import send_email
56
67from src .config import app , db
7- from src .models import User
8+ from src .models import User , EmailPassword
89
910auth_bp = blueprints .Blueprint ('auth' , __name__ )
1011
@@ -28,7 +29,7 @@ def login():
2829 if user and check_password_hash (user .password , password ):
2930 login_user (user )
3031 return redirect (url_for ('dashboard' ))
31- flash ('Invalid username or password' )
32+ flash ('Invalid username or password' , 'danger' )
3233 return render_template ('login.html' )
3334
3435@app .route ('/signup' , methods = ['GET' , 'POST' ])
@@ -88,3 +89,68 @@ def logout():
8889# return redirect(url_for('login'))
8990# return f(*args, **kwargs)
9091# return decorated_function
92+
93+ @app .route ('/user/<username>' , methods = ['GET' , 'POST' ])
94+ @login_required
95+ def change_user_settings (username ):
96+ user = User .query .filter_by (username = username ).first_or_404 ()
97+
98+ if request .method == 'POST' :
99+ new_username = request .form ['username' ]
100+ new_user_level = request .form ['user_level' ]
101+
102+ # Update user details
103+ user .username = new_username
104+ user .user_level = new_user_level
105+ db .session .commit ()
106+
107+ flash ('User settings updated successfully!' , 'success' )
108+ return redirect (url_for ('change_user_settings' , username = user .username ))
109+
110+ return render_template ('change_user.html' , user = user )
111+
112+
113+ @app .route ("/update-email-password" , methods = ["GET" , "POST" ])
114+ @login_required
115+ def update_email_password ():
116+ email_password = EmailPassword .query .first ()
117+
118+ if request .method == "POST" :
119+ new_email = request .form .get ("email" )
120+ new_password = request .form .get ("password" )
121+
122+ if new_email :
123+ email_password .email = new_email
124+ if new_password :
125+ email_password .password = new_password
126+
127+ db .session .commit ()
128+ flash ("Email and password updated successfully!" , "success" )
129+ return redirect (url_for ("update_email_password" ))
130+
131+ return render_template ("update_email_password.html" , email_password = email_password )
132+
133+ @app .route ("/send_email" , methods = ["GET" , "POST" ])
134+ @login_required
135+ def send_email_page ():
136+ if request .method == "POST" :
137+ receiver_email = request .form .get ("receiver_email" )
138+ subject = request .form .get ("subject" )
139+ body = request .form .get ("body" )
140+ attachment = request .files .get ("attachment" )
141+
142+ # Save attachment if any
143+ attachment_path = None
144+ if attachment :
145+ attachment_path = f"/tmp/{ attachment .filename } "
146+ attachment .save (attachment_path )
147+
148+ try :
149+ send_email (receiver_email , subject , body , attachment_path )
150+ flash ("Email sent successfully!" , "success" )
151+ except Exception as e :
152+ flash (f"Failed to send email: { str (e )} " , "danger" )
153+
154+ return redirect (url_for ('send_email_page' ))
155+
156+ return render_template ("send_email.html" )
0 commit comments