``` Menu = quart_imp.security/permission_check Title = permission_check - quart_imp.security ``` ```python from quart_imp.security import permission_check ``` ```python permission_check( session_key: str, values_allowed: t.Union[t.List[t.Union[str, int, bool]], str, int, bool], fail_endpoint: t.Optional[str] = None, endpoint_kwargs: t.Optional[t.Dict[str, t.Union[str, int]]] = None, message: t.Optional[str] = None, message_category: str = "message" ) ``` `@permission_check(...)` --- A decorator that checks if the specified session key exists and its value(s) match the specified value(s). `session_key` The session key to check for. `values_allowed` A list of or singular value(s) that the session key must contain. `fail_endpoint` The endpoint to redirect to if the session key does not exist or does not contain the specified values. `endpoint_kwargs` A dictionary of keyword arguments to pass to the redirect endpoint. `message` If a message is specified, a flash message is shown. `message_category` The category of the flash message. ##### Example: ```python @bp.route("/admin-page", methods=["GET"]) @login_check( 'logged_in', True, 'blueprint.login_page' ) # can be mixed with login_check @permission_check( 'permissions', ['admin'], fail_endpoint='www.index', message="Failed message" ) async def admin_page(): ... ```