resume-api / tokenManagement.py
Nattyboi's picture
fixed verification for refresh token
c136b4b
raw
history blame
5.96 kB
import datetime
from bson import ObjectId
from streaksManagement import streaks_manager
def isexpired(previous_date):
# Get the current date and time
current_date =datetime.datetime.now()
# Convert the previous date (which is a string) to a datetime object
# Compare the two dates
if current_date > previous_date:
return True
else:
return False
def create_accessToken(db_uri: str, user_id: str, refresh_token: str) -> str:
from pymongo import MongoClient
current_time = datetime.datetime.now()
expire_at = current_time + datetime.timedelta(minutes=130)
"""
Inserts a new document into the specified MongoDB collection.
Parameters:
db_uri (str): MongoDB connection URI.
db_name (str): Name of the database.
collection_name (str): Name of the collection.
document (dict): The document to insert.
Returns:
str: The ID of the inserted document.
"""
# Connect to MongoDB
client = MongoClient(db_uri)
db = client["crayonics"]
collection = db["AccessToken"]
collection.find_one_and_delete({"refresh_token":refresh_token})
# Insert the document
result = collection.insert_one({"user_id":user_id,"refresh_token":refresh_token,"current_time":current_time,"expire_at":expire_at})
client.close()
return str(result.inserted_id)
# Close the connection
def create_refreshToken(db_uri: str, user_id: str) -> str:
from pymongo import MongoClient
current_time = datetime.datetime.now()
expire_at = current_time + datetime.timedelta(days=30)
"""
Inserts a new document into the specified MongoDB collection.
Parameters:
db_uri (str): MongoDB connection URI.
user_id (str): id of user .
Returns:
str: The ID of the inserted document.
"""
# Connect to MongoDB
client = MongoClient(db_uri)
db = client["crayonics"]
collection = db["RefreshToken"]
# Insert the document
result = collection.insert_one({"user_id":user_id,"current_time":current_time,"expire_at":expire_at,"previous_access_token":"None"})
streaks_doc={}
streaks_doc['user_id'] = str(user_id)
streaks_manager(db_uri=db_uri,document=streaks_doc)
client.close()
return str(result.inserted_id)
# Close the connection
def update_refreshTokenWithPreviouslyUsedAccessToken(db_uri: str, refresh_token: str,access_token:str) -> bool:
from pymongo import MongoClient
"""
"""
# Connect to MongoDB
client = MongoClient(db_uri)
db = client["crayonics"]
collection = db["RefreshToken"]
# Insert the document
try:
collection.update_one(
{"_id":ObjectId(oid=refresh_token) }, # Filter (find the document by user_id)
{"$set": {"previous_access_token": access_token}} # Add or update the field
)
client.close()
return True
except:
return False
from pymongo import MongoClient
def verify_access_token(db_uri: str, user_id: str, access_token: str) -> bool:
current_time = datetime.datetime.now()
expire_at = current_time + datetime.timedelta(minutes=15)
"""
"""
# Connect to MongoDB
client = MongoClient(db_uri)
db = client["crayonics"]
collection = db["AccessToken"]
docs = collection.find({"user_id":user_id})
for doc in docs:
if doc==None:
return False
else:
if str(doc['_id']) == access_token:
if isexpired(doc['expire_at'])!=False:
streaks_doc={}
streaks_doc['user_id'] = str(user_id)
streaks_manager(db_uri=db_uri,document=streaks_doc)
pass
else:
streaks_doc={}
streaks_doc['user_id'] = str(user_id)
streaks_manager(db_uri=db_uri,document=streaks_doc)
return True
else:
streaks_doc={}
streaks_doc['user_id'] = str(user_id)
streaks_manager(db_uri=db_uri,document=streaks_doc)
pass
return False
def verify_refresh_access_token(db_uri: str, user_id: str, access_token: str,refresh_token:str) -> bool:
current_time = datetime.datetime.now()
"""
"""
# Connect to MongoDB
client = MongoClient(db_uri)
db = client["crayonics"]
collection = db["RefreshToken"]
docs = collection.find({"_id":ObjectId(refresh_token),"user_id":user_id,"previous_access_token":access_token})
for doc in docs:
if doc==None:
return False
else:
if str(doc['previous_access_token']) == access_token:
streaks_doc={}
streaks_doc['user_id'] = str(user_id)
streaks_manager(db_uri=db_uri,document=streaks_doc)
return True
else:
streaks_doc={}
streaks_doc['user_id'] = str(user_id)
streaks_manager(db_uri=db_uri,document=streaks_doc)
pass
return False
def logout_func(db_uri: str, refresh_token: str) -> str:
from pymongo import MongoClient
current_time = datetime.datetime.now()
expire_at = current_time + datetime.timedelta(days=30)
"""
Inserts a new document into the specified MongoDB collection.
Parameters:
db_uri (str): MongoDB connection URI.
user_id (str): id of user .
Returns:
str: The ID of the inserted document.
"""
# Connect to MongoDB
client = MongoClient(db_uri)
db = client["crayonics"]
collection = db["RefreshToken"]
# Insert the document
result = collection.find_one_and_delete(filter={"_id":ObjectId(refresh_token)})
print(result)
if result==None:
return result
return True
# Close the connection