sachin commited on
Commit
4bf5083
·
1 Parent(s): 863d782

test-new endpo

Browse files
Files changed (4) hide show
  1. Dockerfile +0 -6
  2. Dockerfile.app +0 -24
  3. Dockerfile.base +7 -0
  4. src/server/utils/auth.py +27 -7
Dockerfile CHANGED
@@ -6,12 +6,6 @@ WORKDIR /app
6
  # Copy application code
7
  COPY . .
8
 
9
- # Create appuser and set permissions for /app and /data
10
- RUN useradd -ms /bin/bash appuser \
11
- && mkdir -p /data \
12
- && chown -R appuser:appuser /app /data
13
-
14
- USER appuser
15
 
16
  # Expose port from settings
17
  EXPOSE 7860
 
6
  # Copy application code
7
  COPY . .
8
 
 
 
 
 
 
 
9
 
10
  # Expose port from settings
11
  EXPOSE 7860
Dockerfile.app DELETED
@@ -1,24 +0,0 @@
1
- # Use official Python runtime as base image
2
- FROM slabstech/dhwani-api-server-base
3
-
4
- WORKDIR /app
5
-
6
- # Copy application code
7
- COPY . .
8
-
9
- # Create appuser and set permissions for /app and /data
10
- RUN useradd -ms /bin/bash appuser \
11
- && mkdir -p /data \
12
- && chown -R appuser:appuser /app /data
13
-
14
- USER appuser
15
-
16
- # Expose port from settings
17
- EXPOSE 7860
18
-
19
- # Healthcheck
20
- HEALTHCHECK --interval=30s --timeout=3s \
21
- CMD curl -f http://localhost:7860/v1/health || exit 1
22
-
23
- # Command to run the application
24
- CMD ["python", "/app/src/server/main.py", "--host", "0.0.0.0", "--port", "7860"]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Dockerfile.base CHANGED
@@ -16,3 +16,10 @@ RUN apt-get update && apt-get install -y \
16
  # Install Python dependencies
17
  COPY requirements.txt .
18
  RUN pip install --no-cache-dir -r requirements.txt
 
 
 
 
 
 
 
 
16
  # Install Python dependencies
17
  COPY requirements.txt .
18
  RUN pip install --no-cache-dir -r requirements.txt
19
+
20
+ # Create appuser and set permissions for /app and /data
21
+ RUN useradd -ms /bin/bash appuser \
22
+ && mkdir -p /data \
23
+ && chown -R appuser:appuser /app /data
24
+
25
+ USER appuser
src/server/utils/auth.py CHANGED
@@ -49,7 +49,7 @@ class Settings(BaseSettings):
49
  external_audio_proc_url: str = Field(..., env="EXTERNAL_AUDIO_PROC_URL")
50
  default_admin_username: str = Field("admin", env="DEFAULT_ADMIN_USERNAME")
51
  default_admin_password: str = Field("admin54321", env="DEFAULT_ADMIN_PASSWORD")
52
- database_path: str = DATABASE_PATH # Add for reference if needed elsewhere
53
 
54
  class Config:
55
  env_file = ".env"
@@ -61,10 +61,12 @@ settings = Settings()
61
  def seed_initial_data():
62
  db = SessionLocal()
63
  try:
64
- # Seed test user (non-admin)
65
- if not db.query(User).filter_by(username="testuser").first():
66
- hashed_password = pwd_context.hash("password123")
67
- db.add(User(username="testuser", password=hashed_password, is_admin=False))
 
 
68
  db.commit()
69
  # Seed admin user using environment variables
70
  admin_username = settings.default_admin_username
@@ -73,7 +75,7 @@ def seed_initial_data():
73
  hashed_password = pwd_context.hash(admin_password)
74
  db.add(User(username=admin_username, password=hashed_password, is_admin=True))
75
  db.commit()
76
- logger.info(f"Seeded initial data: admin user '{admin_username}'")
77
  except Exception as e:
78
  logger.error(f"Error seeding initial data: {str(e)}")
79
  db.rollback()
@@ -170,7 +172,7 @@ async def login(login_request: LoginRequest) -> TokenResponse:
170
  db.close()
