Initial commit
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
"""
|
||||
Controller for token validation endpoints.
|
||||
"""
|
||||
from flask import Blueprint, request, jsonify
|
||||
from api.middleware import api_key_required
|
||||
from api.models import ValidateTokenRequest, ValidateTokenResponse
|
||||
import logging
|
||||
|
||||
# Configure logger
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# Create blueprint
|
||||
token_bp = Blueprint('token', __name__)
|
||||
|
||||
@token_bp.route('/ValidateToken', methods=['POST'])
|
||||
@api_key_required
|
||||
def validate_token():
|
||||
"""
|
||||
Endpoint to validate user authentication tokens.
|
||||
|
||||
This method is used when users from FirstBank access the Customer Care Portal.
|
||||
It validates the soft/hard token code entered by the user.
|
||||
|
||||
Returns:
|
||||
JSON response with token validation results
|
||||
"""
|
||||
try:
|
||||
# Parse and validate request
|
||||
data = request.get_json()
|
||||
if not data:
|
||||
return jsonify({
|
||||
'resultCode': '400',
|
||||
'resultDescription': 'Invalid JSON payload'
|
||||
}), 400
|
||||
|
||||
# Validate required fields
|
||||
required_fields = ['RequestId', 'UserId', 'CountryId', 'TokenCode']
|
||||
for field in required_fields:
|
||||
if field not in data:
|
||||
return jsonify({
|
||||
'resultCode': '422',
|
||||
'resultDescription': f'Missing required field: {field}'
|
||||
}), 422
|
||||
|
||||
# Create request model
|
||||
req = ValidateTokenRequest.from_dict(data)
|
||||
|
||||
# Process token validation (this would connect to the business logic)
|
||||
# For demonstration, we'll return a mock response with successful validation
|
||||
|
||||
# Create response
|
||||
response = ValidateTokenResponse(
|
||||
Authenticated=True,
|
||||
AuthenticatedMessage=f"The user with ID {req.UserId} has successfully authenticated!",
|
||||
ResponseCode="00",
|
||||
ResponseMessage="Successful",
|
||||
RequestId=req.RequestId
|
||||
)
|
||||
|
||||
logger.info(f"Processed token validation for user {req.UserId}")
|
||||
return jsonify(response.to_dict())
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error processing token validation: {str(e)}")
|
||||
return jsonify({
|
||||
'resultCode': '500',
|
||||
'resultDescription': 'Internal server error'
|
||||
}), 500
|
||||
Reference in New Issue
Block a user