Rapportsystem API - of D03N
Hovedprosjekt FiV Programmering 20-24
Loading...
Searching...
No Matches
adminDeleteUser.py
Go to the documentation of this file.
1from flask_restx import Resource
2from flask import request, jsonify
3from flask_jwt_extended import jwt_required, get_jwt_identity
4import os
5import sys
6
7current_directory = os.getcwd()
8sys.path.append(os.path.join(current_directory))
9
10#Imports user model
11from Models import user_model as UM
12#Imports SQL admin connections
13from SQLAdminConnections import SQL_AdminConnector as SQLC
14from SQLAdminConnections import SQL_AdminQuerys as SQLQ
15#Imports token handler
16from USER_session import tokenHandler as TH
17#Imports requirements
18from Common.Requirements import valid_token as vt
19from Common.Requirements.admin_req import require_admin_account
20
21#Route for deleting user
23 tokenHandler = TH.UserTokenHandler()
24
25 @ns.route('/deleteSubUser')
26 class delete_subuser(Resource):
27 deletion_model = UM.sub_delete_model(ns)
28
29 #Documentation for swagger UI
30 @ns.doc('Delete user',
31 description='Deletes subuser when given Username.',
32 responses={200: 'OK',
33 400: 'Invalid Argument or faulty data',
34 500: 'Internal server error'})
35 @ns.expect(deletion_model, validate=True)
36
37 #Requires valid jwt token & admin account
38 @jwt_required()
39 @vt.require_valid_token
40 @require_admin_account
41
42 # post function for deleting user
43 def post(self):
44 data = request.get_json()
45 username = data["username"].lower()
46
47 #Removes user from database
48 remove_SQL_account(username)
49 remove_user_account(username)
50
51 return {"message": "Removed.", "Goodbye": username}, 200
52
53#Function to remove user from database
54def remove_SQL_account(username):
55 try:
56 connection = SQLC.SQLConAdmin()
57 connection.connect()
58 connection.execute_query(SQLQ.SQLQueries.use_users_database())
59 connection.execute_query(SQLQ.SQLQueries.delete_sql_user(username))
60 connection.cnx.commit()
61 except Exception as e:
62 print(f"An error occurred during deletion: {e}")
63 return False
64 finally:
65 if connection:
66 connection.close()
67
68#Function to remove user from user_info table
69def remove_user_account(username):
70 try:
71 user_id = get_user_id(username)
72 if user_id:
73 delete_user_tokens(user_id)
74 connection = SQLC.SQLConAdmin()
75 connection.connect()
76 connection.execute_query(SQLQ.SQLQueries.use_users_database())
77 connection.execute_query(SQLQ.SQLQueries.delete_activities_by_user_id(user_id))
78 connection.execute_query(SQLQ.SQLQueries.delete_user_from_user_info(username))
79 connection.cnx.commit()
80 except Exception as e:
81 print(f"An error occurred during user deletion: {e}")
82 finally:
83 if connection:
84 connection.close()
85
86#Function for getting user ID
87def get_user_id(email):
88 try:
89 connection = SQLC.SQLConAdmin()
90 connection.connect()
91 connection.execute_query(SQLQ.SQLQueries.use_users_database())
92 result = connection.execute_query(SQLQ.SQLQueries.get_user_id_by_email(email))
93 if result:
94 return result[0][0] #return the first result
95 except Exception as e:
96 print(f"An error occurred: {e}")
97 finally:
98 if connection:
99 connection.close()
100 return None
101
102#function for deleting user tokens by user ID
104 try:
105 connection = SQLC.SQLConAdmin()
106 connection.connect()
107 connection.execute_query(SQLQ.SQLQueries.use_users_database())
108 connection.execute_query(SQLQ.SQLQueries.delete_tokens_by_user_id(user_id))
109 connection.cnx.commit()
110 except Exception as e:
111 print(f"An error occurred during token deletion: {e}")
112 finally:
113 if connection:
114 connection.close()
115
116
117
118