Skip to content

Commit 6209230

Browse files
chore: refactored code
1 parent 1b12587 commit 6209230

16 files changed

Lines changed: 73 additions & 20 deletions

src/models.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,13 @@ class User(db.Model, UserMixin):
105105
db.session.add(admin_user)
106106
db.session.commit()
107107

108+
# create a user if not exists
109+
if not User.query.filter_by(username='user').first():
110+
hashed_password = generate_password_hash('userpassword')
111+
user = User(username='user', password=hashed_password, user_level='user')
112+
db.session.add(user)
113+
db.session.commit()
114+
108115
# ibject for all templates
109116
@app.context_processor
110117
def inject_settings():

src/routes/cpu_info.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import psutil
2-
from flask import render_template, blueprints
2+
from flask import render_template, blueprints, flash
33

44
from src.config import app
55
from src.utils import get_cpu_core_count, get_cpu_frequency, cpu_usage_percent, get_cpu_temp, get_cached_value
@@ -11,7 +11,8 @@
1111
def cpu_usage():
1212
settings = DashboardSettings.query.first()
1313
if not settings.is_cpu_info_enabled:
14-
return render_template("error/404.html")
14+
flash("You do not have permission to view this page.", "danger")
15+
return render_template("error/permission_denied.html")
1516

1617
current_temp, high_temp, critical_temp = get_cpu_temp()
1718
cpu_core = get_cached_value("cpu_core", get_cpu_core_count)
@@ -23,4 +24,4 @@ def cpu_usage():
2324
"high_temp": high_temp,
2425
"critical_temp": critical_temp,
2526
}
26-
return render_template("cpu_info.html", system_info=system_info)
27+
return render_template("info_pages/cpu_info.html", system_info=system_info)

src/routes/disk_info.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import psutil
22

3-
from flask import render_template, blueprints
3+
from flask import render_template, blueprints, flash
44

55
from src.config import app
66
from src.utils import get_cached_value, get_disk_free, get_disk_total, get_disk_used, get_disk_usage_percent
@@ -12,13 +12,14 @@
1212
def disk_usage():
1313
settings = DashboardSettings.query.first()
1414
if not settings.is_disk_info_enabled:
15-
return render_template("error/404.html")
15+
flash("You do not have permission to view this page.", "danger")
16+
return render_template("error/permission_denied.html")
1617
disk_total = get_cached_value("disk_total", get_disk_total)
1718
system_info = {
1819
"disk_usage": get_disk_usage_percent(),
1920
"disk_total": disk_total,
2021
"disk_used": get_disk_used(),
2122
"disk_free": get_disk_free(),
2223
}
23-
return render_template("disk_info.html", system_info=system_info)
24+
return render_template("info_pages/disk_info.html", system_info=system_info)
2425

src/routes/memory_info.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import psutil
2-
from flask import render_template, blueprints
2+
from flask import render_template, blueprints, flash
33

