VeuReu commited on
Commit
4ad3336
·
1 Parent(s): 0b359e1

Upload 12 files

Browse files
Files changed (2) hide show
  1. database.py +7 -0
  2. manage_users.py +59 -0
database.py CHANGED
@@ -125,6 +125,13 @@ def get_all_users() -> List[Dict[str, Any]]:
125
  cur = conn.execute("SELECT id, username, role FROM users ORDER BY username")
126
  return cur.fetchall()
127
 
 
 
 
 
 
 
 
128
  # Videos
129
  def create_video(filename: str, original_name: str, uploader: str, status: str) -> int:
130
  with get_conn() as conn:
 
125
  cur = conn.execute("SELECT id, username, role FROM users ORDER BY username")
126
  return cur.fetchall()
127
 
128
+ def update_user_password(username: str, pw_hash: str):
129
+ with get_conn() as conn:
130
+ conn.execute(
131
+ "UPDATE users SET pw_hash = ? WHERE username = ?",
132
+ (pw_hash, username)
133
+ )
134
+
135
  # Videos
136
  def create_video(filename: str, original_name: str, uploader: str, status: str) -> int:
137
  with get_conn() as conn:
manage_users.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import argparse
2
+ from passlib.hash import bcrypt
3
+ from database import set_db_path, init_schema, get_all_users, create_user, get_user, update_user_password
4
+
5
+ DB_PATH = "/tmp/data/app.db"
6
+
7
+ def hash_password(password: str) -> str:
8
+ return bcrypt.hash(password)
9
+
10
+ def main():
11
+ set_db_path(DB_PATH)
12
+ init_schema()
13
+
14
+ parser = argparse.ArgumentParser(description="Gestionar usuarios de la aplicación Veureu.")
15
+ subparsers = parser.add_subparsers(dest="command", required=True)
16
+
17
+ # Comando para listar usuarios
18
+ parser_list = subparsers.add_parser("list", help="Listar todos los usuarios.")
19
+
20
+ # Comando para añadir un usuario
21
+ parser_add = subparsers.add_parser("add", help="Añadir un nuevo usuario.")
22
+ parser_add.add_argument("username", help="Nombre de usuario.")
23
+ parser_add.add_argument("password", help="Contraseña del usuario.")
24
+ parser_add.add_argument("role", help="Rol del usuario (ej: admin, editor, viewer).")
25
+
26
+ # Comando para resetear la contraseña
27
+ parser_reset = subparsers.add_parser("reset-password", help="Restablecer la contraseña de un usuario.")
28
+ parser_reset.add_argument("username", help="Nombre del usuario a modificar.")
29
+ parser_reset.add_argument("new_password", help="Nueva contraseña.")
30
+
31
+ args = parser.parse_args()
32
+
33
+ if args.command == "list":
34
+ users = get_all_users()
35
+ if not users:
36
+ print("No hay usuarios en la base de datos.")
37
+ return
38
+ print(f"Usuarios encontrados ({len(users)}):")
39
+ for user in users:
40
+ print(f" - ID: {user['id']}, Usuario: {user['username']}, Rol: {user['role']}")
41
+
42
+ elif args.command == "add":
43
+ if get_user(args.username):
44
+ print(f"Error: El usuario '{args.username}' ya existe.")
45
+ return
46
+ pw_hash = hash_password(args.password)
47
+ create_user(args.username, pw_hash, args.role)
48
+ print(f"Usuario '{args.username}' creado con éxito.")
49
+
50
+ elif args.command == "reset-password":
51
+ if not get_user(args.username):
52
+ print(f"Error: El usuario '{args.username}' no existe.")
53
+ return
54
+ pw_hash = hash_password(args.new_password)
55
+ update_user_password(args.username, pw_hash)
56
+ print(f"Contraseña del usuario '{args.username}' actualizada con éxito.")
57
+
58
+ if __name__ == "__main__":
59
+ main()