diff --git a/app/api/web_api.py b/app/api/web_api.py index 8261e28..a0c4b21 100644 --- a/app/api/web_api.py +++ b/app/api/web_api.py @@ -85,7 +85,7 @@ def api_get_user_permissions(): @web_api.route("/api/users", methods=["POST"]) def api_add_user(): user_data = request.get_json() - user = User(user_data["name"], user_data["key"], user_data["email"]) + user = User(user_data["name"], user_data["email"], user_data["phone"], user_data["key"]) number_of_new_user_added = user.save() @@ -101,7 +101,7 @@ def api_add_user(): @web_api.route("/api/users/", methods=["DELETE"]) def api_delete_user(user_key): - user = User(key=user_key, name=None) + user = User(key=user_key, name=None, email=None, phone=None) user.delete() return jsonify({"message": "User deleted successfully"}) @@ -109,7 +109,7 @@ def api_delete_user(user_key): @web_api.route("/api/users//devices/", methods=["POST"]) def api_add_user_permission(user_key, device_id): - user = User(key=user_key, name=None) + user = User(key=user_key, name=None, email=None, phone=None) user.add_permission(device_id) return jsonify({"message": "User permission added successfully"}) @@ -117,7 +117,7 @@ def api_add_user_permission(user_key, device_id): @web_api.route("/api/users//devices/", methods=["DELETE"]) def api_remove_user_permission(user_key, device_id): - user = User(key=user_key, name=None) + user = User(key=user_key, name=None, email=None, phone=None) user.remove_permission(device_id) return jsonify({"message": "User permission removed successfully"}) diff --git a/app/models/user.py b/app/models/user.py index f4d2ca3..cb85c98 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -3,10 +3,11 @@ class User: - def __init__(self, name, key, email=None): + def __init__(self, name, email, phone, key): self.name = name - self.key = key self.email = email + self.phone = phone + self.key = key @classmethod def get_by_key(cls, key): @@ -15,7 +16,7 @@ def get_by_key(cls, key): cursor.execute("SELECT * FROM users WHERE key = ?", (key,)) result = cursor.fetchone() if result: - return User(result[0], result[1], result[2]) + return User(result[0], result[1], result[2], result[3]) return None @@ -33,15 +34,16 @@ def save(self): number_of_new_user = 0 if existing_user: # Update existing user data + # Updating mechanism needs to be improved cursor.execute( "UPDATE users SET name = ?, key = ? WHERE email = ?", - (self.name, self.key, self.email if self.email else None), + (self.name, self.key, self.email), ) else: # Create new user cursor.execute( - "INSERT INTO users (name, key, email) VALUES (?, ?, ?)", - (self.name, self.key, self.email if self.email else None), + "INSERT INTO users (name, email, phone, key) VALUES (?, ?, ?, ?)", + (self.name, self.email, self.phone, self.key), ) number_of_new_user = 1 conn.commit() @@ -79,7 +81,7 @@ def get_permissions(cls, user_key=None): if user_key: cursor.execute( """ - SELECT users.name, users.key, users.email, + SELECT users.name, users.email, users.phone, users.key, (SELECT operation_time FROM event_logs WHERE user_key = users.key @@ -93,7 +95,7 @@ def get_permissions(cls, user_key=None): else: cursor.execute( """ - SELECT users.name, users.key, users.email, + SELECT users.name, users.email, users.phone, users.key, (SELECT operation_time FROM event_logs WHERE user_key = users.key @@ -105,9 +107,10 @@ def get_permissions(cls, user_key=None): for row in cursor.fetchall(): user_name = row[0] - user_key = row[1] - user_email = row[2] if row[2] else None # Handle email being None - latest_activity = row[3] + user_email = row[1] if row[1] else None # Handle email being None + user_phone = row[2] if row[2] else None # Handle phone being None + user_key = row[3] + latest_activity = row[4] # Get device permissions for the current user device_permissions = [] @@ -138,8 +141,9 @@ def get_permissions(cls, user_key=None): # Combine user information and permissions into a single record user_record = { "user_name": user_name, - "user_key": user_key, "user_email": user_email, + "user_phone": user_phone, + "user_key": user_key, "permissions": device_permissions, "latest_activity": latest_activity, } diff --git a/app/schema.sql b/app/schema.sql index 66d8fb6..d8a153c 100644 --- a/app/schema.sql +++ b/app/schema.sql @@ -7,8 +7,10 @@ CREATE TABLE IF NOT EXISTS admins CREATE TABLE IF NOT EXISTS users ( name TEXT NOT NULL, - key TEXT NOT NULL, - email TEXT NOT NULL + email TEXT NOT NULL, + phone TEXT DEFAULT NULL, + key TEXT NOT NULL + ); CREATE TABLE IF NOT EXISTS permissions ( diff --git a/app/templates/prismo/users.html b/app/templates/prismo/users.html index f366332..8b175ea 100644 --- a/app/templates/prismo/users.html +++ b/app/templates/prismo/users.html @@ -6,9 +6,18 @@
Add last used RFID card as new user:
- + +
@@ -28,11 +37,11 @@
Add last used RFID card as new user: { console.error('Error fetching latest key:', error); - // Handle the error appropriately, e.g., display an error message + $('#used-key-at').text('Error fetching key'); }); }); @@ -49,7 +58,11 @@
Add last used RFID card as new user: Add last used RFID card as new user: Add last used RFID card as new user: Add last used RFID card as new user: Add last used RFID card as new user: Delete' } }) @@ -149,12 +164,15 @@
Add last used RFID card as new user: ` + const value = row[key]; + // If value is null or undefined, return empty string (no checkbox) + if (value === null || value === undefined) return ''; + // If value is a string, just return it + if (typeof value === 'string') return value; + // Otherwise, render checkbox for permissions + return ``; }, - visible: key !== 'key', + visible: key !== 'key', title: key.charAt(0).toUpperCase() + key.slice(1) } })