From 4e994ae09bc12ee3cc85272626d1443b130d06c1 Mon Sep 17 00:00:00 2001 From: seaweedbrain Date: Fri, 13 Jan 2023 11:15:55 +0100 Subject: [PATCH 01/29] The adh6 check account is now able to pick the correct account, if more than one were retrieved during the research If the username was present in a member's note or in another member own username, this account was retrieved too Now backend is able to pick among the list returned by adh6 to force the username to match with the user login The issue is that the adh6 endpoint used is designed to do research and not to directly get an account with an already correct username Fix #44 --- backend/proxmox_api/proxmox.py | 21 +++++++++++++-------- backend/proxmox_api/util.py | 2 +- backend/test/test_account_state.py | 10 +++++----- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/backend/proxmox_api/proxmox.py b/backend/proxmox_api/proxmox.py index 6651cab..aaa5227 100644 --- a/backend/proxmox_api/proxmox.py +++ b/backend/proxmox_api/proxmox.py @@ -826,8 +826,6 @@ def check_update_cotisation(username, createEntry=False): #print("https://adh6.minet.net/api/member/?limit=25&filter%5Busername%5D="+str(username)+"&only=id,username") userInfoJson = util.adh6_search_user(username, headers) print(userInfoJson) - if (len(userInfoJson) > 1 ): - return {"error": "Impossible to retrieve the user info"}, 404 if userInfoJson is None or userInfoJson == []: # not found if "-" in username: print("ERROR : the user " + username + " is not found in ADH6. Try with", end='') @@ -844,16 +842,23 @@ def check_update_cotisation(username, createEntry=False): print("ERROR : the user " , username , " failed to be retrieved :" , userInfoJson) return {"error" : "the user " + username + " failed to be retrieved"}, 404 else : + userId = None + for id in userInfoJson: + account = util.get_adh6_account(headers, userId) + if account["username"] == username: + userId = id + break + + if (userId is None ): + return {"error": "Impossible to retrieve the user info"}, 404 username = username.replace("_", "-") # hosting replace by default _ and . with -. - userId = userInfoJson[0] - membership_dict = util.check_adh6_membership(headers, userId) - print(membership_dict) + print("Adh6 account", account) today = date.today() - if "ip" not in membership_dict: # Cotisation expired + if "ip" not in account: # Cotisation expired #print(username , "cotisation expired", membership.json()) print(username , "cotisation expired (no ip)") - #return expiredCotisation(username, userEmail) #, datetime.strptime(membership_dict["departureDate"], "%Y-%m-%d").date()) + #return expiredCotisation(username, userEmail) #, datetime.strptime(account["departureDate"], "%Y-%m-%d").date()) status = database.getFreezeState(username) if status is None: @@ -864,7 +869,7 @@ def check_update_cotisation(username, createEntry=False): else : # we check anyway if the departure date is in the future #print(membership.json()["ip"]) #print(membership.json()["departureDate"], end='\n\n') - departureDate = datetime.strptime(membership_dict["departureDate"], "%Y-%m-%d").date() + departureDate = datetime.strptime(account["departureDate"], "%Y-%m-%d").date() if departureDate < today: # Cotisation expired: print(username , "cotisation expired (departure date)") status = database.getFreezeState(username) diff --git a/backend/proxmox_api/util.py b/backend/proxmox_api/util.py index 45d2bb6..40d966e 100644 --- a/backend/proxmox_api/util.py +++ b/backend/proxmox_api/util.py @@ -325,7 +325,7 @@ def check_cas_token(headers): -def check_adh6_membership(headers, userId): +def get_adh6_account(headers, userId): response = requests.get("https://adh6.minet.net/api/member/"+str(userId), headers=headers) # memership info return response.json() diff --git a/backend/test/test_account_state.py b/backend/test/test_account_state.py index a30fbf0..7a0c672 100644 --- a/backend/test/test_account_state.py +++ b/backend/test/test_account_state.py @@ -68,7 +68,7 @@ def fake_adh6_search_user(username, headers): db = SQLAlchemy() db.init_app(app.app) with app.app.app_context(): - monkeypatch.setattr(util, 'check_adh6_membership', fake_adh6_check) + monkeypatch.setattr(util, 'get_adh6_account', fake_adh6_check) monkeypatch.setattr(util, 'adh6_search_user', fake_adh6_search_user) r = proxmox.get_freeze_state("expired-user-1") dict,status_code = r @@ -90,7 +90,7 @@ def fake_adh6_search_user(username, headers): db = SQLAlchemy() db.init_app(app.app) with app.app.app_context(): - monkeypatch.setattr(util, 'check_adh6_membership', fake_adh6_check) + monkeypatch.setattr(util, 'get_adh6_account', fake_adh6_check) monkeypatch.setattr(util, 'adh6_search_user', fake_adh6_search_user) r = proxmox.get_freeze_state("expired-user-2") dict,status_code = r @@ -112,7 +112,7 @@ def fake_adh6_search_user(username, headers): db = SQLAlchemy() db.init_app(app.app) with app.app.app_context(): - monkeypatch.setattr(util, 'check_adh6_membership', fake_adh6_check) + monkeypatch.setattr(util, 'get_adh6_account', fake_adh6_check) monkeypatch.setattr(util, 'adh6_search_user', fake_adh6_search_user) r = proxmox.get_freeze_state("expired-user-3") dict,status_code = r @@ -134,7 +134,7 @@ def fake_adh6_search_user(username, headers): db = SQLAlchemy() db.init_app(app.app) with app.app.app_context(): - monkeypatch.setattr(util, 'check_adh6_membership', fake_adh6_check) + monkeypatch.setattr(util, 'get_adh6_account', fake_adh6_check) monkeypatch.setattr(util, 'adh6_search_user', fake_adh6_search_user) r = proxmox.get_freeze_state("expired-user-4") dict,status_code = r @@ -159,7 +159,7 @@ def fake_adh6_search_user(username, headers): db = SQLAlchemy() db.init_app(app.app) with app.app.app_context(): - monkeypatch.setattr(util, 'check_adh6_membership', fake_adh6_check) + monkeypatch.setattr(util, 'get_adh6_account', fake_adh6_check) monkeypatch.setattr(util, 'adh6_search_user', fake_adh6_search_user) r = proxmox.get_freeze_state("new-user-to-be-checked") dict,status_code = r From 5bce19cd6ab79f8d56745a124f314a094af41b59 Mon Sep 17 00:00:00 2001 From: seaweedbrain Date: Fri, 13 Jan 2023 17:40:53 +0100 Subject: [PATCH 02/29] Correct test for new check made on adh6 user's account --- backend/test/test_account_state.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/backend/test/test_account_state.py b/backend/test/test_account_state.py index 7a0c672..075d01e 100644 --- a/backend/test/test_account_state.py +++ b/backend/test/test_account_state.py @@ -60,7 +60,7 @@ def test_expired_account_freezed_1(monkeypatch, init_user_database): freeze state of 1 """ def fake_adh6_check(username, headers): - return {} + return {'username' : username} def fake_adh6_search_user(username, headers): return [0] @@ -82,7 +82,7 @@ def test_expired_account_freezed_2(monkeypatch, init_user_database): """ def fake_adh6_check(username, headers): - return {} + return {"username":username} def fake_adh6_search_user(username, headers): return [0] @@ -104,7 +104,7 @@ def test_expired_account_freezed_3(monkeypatch, init_user_database): """ def fake_adh6_check(username, headers): - return {} + return {'username' : username} def fake_adh6_search_user(username, headers): return [0] @@ -126,7 +126,7 @@ def test_expired_account_freezed_4(monkeypatch,init_user_database): """ def fake_adh6_check(username, headers): - return {} + return {'username' : username} def fake_adh6_search_user(username, headers): return [0] @@ -149,7 +149,7 @@ def test_new_account_to_be_checked(monkeypatch, init_user_database): """ def fake_adh6_check(username, headers): - return {'ip': "127.0.0.1", "departureDate" : "2199-01-01"} + return {'ip': "127.0.0.1", "departureDate" : "2199-01-01", 'username' : username} def fake_adh6_search_user(username, headers): return [0] From 5dcf92758693018aa3a18c6902b0bd2262df5979 Mon Sep 17 00:00:00 2001 From: seaweedbrain Date: Fri, 13 Jan 2023 22:26:03 +0100 Subject: [PATCH 03/29] Correct mocked function --- backend/test/test_account_state.py | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/backend/test/test_account_state.py b/backend/test/test_account_state.py index 075d01e..ed3e5c6 100644 --- a/backend/test/test_account_state.py +++ b/backend/test/test_account_state.py @@ -59,7 +59,8 @@ def test_expired_account_freezed_1(monkeypatch, init_user_database): freeze state of 1 """ - def fake_adh6_check(username, headers): + username = "expired-user-1" + def fake_adh6_check(headers, userId): return {'username' : username} def fake_adh6_search_user(username, headers): return [0] @@ -70,7 +71,7 @@ def fake_adh6_search_user(username, headers): with app.app.app_context(): monkeypatch.setattr(util, 'get_adh6_account', fake_adh6_check) monkeypatch.setattr(util, 'adh6_search_user', fake_adh6_search_user) - r = proxmox.get_freeze_state("expired-user-1") + r = proxmox.get_freeze_state(username) dict,status_code = r assert status_code == 200 assert dict['freezeState'] == '1' @@ -81,7 +82,8 @@ def test_expired_account_freezed_2(monkeypatch, init_user_database): freeze state of 2 """ - def fake_adh6_check(username, headers): + username = "expired-user-2" + def fake_adh6_check(headers, userId): return {"username":username} def fake_adh6_search_user(username, headers): return [0] @@ -92,7 +94,7 @@ def fake_adh6_search_user(username, headers): with app.app.app_context(): monkeypatch.setattr(util, 'get_adh6_account', fake_adh6_check) monkeypatch.setattr(util, 'adh6_search_user', fake_adh6_search_user) - r = proxmox.get_freeze_state("expired-user-2") + r = proxmox.get_freeze_state(username) dict,status_code = r assert status_code == 200 assert dict['freezeState'] == '2' @@ -103,7 +105,8 @@ def test_expired_account_freezed_3(monkeypatch, init_user_database): freeze state of 3 """ - def fake_adh6_check(username, headers): + username = "expired-user-3" + def fake_adh6_check(headers, userId): return {'username' : username} def fake_adh6_search_user(username, headers): return [0] @@ -114,7 +117,7 @@ def fake_adh6_search_user(username, headers): with app.app.app_context(): monkeypatch.setattr(util, 'get_adh6_account', fake_adh6_check) monkeypatch.setattr(util, 'adh6_search_user', fake_adh6_search_user) - r = proxmox.get_freeze_state("expired-user-3") + r = proxmox.get_freeze_state(username) dict,status_code = r assert status_code == 200 assert dict['freezeState'] == '3' @@ -125,7 +128,8 @@ def test_expired_account_freezed_4(monkeypatch,init_user_database): freeze state of 4 """ - def fake_adh6_check(username, headers): + username = "expired-user-4" + def fake_adh6_check(headers, userId): return {'username' : username} def fake_adh6_search_user(username, headers): return [0] @@ -136,7 +140,7 @@ def fake_adh6_search_user(username, headers): with app.app.app_context(): monkeypatch.setattr(util, 'get_adh6_account', fake_adh6_check) monkeypatch.setattr(util, 'adh6_search_user', fake_adh6_search_user) - r = proxmox.get_freeze_state("expired-user-4") + r = proxmox.get_freeze_state(username) dict,status_code = r assert status_code == 200 assert dict['freezeState'] == '4' @@ -148,7 +152,8 @@ def test_new_account_to_be_checked(monkeypatch, init_user_database): Account that must be checked by adh6 """ - def fake_adh6_check(username, headers): + username = "new-user-to-be-checked" + def fake_adh6_check(headers, userId): return {'ip': "127.0.0.1", "departureDate" : "2199-01-01", 'username' : username} def fake_adh6_search_user(username, headers): return [0] @@ -161,7 +166,7 @@ def fake_adh6_search_user(username, headers): with app.app.app_context(): monkeypatch.setattr(util, 'get_adh6_account', fake_adh6_check) monkeypatch.setattr(util, 'adh6_search_user', fake_adh6_search_user) - r = proxmox.get_freeze_state("new-user-to-be-checked") + r = proxmox.get_freeze_state(username) dict,status_code = r assert status_code == 200 assert dict['freezeState'] == '0' \ No newline at end of file From 95a5a1fe457809a2e45d2bd4e1395e6173b4ee70 Mon Sep 17 00:00:00 2001 From: seaweedbrain Date: Mon, 16 Jan 2023 12:22:47 +0100 Subject: [PATCH 04/29] Classic logo --- frontend/src/app/app.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/app.component.html b/frontend/src/app/app.component.html index 135aa6c..0865467 100644 --- a/frontend/src/app/app.component.html +++ b/frontend/src/app/app.component.html @@ -3,7 +3,7 @@
- +
+
+
+
+
+
+
+
+ Compte actuel : {{user.vms[0].user}}
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+
+