fix: login with google is done
This commit is contained in:
parent
fab1cea611
commit
d63bf3e713
|
@ -9,3 +9,6 @@ app/**/*.pyo
|
|||
.env
|
||||
|
||||
.venv
|
||||
|
||||
|
||||
logs/
|
||||
|
|
|
@ -16,20 +16,39 @@ class LoggerConfig:
|
|||
if not os.path.exists(LoggerConfig.LOG_DIR):
|
||||
os.makedirs(LoggerConfig.LOG_DIR)
|
||||
|
||||
# Separate loggers for different levels
|
||||
LoggerConfig._setup_logger(app.logger, "info.log", logging.INFO)
|
||||
LoggerConfig._setup_logger(app.logger, "error.log", logging.ERROR)
|
||||
LoggerConfig._setup_logger(app.logger, "warning.log", logging.WARNING)
|
||||
# Remove default handlers to prevent duplicate logging
|
||||
for handler in app.logger.handlers[:]:
|
||||
app.logger.removeHandler(handler)
|
||||
|
||||
# Create separate loggers
|
||||
info_logger = LoggerConfig._setup_logger(
|
||||
"info_logger", "info.log", logging.INFO, logging.WARNING
|
||||
)
|
||||
error_logger = LoggerConfig._setup_logger(
|
||||
"error_logger", "error.log", logging.ERROR, logging.CRITICAL
|
||||
)
|
||||
warning_logger = LoggerConfig._setup_logger(
|
||||
"warning_logger", "warning.log", logging.WARNING, logging.WARNING
|
||||
)
|
||||
|
||||
# Attach handlers to Flask app logger
|
||||
app.logger.addHandler(info_logger)
|
||||
app.logger.addHandler(error_logger)
|
||||
app.logger.addHandler(warning_logger)
|
||||
|
||||
app.logger.setLevel(logging.DEBUG) # Set lowest level to capture all logs
|
||||
app.logger.info("Logger has been initialized for Flask application.")
|
||||
|
||||
@staticmethod
|
||||
def _setup_logger(logger, filename, level):
|
||||
def _setup_logger(name, filename, level, max_level):
|
||||
"""Helper method to configure loggers for specific levels."""
|
||||
logger = logging.getLogger(name)
|
||||
logger.setLevel(level)
|
||||
log_file_path = os.path.join(LoggerConfig.LOG_DIR, filename)
|
||||
log_handler = RotatingFileHandler(log_file_path, maxBytes=100000, backupCount=3)
|
||||
log_handler.setLevel(level)
|
||||
log_formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")
|
||||
log_handler.setFormatter(log_formatter)
|
||||
|
||||
log_handler.addFilter(lambda record: level <= record.levelno <= max_level)
|
||||
logger.addHandler(log_handler)
|
||||
return log_handler
|
||||
|
|
|
@ -4,6 +4,7 @@ from schemas.basic_response_schema import ResponseSchema
|
|||
from schemas.google_login_schema import GoogleLoginSchema
|
||||
from schemas import LoginSchema
|
||||
from services import UserService, AuthService
|
||||
from core import AuthException
|
||||
|
||||
|
||||
class AuthController:
|
||||
|
@ -38,7 +39,6 @@ class AuthController:
|
|||
)
|
||||
return jsonify(response.model_dump()), 401
|
||||
|
||||
# Jika berhasil, kembalikan data user tanpa meta
|
||||
response = ResponseSchema(
|
||||
message="Login successful",
|
||||
data=user_info,
|
||||
|
@ -51,6 +51,11 @@ class AuthController:
|
|||
response = ResponseSchema(message="Invalid input", data=None, meta=None)
|
||||
return jsonify(response.model_dump()), 400
|
||||
|
||||
except AuthException as e:
|
||||
current_app.logger.error(f"Auth error: {e}")
|
||||
response = ResponseSchema(message=e, data=None, meta=None)
|
||||
return jsonify(response.model_dump()), 400
|
||||
|
||||
except Exception as e:
|
||||
current_app.logger.error(
|
||||
f"Error during Google login: {str(e)}", exc_info=True
|
||||
|
|
|
@ -25,8 +25,9 @@ class UserRepository:
|
|||
return user
|
||||
|
||||
def get_by_google_id(self, google_id: str) -> Optional[UserEntity]:
|
||||
user = self.collection.find_one({"google_id": google_id})
|
||||
return user
|
||||
user_data = self.collection.find_one({"google_id": google_id})
|
||||
|
||||
return UserEntity(**user_data) if user_data else None
|
||||
|
||||
def insert_user(self, user_data: UserEntity) -> str:
|
||||
"""Menambahkan pengguna baru ke dalam database dan mengembalikan ID pengguna."""
|
||||
|
|
|
@ -5,6 +5,7 @@ from google.oauth2 import id_token
|
|||
from google.auth.transport import requests
|
||||
from configs import Config
|
||||
from core import AuthException
|
||||
from flask import current_app
|
||||
|
||||
|
||||
class AuthService:
|
||||
|
@ -26,6 +27,7 @@ class AuthService:
|
|||
|
||||
existing_user = self.user_repository.get_by_google_id(google_id)
|
||||
if existing_user:
|
||||
current_app.logger.info(f"User {existing_user.email} already exists ")
|
||||
if existing_user.email == email:
|
||||
return existing_user
|
||||
return AuthException("Email not match")
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
2025-03-19 11:48:56,950 - INFO - Logger has been initialized for Flask application.
|
||||
2025-03-19 11:49:01,795 - INFO - Logger has been initialized for Flask application.
|
||||
2025-03-19 11:49:06,664 - INFO - Logger has been initialized for Flask application.
|
Loading…
Reference in New Issue