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
- 返回类型:
- 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
- 抛出:
UnauthorizedError -- If no authentication data provided
ForbiddenError -- If user has no roles or insufficient permissions
- 返回类型:
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