def _process_request(request: flask.Request, method: str, encrypt_request: bool, require_verified_email: bool) -> dict[str, typing.Any]: """Handle authentication and encryption.""" if method in ('GET', 'DELETE'): data = dict(request.args) elif method in ('POST', 'PATCH'): if encrypt_request: data = _decrypt_request(request.get_data()) else: data = request.get_json(force=True, silent=True) if not isinstance(data, dict): raise utils.RequestError(3113) session_id = None session_token = None if 'session_id' in data: session_id = data.pop('session_id') if 'session_token' in data: session_token = data.pop('session_token') if bool(session_id) ^ bool(session_token): raise utils.RequestError(1303) if session_id and session_token: session = models.Session.validate_session_key(session_id, session_token) request.session = session user = session.user if require_verified_email and not user.email_verified: raise utils.RequestError(1307) data['user'] = user else: request.session = None return data