-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathauthentification.py
More file actions
61 lines (35 loc) · 1.13 KB
/
authentification.py
File metadata and controls
61 lines (35 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import base64
import datetime
import os
import urllib.parse
import http.cookies
import base_de_donnees
AGE_MAX_SESSION_JOURS = 60
sessions_par_id = dict()
def traiter_requete_connection(donnees: bytes):
formulaire = urllib.parse.parse_qs(donnees.decode())
utilisateur = formulaire["utilisateur"][0]
mot_de_passe = formulaire["mot_de_passe"][0]
attendu = base_de_donnees.mot_de_passe_utilisateur(utilisateur)
if mot_de_passe != attendu:
return None
id_session = base64.b64encode(os.urandom(16)).decode()
sessions_par_id[id_session] = {
"utilisateur": utilisateur,
"timestamp": datetime.datetime.now(),
}
return f"session={id_session}"
def authentifier_headers(cookies):
c = http.cookies.SimpleCookie()
c.load(cookies)
cookie = c.get("session", None)
if not cookie:
return None
id_session = cookie.value
if not id_session:
return None
session = sessions_par_id[id_session]
age = datetime.datetime.now() - session["timestamp"]
if age.days > AGE_MAX_SESSION_JOURS:
return None
return session["utilisateur"]