171
  if not user or not pwd_context.verify(login_request.password, user.password):
172
  logger.warning(f"Login failed for user: {login_request.username}")
173
- raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid username or password")
174
  tokens = await create_access_token(user_id=user.username)
175
  return TokenResponse(access_token=tokens["access_token"], refresh_token=tokens["refresh_token"], token_type="bearer")
176
 
@@ -192,6 +194,24 @@ async def register(register_request: RegisterRequest, current_user: str = Depend
192
  logger.info(f"Registered and generated token for user: {register_request.username} by admin {current_user}")
193
  return TokenResponse(access_token=tokens["access_token"], refresh_token=tokens["refresh_token"], token_type="bearer")
194
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
195
  async def refresh_token(credentials: HTTPAuthorizationCredentials = Depends(bearer_scheme)) -> TokenResponse:
196
  token = credentials.credentials
197
  try:
 
49
  external_audio_proc_url: str = Field(..., env="EXTERNAL_AUDIO_PROC_URL")
50
  default_admin_username: str = Field("admin", env="DEFAULT_ADMIN_USERNAME")
51
  default_admin_password: str = Field("admin54321", env="DEFAULT_ADMIN_PASSWORD")
52
+ database_path: str = DATABASE_PATH
53
 
54
  class Config:
55
  env_file = ".env"
 
61
  def seed_initial_data():
62
  db = SessionLocal()
63
  try:
64
+ # Seed test user (non-admin) with a device token-like password
65
+ test_username = "testuser@example.com"
66
+ if not db.query(User).filter_by(username=test_username).first():
67
+ test_device_token = "550e8400-e29b-41d4-a716-446655440000" # Sample UUID
68
+ hashed_password = pwd_context.hash(test_device_token)
69
+ db.add(User(username=test_username, password=hashed_password, is_admin=False))
70
  db.commit()
71
  # Seed admin user using environment variables
72
  admin_username = settings.default_admin_username
 
75
  hashed_password = pwd_context.hash(admin_password)
76
  db.add(User(username=admin_username, password=hashed_password, is_admin=True))
77
  db.commit()
78
+ logger.info(f"Seeded initial data: test user '{test_username}', admin user '{admin_username}'")
79
  except Exception as e:
80
  logger.error(f"Error seeding initial data: {str(e)}")
81
  db.rollback()
 
172
  db.close()
173
  if not user or not pwd_context.verify(login_request.password, user.password):
174
  logger.warning(f"Login failed for user: {login_request.username}")
175
+ raise HTTPException(status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid email or device token")
176
  tokens = await create_access_token(user_id=user.username)
177
  return TokenResponse(access_token=tokens["access_token"], refresh_token=tokens["refresh_token"], token_type="bearer")
178
 
 
194
  logger.info(f"Registered and generated token for user: {register_request.username} by admin {current_user}")
195
  return TokenResponse(access_token=tokens["access_token"], refresh_token=tokens["refresh_token"], token_type="bearer")
196
 
197
+ async def app_register(register_request: RegisterRequest) -> TokenResponse:
198
+ db = SessionLocal()
199
+ existing_user = db.query(User).filter_by(username=register_request.username).first()
200
+ if existing_user:
201
+ db.close()
202
+ logger.warning(f"App registration failed: Email {register_request.username} already exists")
203
+ raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="Email already registered")
204
+
205
+ hashed_password = pwd_context.hash(register_request.password)
206
+ new_user = User(username=register_request.username, password=hashed_password, is_admin=False)
207
+ db.add(new_user)
208
+ db.commit()
209
+ db.close()
210
+
211
+ tokens = await create_access_token(user_id=register_request.username)
212
+ logger.info(f"App registered new user: {register_request.username}")
213
+ return TokenResponse(access_token=tokens["access_token"], refresh_token=tokens["refresh_token"], token_type="bearer")
214
+
215
  async def refresh_token(credentials: HTTPAuthorizationCredentials = Depends(bearer_scheme)) -> TokenResponse:
216
  token = credentials.credentials
217
  try: