| |
|
|
| from flask import request |
|
|
| from core.response_json import error_response, success_response, server_error_response |
| from middlewares.auth import token_required |
| from services.auth_service import register_new_user, authenticate_user, google_login_or_register |
|
|
|
|
| def register(): |
| try: |
| data = request.get_json() |
|
|
| if not data or not data.get("email") or not data.get("username") or not data.get("password"): |
| return error_response("Email, username, dan password wajib diisi!", status_code=400) |
|
|
| user_data = register_new_user( |
| email=data.get("email"), |
| username=data.get("username"), |
| password=data.get("password"), |
| display_name=data.get("display_name") |
| ) |
|
|
| return success_response(message="Registrasi berhasil!", data=user_data, status_code=201) |
|
|
| except ValueError as ve: |
| return error_response(message=str(ve), status_code=409) |
| except Exception as e: |
| return server_error_response(error_details=str(e)) |
|
|
|
|
| def login(): |
| try: |
| data = request.get_json() |
|
|
| if not data or not data.get("email") or not data.get("password"): |
| return error_response("Email dan password wajib diisi!", status_code=400) |
|
|
| auth_data = authenticate_user( |
| email=data.get("email"), |
| password=data.get("password") |
| ) |
|
|
| return success_response(message="Login berhasil!", data=auth_data, status_code=200) |
|
|
| except ValueError as ve: |
| return error_response(message=str(ve), status_code=401) |
| except Exception as e: |
| return server_error_response(error_details=str(e)) |
|
|
|
|
| def google_auth(): |
| try: |
| data = request.get_json() |
|
|
| if not data or not data.get("email"): |
| return error_response("Email wajib diisi!", status_code=400) |
|
|
| auth_data = google_login_or_register( |
| email=data.get("email"), |
| display_name=data.get("display_name") |
| ) |
|
|
| return success_response(message="Google login berhasil!", data=auth_data, status_code=200) |
|
|
| except Exception as e: |
| return server_error_response(error_details=str(e)) |
|
|
|
|
| @token_required |
| def logout(current_user): |
| try: |
| email_user = current_user.get('email') |
|
|
| return success_response( |
| message=f"Logout berhasil untuk {email_user}. Silakan hapus token di sisi Frontend.", |
| status_code=200 |
| ) |
| except Exception as e: |
| return server_error_response(error_details=str(e)) |