wy_qcos.api.posiq.routes_jsonrpc.dependencies package

Submodules

wy_qcos.api.posiq.routes_jsonrpc.dependencies.authentication module

wy_qcos.api.posiq.routes_jsonrpc.dependencies.authentication.get_user_manager(request)

Get user manager from request state.

This function retrieves the UserManager instance from the FastAPI application state. It is used as a dependency in routes that need to perform user management operations.

参数:

request (fastapi.Request) -- FastAPI request object containing app state

返回:

UserManager instance from application state

返回类型:

UserManager

wy_qcos.api.posiq.routes_jsonrpc.dependencies.authentication.decode_jwt_token(token)

Decode JWT token manually.

This function decodes a JWT token using the SECRET key.

参数:

token (str) -- JWT token string

返回:

Decoded token payload as dictionary, or None if invalid

返回类型:

dict | None

wy_qcos.api.posiq.routes_jsonrpc.dependencies.authentication.get_current_user_from_token(token, user_manager)

Extract and validate current user from JWT token.

This function decodes the JWT token and retrieves the corresponding user. It validates token validity, blacklist status, and all user account conditions.

Validation checks (in order): 1. Token must be present and decodable 2. Token must not be blacklisted 3. User must exist (Case 1: Deleted users with valid tokens are rejected) 4. User account must be enabled 5. User account must not be locked 6. User password must not be expired

参数:
  • token (str | None) -- JWT token string

  • user_manager (UserManager) -- UserManager instance for user lookup

返回:

User object if all validations pass, None otherwise

返回类型:

User | None

async wy_qcos.api.posiq.routes_jsonrpc.dependencies.authentication.auth(request, x_qcos_virtual_instance_id=Header(None, alias='x-qcos-virtual-instance-id'), user_manager=Depends(get_user_manager))

Main authentication dependency for API endpoints.

This function handles authentication for both virtual instance mode and user management mode.

参数:
  • request (fastapi.Request) -- HTTP request object for path-based permission checking

  • x_qcos_virtual_instance_id (str | None) -- Virtual instance ID from header (for virt mode)

  • user_manager (UserManager) -- UserManager instance for user operations

返回:

Authentication data dictionary containing user info and roles

抛出:

Various JSON-RPC errors based on authentication failures --

wy_qcos.api.posiq.routes_jsonrpc.dependencies.authentication.auth_virt(x_qcos_virtual_instance_id)

Authenticate using virtual instance ID.

This function validates the virtual instance ID header and returns authentication data containing device names and instance ID.

参数:

x_qcos_virtual_instance_id -- Virtual instance ID from request header

返回:

Authentication data dictionary or None for admin users

抛出:

JSON-RPC unauthorized error if validation fails --

wy_qcos.api.posiq.routes_jsonrpc.dependencies.authentication.auth_user(request, auth_data, user_manager)

Check user permissions using Casbin RBAC.

This function validates that the authenticated user has sufficient permissions to access the requested resource based on their roles.

参数:
  • request (fastapi.Request) -- HTTP request object containing URL path

  • auth_data (dict | None) -- Authentication data containing user roles

  • user_manager (UserManager) -- UserManager instance for permission checking

返回:

Updated auth_data if permissions are sufficient

抛出:
返回类型:

dict | None

wy_qcos.api.posiq.routes_jsonrpc.dependencies.authentication.auth_match_user_id(user_id, auth_data, allow_admin=False)

Authenticate: user ids are matched.

参数:
  • user_id -- User ID

  • auth_data -- Authentication data containing user roles

  • allow_admin -- Allow admin user

Module contents