Bahodir Nematjonov commited on
Commit
63a5fea
·
1 Parent(s): 73ef21f

feat: main.py refresh token add

Browse files
Files changed (1) hide show
  1. main.py +27 -0
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")