Spaces:
Running
Running
Bahodir Nematjonov
commited on
Commit
·
63a5fea
1
Parent(s):
73ef21f
feat: main.py refresh token add
Browse files
main.py
CHANGED
@@ -109,6 +109,33 @@ async def login(request: Request, form_data: OAuth2PasswordRequestForm = Depends
|
|
109 |
logging.error(f"Login error: {str(e)}")
|
110 |
raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Internal server error")
|
111 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
112 |
# Apply Rate Limiting on Generate API (Limit: 3 requests per 10 seconds)
|
113 |
@app.post("/generate")
|
114 |
@limiter.limit("3/10seconds")
|
|
|
109 |
logging.error(f"Login error: {str(e)}")
|
110 |
raise HTTPException(status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail="Internal server error")
|
111 |
|
112 |
+
@app.post("/refresh", response_model=TokenResponse)
|
113 |
+
async def refresh(refresh_request: RefreshTokenRequest):
|
114 |
+
try:
|
115 |
+
# Verify the refresh token
|
116 |
+
username = verify_token(refresh_request.refresh_token, REFRESH_SECRET_KEY)
|
117 |
+
|
118 |
+
# Create new access token
|
119 |
+
access_token_expires = timedelta(minutes=ACCESS_TOKEN_EXPIRE_MINUTES)
|
120 |
+
access_token = create_token(
|
121 |
+
data={"sub": username},
|
122 |
+
expires_delta=access_token_expires,
|
123 |
+
secret_key=SECRET_KEY
|
124 |
+
)
|
125 |
+
|
126 |
+
return {
|
127 |
+
"access_token": access_token,
|
128 |
+
"refresh_token": refresh_request.refresh_token, # Return the same refresh token
|
129 |
+
"token_type": "bearer"
|
130 |
+
}
|
131 |
+
|
132 |
+
except JWTError:
|
133 |
+
raise HTTPException(
|
134 |
+
status_code=status.HTTP_401_UNAUTHORIZED,
|
135 |
+
detail="Could not validate credentials",
|
136 |
+
headers={"WWW-Authenticate": "Bearer"},
|
137 |
+
)
|
138 |
+
|
139 |
# Apply Rate Limiting on Generate API (Limit: 3 requests per 10 seconds)
|
140 |
@app.post("/generate")
|
141 |
@limiter.limit("3/10seconds")
|