Yadav122 commited on
Commit
abe9dd4
·
1 Parent(s): 146897a

fix docker

Browse files
Dockerfile CHANGED
@@ -38,7 +38,13 @@ ENV PYTHONUNBUFFERED 1
38
  RUN groupadd -g 20001 MailPilot \
39
  && useradd -l -M -u 10001 -g MailPilot MailPilot
40
 
41
- WORKDIR ${PREFIX_APP}
 
 
 
 
 
 
42
 
43
  COPY ./docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
44
  RUN chmod +x /usr/local/bin/docker-entrypoint.sh
 
38
  RUN groupadd -g 20001 MailPilot \
39
  && useradd -l -M -u 10001 -g MailPilot MailPilot
40
 
41
+ WORKDIR /opt/MailPilot/MailPilot_ai_agents
42
+
43
+ # Copy the entire app directory
44
+ COPY ./app ./app
45
+
46
+ # Ensure proper permissions
47
+ RUN chmod -R 755 /opt/MailPilot/MailPilot_ai_agents
48
 
49
  COPY ./docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
50
  RUN chmod +x /usr/local/bin/docker-entrypoint.sh
app/api/endpoints/v1/firebaseauth/__pycache__/app.cpython-312.pyc CHANGED
Binary files a/app/api/endpoints/v1/firebaseauth/__pycache__/app.cpython-312.pyc and b/app/api/endpoints/v1/firebaseauth/__pycache__/app.cpython-312.pyc differ
 
app/api/endpoints/v1/firebaseauth/app.py CHANGED
@@ -1,17 +1,21 @@
 
1
  from app import router
2
  from fastapi import FastAPI, Depends, HTTPException, status, Request, APIRouter
3
- from fastapi.security import OAuth2PasswordBearer
4
  import firebase_admin
5
  from firebase_admin import credentials, auth
6
  from sqlalchemy.ext.asyncio import AsyncSession
7
  from sqlalchemy import select
8
- from app.models.api.user import UserCreate, UserSignIn, PasswordReset, TokenVerify, UserResponse
9
  from app.models.database.DBUser import DBUser
10
- from app.core.database.session_manager import get_db
11
-
12
  import os
 
 
 
 
13
  # Initialize OAuth2 scheme
14
- oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/FirebaseAuth/signin")
15
 
16
  async def verify_firebase_token(token: str = Depends(oauth2_scheme)) -> dict:
17
  """Verify Firebase token and return user info"""