44
from src.config import app
55
from src.utils import get_cached_value, get_memory_percent, get_memory_available, get_memory_used, get_swap_memory_info
@@ -12,7 +12,8 @@
1212
def memory_usage():
1313
settings = DashboardSettings.query.first()
1414
if not settings.is_memory_info_enabled:
15-
return render_template("error/404.html")
15+
flash("You do not have permission to view this page.", "danger")
16+
return render_template("error/permission_denied.html")
1617
memory_available = get_cached_value("memory_available", get_memory_available)
1718
system_info = {
1819
"memory_percent": get_memory_percent(),
@@ -23,4 +24,4 @@ def memory_usage():
2324
swap_info = get_swap_memory_info()
2425
system_info.update(swap_info)
2526

26-
return render_template("memory_info.html", system_info=system_info)
27+
return render_template("info_pages/memory_info.html", system_info=system_info)

src/routes/network_info.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import psutil
2-
from flask import render_template, blueprints
2+
from flask import render_template, blueprints, flash
33

44
from src.config import app
55
from src.utils import get_established_connections
@@ -11,7 +11,8 @@
1111
def network_stats():
1212
settings = DashboardSettings.query.first()
1313
if not settings.is_network_info_enabled:
14-
return render_template("error/404.html")
14+
flash("You do not have permission to view this page.", "danger")
15+
return render_template("error/permission_denied.html")
1516
net_io = psutil.net_io_counters()
1617
ipv4_ip, ipv6_ip = get_established_connections()
1718
system_info = {
@@ -20,5 +21,5 @@ def network_stats():
2021
"ipv4_ip": ipv4_ip,
2122
"ipv6_ip": ipv6_ip,
2223
}
23-
return render_template("network_info.html", system_info=system_info)
24+
return render_template("info_pages/network_info.html", system_info=system_info)
2425

src/routes/process.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@
1212
def process():
1313
settings = DashboardSettings.query.first()
1414
if not settings.is_process_info_enabled:
15-
return render_template("error/404.html")
15+
flash("You do not have permission to view this page.", "danger")
16+
return render_template("error/permission_denied.html")
1617
if current_user.user_level != "admin":
1718
flash("You do not have permission to view this page.", "danger")
18-
return redirect(url_for("dashboard"))
19+
return render_template("error/permission_denied.html")
1920

2021
# Retrieve number of processes from session or set default
2122
number_of_processes = session.get('number_of_processes', 50)
@@ -49,4 +50,4 @@ def process():
4950
elif sort_by == 'name':
5051
top_processes.sort(key=lambda x: x[0], reverse=(order == 'desc'))
5152

52-
return render_template("process.html", processes=top_processes, number=number_of_processes, toggle_order=toggle_order)
53+
return render_template("info_pages/process.html", processes=top_processes, number=number_of_processes, toggle_order=toggle_order)

src/routes/settings.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
from flask import render_template, request, flash, blueprints
22
from src.config import app, db
33
from src.models import DashboardSettings
4+
from flask_login import login_required, current_user
45

56
settings_bp = blueprints.Blueprint("settings", __name__)
67

78
@app.route("/settings", methods=["GET", "POST"])
9+
@login_required
810
def settings():
11+
if current_user.user_level != 'admin':
12+
flash("Your account does not have permission to view this page.", "danger")
13+
flash("User level for this account is: " + current_user.user_level, "danger")
14+
flash("Please contact your administrator for more information.", "danger")
15+
return render_template("error/permission_denied.html")
916
# Fetch the settings from the database
1017
settings = DashboardSettings.query.first()
1118
if settings:

src/scripts/dashboard.sh

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ REQUIREMENTS_FILE="${REQUIREMENTS_FILE:-$PROJECT_DIR/requirements.txt}"
1313
FLASK_PORT="${FLASK_PORT:-5050}"
1414
LOG_FILE="/home/$(whoami)/logs/systemguard_flask.log"
1515
USERNAME="$(whoami)"
16+
CONDA_ENV_NAME="systemguard"
1617

1718
# Ensure log directory exists
1819
LOG_DIR="$(dirname "$LOG_FILE")"
@@ -45,9 +46,6 @@ fi
4546
# Initialize Conda
4647
source "$CONDA_SETUP_SCRIPT"
4748

48-
# Define Conda environment name
49-
CONDA_ENV_NAME="dashboar"
50-
5149
echo "Conda environment name: $CONDA_ENV_NAME"
5250

5351
# Check if the Conda environment exists and create it if not
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{% extends 'base.html' %}
2+
{% block title %}Page not found{% endblock %}
3+
{% block extra_head %}
4+
<link rel="stylesheet" href="{{ url_for('static', filename='css/404.css')}}">
5+
{% endblock %}
6+
7+
{% block content %}
8+
<div class="container">
9+
{% include 'ext/message.html' %}
10+
<h1>Permission Denied</h1>
11+
<p>Oops! You do not have permission to access this page.</p>
12+
<a href="{{ url_for('dashboard') }}" class="btn">Go Back Home</a>
13+
</div>
14+
{% endblock %}

src/templates/ext/message.html

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,18 @@
1-
{% with messages=get_flashed_messages(with_categories=true) %}{% if messages %}<div id="flash-messages">{% for category, message in messages %} <div class="alert alert-{{ category}}" role="alert">{{ message}} </div>{% endfor %}</div>{% endif %}{% endwith %}<script>// Automatically remove flash messages after 5 seconds setTimeout(function (){ var flashMessages=document.getElementById('flash-messages'); if (flashMessages){ flashMessages.style.transition='opacity 0.5s ease'; flashMessages.style.opacity='0'; setTimeout(function (){ flashMessages.remove();}, 500); // Additional time for the fade-out effect}}, 5000); // 5 seconds delay</script>
1+
{% with messages=get_flashed_messages(with_categories=true) %}{% if messages %}<div id="flash-messages">{% for category,
2+
message in messages %} <div class="alert alert-{{ category}}" role="alert">{{ message}} </div>{% endfor %}</div>{%
3+
endif %}{% endwith %}
4+
5+
6+
<script>
7+
// Automatically remove flash messages after 5 seconds
8+
setTimeout(function() {
9+
var flashMessages = document.getElementById('flash-messages');
10+
if (flashMessages) {
11+
flashMessages.style.transition = 'opacity 0.5s ease';
12+
flashMessages.style.opacity = '0';
13+
setTimeout(function() {
14+
flashMessages.remove();
15+
}, 500); // Additional time for the fade-out effect
16+
}
17+
}, 3000 ); // 5 seconds delay
18+
</script>

0 commit comments

Comments
 (0)