21 tokenHandler = TH.UserTokenHandler()
24 class login(Resource):
26 new_login_model = UM.login_model(ns)
28 @ns.doc(
'login', description=
'Logs user in when given Username and Password...',
30 400:
'Invalid Argument or faulty data',
31 500:
'Internal server error'})
34 @ns.expect(new_login_model, validate=True)
36 data = request.get_json()
37 username = data[
"username"].lower()
38 password = data[
"password"]
41 login_validation = login_auth.loginValidation(username, password).validate_credentials()
42 user_exists, user_id, user_accountType = login_validation
47 connection = SQLC.SQLConAdmin()
50 connection.execute_query(SQLQ.SQLQueries.use_users_database())
51 connection.execute_query(SQLQ.SQLQueries.delete_tokens_by_user_id(user_id))
52 connection.cnx.commit()
55 connection.execute_query(SQLQ.SQLQueries.use_users_database())
56 query = connection.execute_query(SQLQ.SQLQueries.get_database_name(username.lower()))
58 database_name = query[0][0]
61 connection.execute_query(SQLQ.SQLQueries.use_users_database())
62 query = connection.execute_query(SQLQ.SQLQueries.get_pw(data[
"username"].lower()))
65 access_token = create_access_token(identity={
'user_id': user_id,
'email': username,
'accountType': user_accountType,
'password': password,
"db_name": database_name})
68 tokenHandler.store_token(user_id, access_token)
77 "accountType": user_accountType
81 return {
"message":
"Log-in successful",
"user": current_user,
"access_token": access_token}, 200
83 return {
"Error":
"Invalid username or password"}, 400
87 tokenHandler = TH.UserTokenHandler()
93 ip_address = request.environ.get(
'HTTP_X_REAL_IP', request.remote_addr)
94 user_agent = request.headers.get(
'User-Agent')
95 parsed_agent = parser.detect(user_agent)
96 browser_name = parsed_agent.get(
'browser', {}).get(
'name',
'Unknown')
97 operating_system = parsed_agent.get(
'os', {}).get(
'name',
'Unknown')
101 connection = SQLC.SQLConAdmin()
107 connection.execute_query(SQLQ.SQLQueries.use_users_database())
110 connection.execute_query(SQLQ.SQLQueries.insert_user_activity(user_id, ip_address, browser_name, operating_system))
111 connection.cnx.commit()
114 print(
"Error while saving activity to database.", e)
122 connection = SQLC.SQLConAdmin()
125 connection.execute_query(SQLQ.SQLQueries.use_users_database())
128 result = connection.execute_query(SQLQ.SQLQueries.count_user_activities(user_id))
129 activity_count = result[0][0]
if result
else 0
132 if activity_count > 4:
133 result = connection.execute_query(SQLQ.SQLQueries.get_oldest_activity_id(user_id))
134 oldest_activity_id = result[0][0]
if result
else None
136 if oldest_activity_id:
137 connection.execute_query(SQLQ.SQLQueries.delete_activity_by_id(oldest_activity_id))
140 connection.cnx.commit()
143 print(
"Error while checking and deleting old activity.", e)