@@ -351,8 +355,38 @@ async def verify_token(token_data: TokenVerify, db: AsyncSession = Depends(get_d
351
  detail=f"Token verification failed: {str(e)}"
352
  )
353
  @router.post("/token")
354
- async def get_token(form_data: OAuth2PasswordRequestForm = Depends(), db: AsyncSession = Depends(get_db)):
355
- return await signin_user(
356
- UserSignIn(email=form_data.username, password=form_data.password),
357
- db
358
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import datetime
2
  from app import router
3
  from fastapi import FastAPI, Depends, HTTPException, status, Request, APIRouter
4
+ from fastapi.security import OAuth2PasswordBearer, OAuth2PasswordRequestForm
5
  import firebase_admin
6
  from firebase_admin import credentials, auth
7
  from sqlalchemy.ext.asyncio import AsyncSession
8
  from sqlalchemy import select
9
+ from app.models.api.user import UserCreate, UserSignIn, PasswordReset, TokenVerify, UserResponse,EmailVerifyRequest
10
  from app.models.database.DBUser import DBUser
11
+ from app.core.database.session_manager import get_db_session as get_db
 
12
  import os
13
+
14
+
15
+ router=APIRouter(prefix="/FirebaseAuth", tags=["Firebase Auth"])
16
+
17
  # Initialize OAuth2 scheme
18
+ oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/FirebaseAuth/token")
19
 
20
  async def verify_firebase_token(token: str = Depends(oauth2_scheme)) -> dict:
21
  """Verify Firebase token and return user info"""
 
355
  detail=f"Token verification failed: {str(e)}"
356
  )
357
  @router.post("/token")
358
+ async def get_token(form_data: OAuth2PasswordRequestForm = Depends()):
359
+ """Get access token"""
360
+ try:
361
+ # Get Firebase user
362
+ firebase_user = auth.get_user_by_email(form_data.username)
363
+
364
+ # Create custom token
365
+ custom_token = auth.create_custom_token(firebase_user.uid)
366
+
367
+ return {
368
+ "access_token": custom_token.decode() if isinstance(custom_token, bytes) else custom_token,
369
+ "token_type": "bearer"
370
+ }
371
+ except Exception as e:
372
+ raise HTTPException(
373
+ status_code=status.HTTP_401_UNAUTHORIZED,
374
+ detail="Invalid credentials"
375
+ )
376
+
377
+ # Function to verify token
378
+ async def verify_token(token: str = Depends(oauth2_scheme)):
379
+ try:
380
+ # Verify the token
381
+ decoded_token = auth.verify_id_token(token)
382
+ return decoded_token
383
+ except:
384
+ raise HTTPException(
385
+ status_code=status.HTTP_401_UNAUTHORIZED,
386
+ detail="Invalid token"
387
+ )
388
+
389
+ # Example protected route
390
+ @router.get("/protected")
391
+ async def protected_route(token: str = Depends(verify_token)):
392
+ return {"message": "You have access!", "token_info": token}
app/models/api/__pycache__/user.cpython-312.pyc CHANGED
Binary files a/app/models/api/__pycache__/user.cpython-312.pyc and b/app/models/api/__pycache__/user.cpython-312.pyc differ
 
app/models/api/user.py CHANGED
@@ -27,3 +27,6 @@ class UserResponse(BaseModel):
27
  created_at: datetime.datetime
28
  last_login: Optional[datetime.datetime] = None
29
  provider: str
 
 
 
 
27
  created_at: datetime.datetime
28
  last_login: Optional[datetime.datetime] = None
29
  provider: str
30
+
31
+ class EmailVerifyRequest(BaseModel):
32
+ email: str
docker-compose.yml CHANGED
@@ -26,5 +26,7 @@ services:
26
  - .:/opt/MailPilot/MailPilot_ai_agents
27
  depends_on:
28
  - MailPilot_db
 
 
29
  entrypoint: ["/usr/local/bin/docker-entrypoint.sh"]
30
  command: ["migration"]
 
26
  - .:/opt/MailPilot/MailPilot_ai_agents
27
  depends_on:
28
  - MailPilot_db
29
+ ports:
30
+ - "7860:7860"
31
  entrypoint: ["/usr/local/bin/docker-entrypoint.sh"]
32
  command: ["migration"]
logs/app.log CHANGED
@@ -6,3 +6,11 @@
6
  2025-04-18T12:28:14.439127Z [info ] Waiting for application shutdown. [uvicorn.error] filename=on.py func_name=shutdown lineno=67
7
  2025-04-18T12:28:14.543378Z [info ] Application shutdown complete. [uvicorn.error] filename=on.py func_name=shutdown lineno=78
8
  2025-04-18T12:28:14.586185Z [info ] Finished server process [8]  [uvicorn.error] filename=server.py func_name=serve lineno=86
 
 
 
 
 
 
 
 
 
6
  2025-04-18T12:28:14.439127Z [info ] Waiting for application shutdown. [uvicorn.error] filename=on.py func_name=shutdown lineno=67
7
  2025-04-18T12:28:14.543378Z [info ] Application shutdown complete. [uvicorn.error] filename=on.py func_name=shutdown lineno=78
8
  2025-04-18T12:28:14.586185Z [info ] Finished server process [8]  [uvicorn.error] filename=server.py func_name=serve lineno=86
9
+ 2025-04-18T15:32:25.387787Z [info ] Application started  [app.main] filename=main.py func_name=<module> lineno=37 project=MailPilot_ai_agents version=0.1.0-alpha
10
+ 2025-04-18T15:32:25.398136Z [info ] Started server process [8]  [uvicorn.error] filename=server.py func_name=serve lineno=76
11
+ 2025-04-18T15:32:25.400291Z [info ] Waiting for application startup. [uvicorn.error] filename=on.py func_name=startup lineno=48
12
+ 2025-04-18T15:32:25.406461Z [info ] Application startup complete.  [uvicorn.error] filename=on.py func_name=startup lineno=62
13
+ 2025-04-18T15:39:37.879642Z [info ] Shutting down  [uvicorn.error] filename=server.py func_name=shutdown lineno=265
14
+ 2025-04-18T15:39:37.996700Z [info ] Waiting for application shutdown. [uvicorn.error] filename=on.py func_name=shutdown lineno=67
15
+ 2025-04-18T15:39:38.013626Z [info ] Application shutdown complete. [uvicorn.error] filename=on.py func_name=shutdown lineno=78
16
+ 2025-04-18T15:39:38.020684Z [info ] Finished server process [8]  [uvicorn.error] filename=server.py func_name=serve lineno=86