diff --git a/backend/db/crud.py b/backend/db/crud.py
index 97bb6554bbbfb624594714c0031660ef43d36f5f..9b7e645b79545e8ee4314996adc2266ae12290f2 100644
--- a/backend/db/crud.py
+++ b/backend/db/crud.py
@@ -382,6 +382,7 @@ def update_user(user: schemas.User, user_info: dict, db: Session):
     if existing_user:
         existing_user.cookie = user.cookie
         existing_user.expiration_date = expiration_date
+        existing_user.admin = "admin eatfast" in user_info["roles"]
         db.delete(user)
         db.add(existing_user)
         db.commit()
@@ -390,6 +391,7 @@ def update_user(user: schemas.User, user_info: dict, db: Session):
     else:
         user.username = full_name
         user.expiration_date = expiration_date
+        user.admin = "admin eatfast" in user_info["roles"]
         db.add(user)
         db.commit()
         db.refresh(user)
diff --git a/backend/db/models.py b/backend/db/models.py
index 753b570c1249ebe2aa7655c13c0e38ebfb500655..2f719cd94ba667400bb233ca1d3d73562ba99d04 100644
--- a/backend/db/models.py
+++ b/backend/db/models.py
@@ -1,7 +1,7 @@
 """
 Models of the database for magasin app
 """
-from sqlalchemy import Column, ForeignKey, Integer, DateTime, Float, Interval, String, Text, Time
+from sqlalchemy import Boolean, Column, ForeignKey, Integer, DateTime, Float, Interval, String, Text, Time
 from sqlalchemy.orm import relationship
 
 from db.database import Base
@@ -82,5 +82,6 @@ class Users(Base):
     username = Column(String(50))
     cookie = Column(String(50))
     expiration_date = Column(DateTime)
+    admin = Column(Boolean)
     comments = relationship("Comments")
     comments = relationship("CollaborativeRecords")
diff --git a/backend/db/schemas.py b/backend/db/schemas.py
index 0777b3a630414a37958b339dcdd32d94f9738226..f47c7c0a23675948d3557d56c56c8bb473b2232a 100644
--- a/backend/db/schemas.py
+++ b/backend/db/schemas.py
@@ -138,3 +138,4 @@ class User(BaseModel):
     username: str
     cookie: str
     expiration_date: datetime
+    admin: Optional[bool] = Field(default=False, title="Set to true to allow access to the admin interface")
diff --git a/backend/main.py b/backend/main.py
index d6c986ac7a837ba1f558c9d386bfb257ded706f8..8a5b83204da713064c31881b4c61c5e3b3590164 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -1,14 +1,19 @@
-from fastapi import FastAPI
+from fastapi import Cookie, Depends, FastAPI
 from fastapi.middleware.cors import CORSMiddleware
+from fastapi.responses import JSONResponse
+from fastapi.openapi.docs import get_swagger_ui_html
+from fastapi.openapi.utils import get_openapi
+from sqlalchemy.orm import Session
 from dotenv import load_dotenv
 from threading import Thread
 import os
 
-from db import database, models
+from db import database, models, crud
+from db.database import get_db
 from routers import *
 from video_capture import handle_cameras
 
-app = FastAPI(docs_url="/api/docs", openapi_url="/api/openapi.json")
+app = FastAPI(docs_url=None, redoc_url=None, openapi_url=None)
 
 # load environment variables
 load_dotenv()
@@ -34,6 +39,21 @@ async def on_startup():
     t.start()
 
 
+# Docs OpenAPI
+@app.get("/api/openapi.json")
+async def get_open_api_endpoint(connect_id: str = Cookie(...), db: Session = Depends(get_db)):
+    user = crud.get_user(connect_id, db)
+    if user.admin:
+        return JSONResponse(get_openapi(title="FastAPI", version=1, routes=app.routes))
+
+
+@app.get("/api/docs")
+async def get_documentation(connect_id: str = Cookie(...), db: Session = Depends(get_db)):
+    user = crud.get_user(connect_id, db)
+    if user.admin:
+        return get_swagger_ui_html(openapi_url="/openapi.json", title="docs")
+
+
 # Integration of routers
 app.include_router(infos.router)
 app.include_router(records.router)