diff --git a/.gitignore b/.gitignore index 9de216f..d1372f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ .DS_Store vendor tests/tmp/* -tests/coverage \ No newline at end of file +tests/coverage +phpDocumentor.phar +phpdoc.xml +.phpdoc \ No newline at end of file diff --git a/docs/classes/Taproot-IndieAuth-Callback-AuthorizationFormInterface.html b/docs/classes/Taproot-IndieAuth-Callback-AuthorizationFormInterface.html new file mode 100644 index 0000000..76dc4d7 --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-Callback-AuthorizationFormInterface.html @@ -0,0 +1,351 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
+

Documentation

+ + + + + +
+ +
+
+ + + + +
+ + +
+

+ AuthorizationFormInterface +

+ + + +

Authorization Form Interface

+ +
+ + + + + + + + +

+ Table of Contents + +

+ +
+
+ showForm() + +  : ResponseInterface +
+
Show Form
+ +
+ transformAuthorizationCode() + +  : array<string|int, mixed> +
+
Transform Authorization Code
+ +
+ + + + + +
+

+ Methods + +

+
+

+ showForm() + +

+ + +

Show Form

+ + + public + showForm(ServerRequestInterface $request, array<string|int, mixed> $authenticationResult, string $formAction, array<string|int, mixed>|null $clientHApp) : ResponseInterface + +

This method is called once the IndieAuth Authorization Endpoint has confirmed that:

+
    +
  • The current user is authenticated
  • +
  • The client app (client_id) has been fetched and is valid
  • +
  • The client app redirect_uri is known to be valid
  • +
+

It should build an authorization form which the currently logged-in user can use +to choose which scopes (if any) to grant the app.

+

Information specific to the IndieAuth authorization request can be found in +$request->getQueryParams(). The parameters most likely to be of use to the authorization +form are:

+
    +
  • +scope: a space-separated list of scopes which the client app is requesting. May be absent.
  • +
  • +client_id: the URL of the client app. Should be shown to the user. This also makes a good “cancel” link.
  • +
  • +redirect_uri: the URI which the user will be redirected to on successful authorization.
  • +
+

The form MUST submit a POST request to $formAction, with the taproot_indieauth_action +parameter set to approve.

+

The form MUST additionally include any CSRF tokens required to protect the submission. +Refer to whatever CSRF protection code you’re using (e.g. \Taproot\IndieAuth\Middleware\DoubleSubmitCookieCsrfMiddleware) +and make sure to include the required element. This will usually involve getting a +CSRF token with $request->getAttribute() and including it in an <input type="hidden" …/>.

+

The form SHOULD offer the user the opportunity to choose which of the request scopes, +if any, they wish to grant. It should describe what effect each scope grants. If no scopes are +requested, tell the user that the app is only requesting authorization, not access to their data.

+

The form MAY offer the user UIs for additional token configuration, e.g. a custom token lifetime. +You may have to refer to the documentation for your instance of TokenStorageInterface to ensure +that lifetime configuration works correctly. Any other additional data is not used by the IndieAuth +library, but, if stored on the access token, will be available to your app for use.

+
+ +
Parameters
+
+
+ $request + : ServerRequestInterface +
+
+

The current request.

+
+ +
+
+ $authenticationResult + : array<string|int, mixed> +
+
+

The array returned from the Authentication Handler. Guaranteed to contain a 'me' key, may also contain additional keys e.g. 'profile'.

+
+ +
+
+ $formAction + : string +
+
+

The URL which your form MUST submit to. Can also be used as the redirect URL for a logout process.

+
+ +
+
+ $clientHApp + : array<string|int, mixed>|null +
+
+

If available, the microformats-2 structure representing the client app.

+
+ +
+
+ + + +
Return values
+ ResponseInterface + — +

A response containing the authorization form.

+
+ + +
+
+

+ transformAuthorizationCode() + +

+ + +

Transform Authorization Code

+ + + public + transformAuthorizationCode(ServerRequestInterface $request, array<string|int, mixed> $code) : array<string|int, mixed> + +

This method is called on a successful authorization form submission. The $code array +is a partially-constructed authorization code array, which is guaranteed to have the +following keys:

+
    +
  • +client_id: the validated client_id request parameter
  • +
  • +redirect_uri: the validated redirect_uri request parameter
  • +
  • +state: the state request parameter
  • +
  • +code_challenge: the code_challenge request parameter
  • +
  • +code_challenge_method: the code_challenge_method request parameter
  • +
  • +requested_scope: the value of the scope request parameter
  • +
  • +me: the value of the me key from the authentication result returned from the authentication request handler callback
  • +
+

It may also have additional keys, which can come from the following locations:

+
    +
  • All keys from the the authentication request handler callback result which do not clash +with the keys listed above (with the exception of me, which is always present). Usually +this is a profile key, but you may choose to return additional data from the authentication +callback, which will be present in $data.
  • +
+

This method should add any additional data to the auth code, before it is persisted and +returned to the client app. Typically, this involves setting the scope key to be a +valid space-separated scope string of any scopes granted by the user in the form.

+

If the form offers additional token configuration, this method should set any relevant +keys in $code based on the form data in $request.

+
+ +
Parameters
+
+
+ $request + : ServerRequestInterface +
+
+

The current request.

+
+ +
+
+ $code + : array<string|int, mixed> +
+
+

The base authorization code data, to be added to.

+
+ +
+
+ + + +
Return values
+ array<string|int, mixed> + — +

The $code data after making any necessary changes.

+
+ + +
+
+ +
+
+
+
+

Search results

+ +
+
+
    +
    +
    +
    +
    +
    + + +
    + + + + diff --git a/docs/classes/Taproot-IndieAuth-Callback-DefaultAuthorizationForm.html b/docs/classes/Taproot-IndieAuth-Callback-DefaultAuthorizationForm.html new file mode 100644 index 0000000..a21095c --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-Callback-DefaultAuthorizationForm.html @@ -0,0 +1,600 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
    +

    Documentation

    + + + + + +
    + +
    +
    + + + + +
    + + +
    +

    + DefaultAuthorizationForm + + + + + implements + AuthorizationFormInterface, LoggerAwareInterface + +

    + + + + + + + + + + +

    + Interfaces, Classes and Traits + +

    + +
    +
    AuthorizationFormInterface
    +
    Authorization Form Interface
    +
    LoggerAwareInterface
    +
    + + +
    + + +

    + Table of Contents + +

    + +
    +
    + $csrfKey + +  : string +
    +
    + +
    + $formTemplatePath + +  : string +
    +
    + +
    + $logger + +  : LoggerInterface +
    +
    + +
    + __construct() + +  : mixed +
    +
    + +
    + setLogger() + +  : mixed +
    +
    + +
    + showForm() + +  : ResponseInterface +
    +
    Show Form
    + +
    + transformAuthorizationCode() + +  : array<string|int, mixed> +
    +
    Transform Authorization Code
    + +
    + + + + + + +
    +

    + Properties + +

    + + + +
    + +
    +

    + Methods + +

    +
    +

    + __construct() + +

    + + + + + public + __construct([string|null $formTemplatePath = null ][, string|null $csrfKey = null ][, LoggerInterface|null $logger = null ]) : mixed + + +
    Parameters
    +
    +
    + $formTemplatePath + : string|null + = null
    +
    + +
    +
    + $csrfKey + : string|null + = null
    +
    + +
    +
    + $logger + : LoggerInterface|null + = null
    +
    + +
    +
    + + + +
    Return values
    + mixed + — +
    + + +
    +
    +

    + setLogger() + +

    + + + + + public + setLogger(LoggerInterface $logger) : mixed + + +
    Parameters
    +
    +
    + $logger + : LoggerInterface +
    +
    + +
    +
    + + + +
    Return values
    + mixed + — +
    + + +
    +
    +

    + showForm() + +

    + + +

    Show Form

    + + + public + showForm(ServerRequestInterface $request, array<string|int, mixed> $authenticationResult, string $formAction, array<string|int, mixed>|null $clientHApp) : ResponseInterface + +

    This method is called once the IndieAuth Authorization Endpoint has confirmed that:

    +
      +
    • The current user is authenticated
    • +
    • The client app (client_id) has been fetched and is valid
    • +
    • The client app redirect_uri is known to be valid
    • +
    +

    It should build an authorization form which the currently logged-in user can use +to choose which scopes (if any) to grant the app.

    +

    Information specific to the IndieAuth authorization request can be found in +$request->getQueryParams(). The parameters most likely to be of use to the authorization +form are:

    +
      +
    • +scope: a space-separated list of scopes which the client app is requesting. May be absent.
    • +
    • +client_id: the URL of the client app. Should be shown to the user. This also makes a good “cancel” link.
    • +
    • +redirect_uri: the URI which the user will be redirected to on successful authorization.
    • +
    +

    The form MUST submit a POST request to $formAction, with the taproot_indieauth_action +parameter set to approve.

    +

    The form MUST additionally include any CSRF tokens required to protect the submission. +Refer to whatever CSRF protection code you’re using (e.g. \Taproot\IndieAuth\Middleware\DoubleSubmitCookieCsrfMiddleware) +and make sure to include the required element. This will usually involve getting a +CSRF token with $request->getAttribute() and including it in an <input type="hidden" …/>.

    +

    The form SHOULD offer the user the opportunity to choose which of the request scopes, +if any, they wish to grant. It should describe what effect each scope grants. If no scopes are +requested, tell the user that the app is only requesting authorization, not access to their data.

    +

    The form MAY offer the user UIs for additional token configuration, e.g. a custom token lifetime. +You may have to refer to the documentation for your instance of TokenStorageInterface to ensure +that lifetime configuration works correctly. Any other additional data is not used by the IndieAuth +library, but, if stored on the access token, will be available to your app for use.

    +
    + +
    Parameters
    +
    +
    + $request + : ServerRequestInterface +
    +
    +

    The current request.

    +
    + +
    +
    + $authenticationResult + : array<string|int, mixed> +
    +
    +

    The array returned from the Authentication Handler. Guaranteed to contain a 'me' key, may also contain additional keys e.g. 'profile'.

    +
    + +
    +
    + $formAction + : string +
    +
    +

    The URL which your form MUST submit to. Can also be used as the redirect URL for a logout process.

    +
    + +
    +
    + $clientHApp + : array<string|int, mixed>|null +
    +
    +

    If available, the microformats-2 structure representing the client app.

    +
    + +
    +
    + + + +
    Return values
    + ResponseInterface + — +

    A response containing the authorization form.

    +
    + + +
    +
    +

    + transformAuthorizationCode() + +

    + + +

    Transform Authorization Code

    + + + public + transformAuthorizationCode(ServerRequestInterface $request, array<string|int, mixed> $code) : array<string|int, mixed> + +

    This method is called on a successful authorization form submission. The $code array +is a partially-constructed authorization code array, which is guaranteed to have the +following keys:

    +
      +
    • +client_id: the validated client_id request parameter
    • +
    • +redirect_uri: the validated redirect_uri request parameter
    • +
    • +state: the state request parameter
    • +
    • +code_challenge: the code_challenge request parameter
    • +
    • +code_challenge_method: the code_challenge_method request parameter
    • +
    • +requested_scope: the value of the scope request parameter
    • +
    • +me: the value of the me key from the authentication result returned from the authentication request handler callback
    • +
    +

    It may also have additional keys, which can come from the following locations:

    +
      +
    • All keys from the the authentication request handler callback result which do not clash +with the keys listed above (with the exception of me, which is always present). Usually +this is a profile key, but you may choose to return additional data from the authentication +callback, which will be present in $data.
    • +
    +

    This method should add any additional data to the auth code, before it is persisted and +returned to the client app. Typically, this involves setting the scope key to be a +valid space-separated scope string of any scopes granted by the user in the form.

    +

    If the form offers additional token configuration, this method should set any relevant +keys in $code based on the form data in $request.

    +
    + +
    Parameters
    +
    +
    + $request + : ServerRequestInterface +
    +
    +

    The current request.

    +
    + +
    +
    + $code + : array<string|int, mixed> +
    +
    +

    The base authorization code data, to be added to.

    +
    + +
    +
    + + + +
    Return values
    + array<string|int, mixed> + — +

    The $code data after making any necessary changes.

    +
    + + +
    +
    + +
    +
    +
    +
    +

    Search results

    + +
    +
    +
      +
      +
      +
      +
      +
      + + +
      + + + + diff --git a/docs/classes/Taproot-IndieAuth-Callback-SingleUserPasswordAuthenticationCallback.html b/docs/classes/Taproot-IndieAuth-Callback-SingleUserPasswordAuthenticationCallback.html new file mode 100644 index 0000000..c1f57fd --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-Callback-SingleUserPasswordAuthenticationCallback.html @@ -0,0 +1,475 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
      +

      Documentation

      + + + + + +
      + +
      +
      + + + + +
      + + +
      +

      + SingleUserPasswordAuthenticationCallback + + + + +

      + + + +

      Single User Password Authentication Callback

      + +
      + + + + + + + + +

      + Table of Contents + +

      + +
      +
      + PASSWORD_FORM_PARAMETER + +  = 'taproot_indieauth_server_password' +
      +
      + +
      + $csrfKey + +  : string +
      +
      + +
      + $formTemplate + +  : string +
      +
      + +
      + $hashedPassword + +  : string +
      +
      + +
      + $user + +  : array<string|int, mixed> +
      +
      + +
      + __construct() + +  : mixed +
      +
      + +
      + __invoke() + +  : mixed +
      +
      + +
      + + + + +
      +

      + Constants + +

      + +
      + + +
      +

      + Properties + +

      + + + + +
      + +
      +

      + Methods + +

      +
      +

      + __construct() + +

      + + + + + public + __construct(array<string|int, mixed> $user, string $hashedPassword[, string|null $csrfKey = null ][, string|null $formTemplate = null ]) : mixed + + +
      Parameters
      +
      +
      + $user + : array<string|int, mixed> +
      +
      + +
      +
      + $hashedPassword + : string +
      +
      + +
      +
      + $csrfKey + : string|null + = null
      +
      + +
      +
      + $formTemplate + : string|null + = null
      +
      + +
      +
      + + + +
      Return values
      + mixed + — +
      + + +
      +
      +

      + __invoke() + +

      + + + + + public + __invoke(ServerRequestInterface $request, string $formAction, string|null $normalizedMeUrl) : mixed + + +
      Parameters
      +
      +
      + $request + : ServerRequestInterface +
      +
      + +
      +
      + $formAction + : string +
      +
      + +
      +
      + $normalizedMeUrl + : string|null +
      +
      + +
      +
      + + + +
      Return values
      + mixed + — +
      + + +
      +
      + +
      +
      +
      +
      +

      Search results

      + +
      +
      +
        +
        +
        +
        +
        +
        + + +
        + + + + diff --git a/docs/classes/Taproot-IndieAuth-IndieAuthException.html b/docs/classes/Taproot-IndieAuth-IndieAuthException.html new file mode 100644 index 0000000..ff9ec65 --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-IndieAuthException.html @@ -0,0 +1,906 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
        +

        Documentation

        + + + + + +
        + +
        +
        + + + + +
        + + +
        +

        + IndieAuthException + + + extends Exception + + + + +

        + + + + + + + + + + + + +

        + Table of Contents + +

        + +
        +
        + AUTHENTICATION_CALLBACK_MISSING_ME_PARAM + +  = 2 +
        +
        + +
        + AUTHORIZATION_APPROVAL_REQUEST_INVALID_HASH + +  = 4 +
        +
        + +
        + AUTHORIZATION_APPROVAL_REQUEST_MISSING_HASH + +  = 3 +
        +
        + +
        + EXC_INFO + +  = [ + self::INTERNAL_ERROR => ['statusCode' => 500, 'name' => 'Internal Server Error', 'explanation' => 'An internal server error occurred.'], + self::INTERNAL_ERROR_REDIRECT => ['statusCode' => 302, 'name' => 'Internal Server Error', 'error' => 'internal_error'], + self::AUTHENTICATION_CALLBACK_MISSING_ME_PARAM => ['statusCode' => 302, 'name' => 'Internal Server Error', 'error' => 'internal_error'], + self::AUTHORIZATION_APPROVAL_REQUEST_MISSING_HASH => ['statusCode' => 302, 'name' => 'Request Missing Hash', 'error' => 'internal_error'], + self::AUTHORIZATION_APPROVAL_REQUEST_INVALID_HASH => ['statusCode' => 302, 'name' => 'Request Hash Invalid', 'error' => 'internal_error'], + // TODO: should this one be a 500 because it’s an internal server error, or a 400 because the client_id was likely invalid? Is anyone ever going to notice, or care? + self::HTTP_EXCEPTION_FETCHING_CLIENT_ID => ['statusCode' => 500, 'name' => 'Error Fetching Client App URL', 'explanation' => 'Fetching the client app (client_id) failed.'], + self::INTERNAL_EXCEPTION_FETCHING_CLIENT_ID => ['statusCode' => 500, 'name' => 'Internal Error fetching client app URI', 'explanation' => 'Fetching the client app (client_id) failed due to an internal error.'], + self::INVALID_REDIRECT_URI => ['statusCode' => 400, 'name' => 'Invalid Client App Redirect URI', 'explanation' => 'The client app redirect URI (redirect_uri) either was not a valid URI, did not sufficiently match client_id, or did not exactly match any redirect URIs parsed from fetching the client_id.'], + self::INVALID_CLIENT_ID => ['statusCode' => 400, 'name' => 'Invalid Client Identifier URI', 'explanation' => 'The Client Identifier was not valid.'], + self::INVALID_STATE => ['statusCode' => 302, 'name' => 'Invalid state Parameter', 'error' => 'invalid_request'], + self::INVALID_CODE_CHALLENGE => ['statusCode' => 302, 'name' => 'Invalid code_challenge Parameter', 'error' => 'invalid_request'], + self::INVALID_SCOPE => ['statusCode' => 302, 'name' => 'Invalid scope Parameter', 'error' => 'invalid_request'], +] +
        +
        + +
        + HTTP_EXCEPTION_FETCHING_CLIENT_ID + +  = 5 +
        +
        + +
        + INTERNAL_ERROR + +  = 0 +
        +
        + +
        + INTERNAL_ERROR_REDIRECT + +  = 1 +
        +
        + +
        + INTERNAL_EXCEPTION_FETCHING_CLIENT_ID + +  = 6 +
        +
        + +
        + INVALID_CLIENT_ID + +  = 8 +
        +
        + +
        + INVALID_CODE_CHALLENGE + +  = 10 +
        +
        + +
        + INVALID_REDIRECT_URI + +  = 7 +
        +
        + +
        + INVALID_SCOPE + +  = 11 +
        +
        + +
        + INVALID_STATE + +  = 9 +
        +
        + +
        + $request + +  : ServerRequestInterface +
        +
        + +
        + create() + +  : self +
        +
        + +
        + getExplanation() + +  : mixed +
        +
        + +
        + getInfo() + +  : mixed +
        +
        + +
        + getRequest() + +  : mixed +
        +
        + +
        + getStatusCode() + +  : mixed +
        +
        + +
        + trustQueryParams() + +  : mixed +
        +
        Trust Query Params
        + +
        + + + + +
        +

        + Constants + +

        +
        +

        + AUTHENTICATION_CALLBACK_MISSING_ME_PARAM + +

        + + + + + + public + mixed + AUTHENTICATION_CALLBACK_MISSING_ME_PARAM + = 2 + + + + + + +
        +
        +

        + AUTHORIZATION_APPROVAL_REQUEST_INVALID_HASH + +

        + + + + + + public + mixed + AUTHORIZATION_APPROVAL_REQUEST_INVALID_HASH + = 4 + + + + + + +
        +
        +

        + AUTHORIZATION_APPROVAL_REQUEST_MISSING_HASH + +

        + + + + + + public + mixed + AUTHORIZATION_APPROVAL_REQUEST_MISSING_HASH + = 3 + + + + + + +
        +
        +

        + EXC_INFO + +

        + + + + + + public + mixed + EXC_INFO + = [ + self::INTERNAL_ERROR => ['statusCode' => 500, 'name' => 'Internal Server Error', 'explanation' => 'An internal server error occurred.'], + self::INTERNAL_ERROR_REDIRECT => ['statusCode' => 302, 'name' => 'Internal Server Error', 'error' => 'internal_error'], + self::AUTHENTICATION_CALLBACK_MISSING_ME_PARAM => ['statusCode' => 302, 'name' => 'Internal Server Error', 'error' => 'internal_error'], + self::AUTHORIZATION_APPROVAL_REQUEST_MISSING_HASH => ['statusCode' => 302, 'name' => 'Request Missing Hash', 'error' => 'internal_error'], + self::AUTHORIZATION_APPROVAL_REQUEST_INVALID_HASH => ['statusCode' => 302, 'name' => 'Request Hash Invalid', 'error' => 'internal_error'], + // TODO: should this one be a 500 because it’s an internal server error, or a 400 because the client_id was likely invalid? Is anyone ever going to notice, or care? + self::HTTP_EXCEPTION_FETCHING_CLIENT_ID => ['statusCode' => 500, 'name' => 'Error Fetching Client App URL', 'explanation' => 'Fetching the client app (client_id) failed.'], + self::INTERNAL_EXCEPTION_FETCHING_CLIENT_ID => ['statusCode' => 500, 'name' => 'Internal Error fetching client app URI', 'explanation' => 'Fetching the client app (client_id) failed due to an internal error.'], + self::INVALID_REDIRECT_URI => ['statusCode' => 400, 'name' => 'Invalid Client App Redirect URI', 'explanation' => 'The client app redirect URI (redirect_uri) either was not a valid URI, did not sufficiently match client_id, or did not exactly match any redirect URIs parsed from fetching the client_id.'], + self::INVALID_CLIENT_ID => ['statusCode' => 400, 'name' => 'Invalid Client Identifier URI', 'explanation' => 'The Client Identifier was not valid.'], + self::INVALID_STATE => ['statusCode' => 302, 'name' => 'Invalid state Parameter', 'error' => 'invalid_request'], + self::INVALID_CODE_CHALLENGE => ['statusCode' => 302, 'name' => 'Invalid code_challenge Parameter', 'error' => 'invalid_request'], + self::INVALID_SCOPE => ['statusCode' => 302, 'name' => 'Invalid scope Parameter', 'error' => 'invalid_request'], +] + + + + + + +
        +
        +

        + HTTP_EXCEPTION_FETCHING_CLIENT_ID + +

        + + + + + + public + mixed + HTTP_EXCEPTION_FETCHING_CLIENT_ID + = 5 + + + + + + +
        +
        +

        + INTERNAL_ERROR + +

        + + + + + + public + mixed + INTERNAL_ERROR + = "" + + + + + + +
        +
        +

        + INTERNAL_ERROR_REDIRECT + +

        + + + + + + public + mixed + INTERNAL_ERROR_REDIRECT + = 1 + + + + + + +
        +
        +

        + INTERNAL_EXCEPTION_FETCHING_CLIENT_ID + +

        + + + + + + public + mixed + INTERNAL_EXCEPTION_FETCHING_CLIENT_ID + = 6 + + + + + + +
        +
        +

        + INVALID_CLIENT_ID + +

        + + + + + + public + mixed + INVALID_CLIENT_ID + = 8 + + + + + + +
        +
        +

        + INVALID_CODE_CHALLENGE + +

        + + + + + + public + mixed + INVALID_CODE_CHALLENGE + = 10 + + + + + + +
        +
        +

        + INVALID_REDIRECT_URI + +

        + + + + + + public + mixed + INVALID_REDIRECT_URI + = 7 + + + + + + +
        +
        +

        + INVALID_SCOPE + +

        + + + + + + public + mixed + INVALID_SCOPE + = 11 + + + + + + +
        +
        +

        + INVALID_STATE + +

        + + + + + + public + mixed + INVALID_STATE + = 9 + + + + + + +
        +
        + + +
        +

        + Properties + +

        +
        +

        + $request + + + +

        + + + + + protected + ServerRequestInterface + $request + + + + + +
        +
        + +
        +

        + Methods + +

        +
        +

        + create() + +

        + + + + + public + static create(int $code, ServerRequestInterface $request[, Throwable|null $previous = null ]) : self + + +
        Parameters
        +
        +
        + $code + : int +
        +
        + +
        +
        + $request + : ServerRequestInterface +
        +
        + +
        +
        + $previous + : Throwable|null + = null
        +
        + +
        +
        + + + +
        Return values
        + self + — +
        + + +
        +
        +

        + getExplanation() + +

        + + + + + public + getExplanation() : mixed + + + + + +
        Return values
        + mixed + — +
        + + +
        +
        +

        + getInfo() + +

        + + + + + public + getInfo() : mixed + + + + + +
        Return values
        + mixed + — +
        + + +
        +
        +

        + getRequest() + +

        + + + + + public + getRequest() : mixed + + + + + +
        Return values
        + mixed + — +
        + + +
        +
        +

        + getStatusCode() + +

        + + + + + public + getStatusCode() : mixed + + + + + +
        Return values
        + mixed + — +
        + + +
        +
        +

        + trustQueryParams() + +

        + + +

        Trust Query Params

        + + + public + trustQueryParams() : mixed + +

        Only useful on authorization form submission requests. If this returns false, +the client_id and/or request_uri have likely been tampered with, and the error +page SHOULD NOT offer the user a link to them.

        +
        + + + + +
        Return values
        + mixed + — +
        + + +
        +
        + +
        +
        +
        +
        +

        Search results

        + +
        +
        +
          +
          +
          +
          +
          +
          + + +
          + + + + diff --git a/docs/classes/Taproot-IndieAuth-Middleware-ClosureRequestHandler.html b/docs/classes/Taproot-IndieAuth-Middleware-ClosureRequestHandler.html new file mode 100644 index 0000000..1f46dda --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-Middleware-ClosureRequestHandler.html @@ -0,0 +1,340 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
          +

          Documentation

          + + + + + +
          + +
          +
          + + + + +
          + + +
          +

          + ClosureRequestHandler + + + + + implements + RequestHandlerInterface + +

          + + + + + + + + + + +

          + Interfaces, Classes and Traits + +

          + +
          +
          RequestHandlerInterface
          +
          + + +
          + + +

          + Table of Contents + +

          + +
          +
          + $args + +  : array<string|int, mixed> +
          +
          + +
          + $callable + +  : mixed +
          +
          + +
          + __construct() + +  : mixed +
          +
          + +
          + handle() + +  : ResponseInterface +
          +
          + +
          + + + + + + +
          +

          + Properties + +

          + + +
          + +
          +

          + Methods + +

          +
          +

          + __construct() + +

          + + + + + public + __construct(callable $callable) : mixed + + +
          Parameters
          +
          +
          + $callable + : callable +
          +
          + +
          +
          + + + +
          Return values
          + mixed + — +
          + + +
          +
          +

          + handle() + +

          + + + + + public + handle(ServerRequestInterface $request) : ResponseInterface + + +
          Parameters
          +
          +
          + $request + : ServerRequestInterface +
          +
          + +
          +
          + + + +
          Return values
          + ResponseInterface + — +
          + + +
          +
          + +
          +
          +
          +
          +

          Search results

          + +
          +
          +
            +
            +
            +
            +
            +
            + + +
            + + + + diff --git a/docs/classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html b/docs/classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html new file mode 100644 index 0000000..7a03a52 --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html @@ -0,0 +1,794 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
            +

            Documentation

            + + + + + +
            + +
            +
            + + + + +
            + + +
            +

            + DoubleSubmitCookieCsrfMiddleware + + + + + implements + MiddlewareInterface, LoggerAwareInterface + +

            + + + +

            Double-Submit Cookie CSRF Middleware

            + +

            A PSR-15-compatible Middleware for stateless Double-Submit-Cookie-based CSRF protection.

            +

            The $attribute property and first constructor argument sets the key by which the CSRF token +is referred to in all parameter sets (request attributes, request body parameters, cookies).

            +

            Generates a random token of length $tokenLength (default 128), and stores it as an attribute +on the ServerRequestInterface. It’s also added to the response as a cookie.

            +

            On requests which may modify state (methods other than HEAD, GET or OPTIONS), the request body +and request cookies are checked for matching CSRF tokens. If they match, the request is passed on +to the handler. If they do not match, further processing is halted and an error response generated +from the $errorResponse callback is returned. Refer to the constructor argument for information +about customising the error response.

            +
            + + +
            + Tags + +
            +
            +
            + link +
            +
            + https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html + +
            +
            + link +
            +
            + https://github.com/zakirullin/csrf-middleware/blob/master/src/CSRF.php + +
            +
            + + + + +

            + Interfaces, Classes and Traits + +

            + +
            +
            MiddlewareInterface
            +
            +
            LoggerAwareInterface
            +
            + + +
            + + +

            + Table of Contents + +

            + +
            +
            + ATTRIBUTE + +  = 'csrf' +
            +
            + +
            + CSRF_TOKEN_LENGTH + +  = 128 +
            +
            + +
            + DEFAULT_ERROR_RESPONSE_STRING + +  = 'Invalid or missing CSRF token!' +
            +
            + +
            + READ_METHODS + +  = ['HEAD', 'GET', 'OPTIONS'] +
            +
            + +
            + TTL + +  = 60 * 20 +
            +
            + +
            + $attribute + +  : string +
            +
            + +
            + $errorResponse + +  : mixed +
            +
            + +
            + $logger + +  : LoggerInterface +
            +
            + +
            + $tokenLength + +  : int +
            +
            + +
            + $ttl + +  : int +
            +
            + +
            + __construct() + +  : mixed +
            +
            Constructor
            + +
            + process() + +  : ResponseInterface +
            +
            + +
            + setLogger() + +  : mixed +
            +
            + +
            + isValid() + +  : mixed +
            +
            + +
            + + + + +
            +

            + Constants + +

            + + +
            +

            + DEFAULT_ERROR_RESPONSE_STRING + +

            + + + + + + public + mixed + DEFAULT_ERROR_RESPONSE_STRING + = 'Invalid or missing CSRF token!' + + + + + + +
            + + +
            + + +
            +

            + Properties + +

            + + + + + +
            + +
            +

            + Methods + +

            +
            +

            + __construct() + +

            + + +

            Constructor

            + + + public + __construct([string|null $attribute = self::ATTRIBUTE ][, int|null $ttl = self::TTL ][, mixed $errorResponse = self::DEFAULT_ERROR_RESPONSE_STRING ][, mixed $tokenLength = self::CSRF_TOKEN_LENGTH ][, mixed $logger = null ]) : mixed + +

            The $errorResponse parameter can be used to customse the error response returned when a +write request has invalid CSRF parameters. It can take the following forms:

            +
              +
            • A string, which will be returned as-is with a 400 Status Code and Content-type: text/plain header
            • +
            • An instance of ResponseInterface, which will be returned as-is
            • +
            • A callable with the signature function (ServerRequestInterface $request): ResponseInterface, +the return value of which will be returned as-is.
            • +
            +
            + +
            Parameters
            +
            +
            + $attribute + : string|null + = self::ATTRIBUTE
            +
            + +
            +
            + $ttl + : int|null + = self::TTL
            +
            + +
            +
            + $errorResponse + : mixed + = self::DEFAULT_ERROR_RESPONSE_STRING
            +
            + +
            +
            + $tokenLength + : mixed + = self::CSRF_TOKEN_LENGTH
            +
            + +
            +
            + $logger + : mixed + = null
            +
            + +
            +
            + + + +
            Return values
            + mixed + — +
            + + +
            +
            +

            + process() + +

            + + + + + public + process(ServerRequestInterface $request, RequestHandlerInterface $handler) : ResponseInterface + + +
            Parameters
            +
            +
            + $request + : ServerRequestInterface +
            +
            + +
            +
            + $handler + : RequestHandlerInterface +
            +
            + +
            +
            + + + +
            Return values
            + ResponseInterface + — +
            + + +
            +
            +

            + setLogger() + +

            + + + + + public + setLogger(LoggerInterface $logger) : mixed + + +
            Parameters
            +
            +
            + $logger + : LoggerInterface +
            +
            + +
            +
            + + + +
            Return values
            + mixed + — +
            + + +
            +
            +

            + isValid() + +

            + + + + + protected + isValid(ServerRequestInterface $request) : mixed + + +
            Parameters
            +
            +
            + $request + : ServerRequestInterface +
            +
            + +
            +
            + + + +
            Return values
            + mixed + — +
            + + +
            +
            + +
            +
            +
            +
            +

            Search results

            + +
            +
            +
              +
              +
              +
              +
              +
              + + +
              + + + + diff --git a/docs/classes/Taproot-IndieAuth-Middleware-NoOpMiddleware.html b/docs/classes/Taproot-IndieAuth-Middleware-NoOpMiddleware.html new file mode 100644 index 0000000..d71b313 --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-Middleware-NoOpMiddleware.html @@ -0,0 +1,222 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
              +

              Documentation

              + + + + + +
              + +
              +
              + + + + +
              + + +
              +

              + NoOpMiddleware + + + + + implements + MiddlewareInterface + +

              + + + +

              No-Op Middleware

              + +

              A PSR-15 Middleware which does nothing, simply passing $request onto $handler and returning +the response.

              +
              + + + + + + +

              + Interfaces, Classes and Traits + +

              + +
              +
              MiddlewareInterface
              +
              + + +
              + + +

              + Table of Contents + +

              + +
              +
              + process() + +  : ResponseInterface +
              +
              + +
              + + + + + + + +
              +

              + Methods + +

              +
              +

              + process() + +

              + + + + + public + process(ServerRequestInterface $request, RequestHandlerInterface $handler) : ResponseInterface + + +
              Parameters
              +
              +
              + $request + : ServerRequestInterface +
              +
              + +
              +
              + $handler + : RequestHandlerInterface +
              +
              + +
              +
              + + + +
              Return values
              + ResponseInterface + — +
              + + +
              +
              + +
              +
              +
              +
              +

              Search results

              + +
              +
              +
                +
                +
                +
                +
                +
                + + +
                + + + + diff --git a/docs/classes/Taproot-IndieAuth-Middleware-ResponseRequestHandler.html b/docs/classes/Taproot-IndieAuth-Middleware-ResponseRequestHandler.html new file mode 100644 index 0000000..ecc0818 --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-Middleware-ResponseRequestHandler.html @@ -0,0 +1,303 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                +

                Documentation

                + + + + + +
                + +
                +
                + + + + +
                + + +
                +

                + ResponseRequestHandler + + + + + implements + RequestHandlerInterface + +

                + + + + + + + + + + +

                + Interfaces, Classes and Traits + +

                + +
                +
                RequestHandlerInterface
                +
                + + +
                + + +

                + Table of Contents + +

                + +
                +
                + $response + +  : ResponseInterface +
                +
                + +
                + __construct() + +  : mixed +
                +
                + +
                + handle() + +  : ResponseInterface +
                +
                + +
                + + + + + + +
                +

                + Properties + +

                + +
                + +
                +

                + Methods + +

                +
                +

                + __construct() + +

                + + + + + public + __construct(ResponseInterface $response) : mixed + + +
                Parameters
                +
                +
                + $response + : ResponseInterface +
                +
                + +
                +
                + + + +
                Return values
                + mixed + — +
                + + +
                +
                +

                + handle() + +

                + + + + + public + handle(ServerRequestInterface $request) : ResponseInterface + + +
                Parameters
                +
                +
                + $request + : ServerRequestInterface +
                +
                + +
                +
                + + + +
                Return values
                + ResponseInterface + — +
                + + +
                +
                + +
                +
                +
                +
                +

                Search results

                + +
                +
                +
                  +
                  +
                  +
                  +
                  +
                  + + +
                  + + + + diff --git a/docs/classes/Taproot-IndieAuth-Server.html b/docs/classes/Taproot-IndieAuth-Server.html new file mode 100644 index 0000000..d4a7bb7 --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-Server.html @@ -0,0 +1,1125 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                  +

                  Documentation

                  + + + + + +
                  + +
                  +
                  + + + + +
                  + + +
                  +

                  + Server + + + + +

                  + + + +

                  IndieAuth Server

                  + +

                  A PSR-7-compatible implementation of the request-handling logic for IndieAuth authorization endpoints +and token endpoints.

                  +

                  Typical minimal usage looks something like this:

                  +
                  // Somewhere in your app set-up code:
                  +$server = new Taproot\IndieAuth\Server([
                  +  'secret' => APP_INDIEAUTH_SECRET,  // A secret key, >= 64 characters long.
                  +  'tokenStorage' => '/../data/auth_tokens/',  // A path to store token data, or an object implementing TokenStorageInterface.
                  +  'handleAuthenticationRequestCallback' => function (ServerRequestInterface $request, string $authenticationRedirect, ?string $normalizedMeUrl) {
                  +    // If the request is authenticated, return an array with a `me` key containing the
                  +    // canonical URL of the currently logged-in user.
                  +    if ($userUrl = getLoggedInUserUrl($request)) {
                  +      return ['me' => $userUrl];
                  +    }
                  +
                  +    // Otherwise, redirect the user to a login page, ensuring that they will be redirected
                  +    // back to the IndieAuth flow with query parameters intact once logged in.
                  +    return new Response('302', ['Location' => 'https://example.com/login?next=' . urlencode($authenticationRedirect)]);
                  +  }
                  +]);
                  +
                  +// In your authorization endpoint route:
                  +return $server->handleAuthorizationEndpointRequest($request);
                  +
                  +// In your token endpoint route:
                  +return $server->handleTokenEndpointRequest($request);
                  +
                  +// In another route (e.g. a micropub route), to authenticate the request:
                  +// (assuming $bearerToken is a token parsed from an “Authorization: Bearer XXXXXX” header
                  +// or access_token property from a request body)
                  +if ($accessToken = $server->getTokenStorage()->getAccessToken($bearerToken)) {
                  +  // Request is authenticated as $accessToken['me'], and is allowed to
                  +  // act according to the scopes listed in $accessToken['scope'].
                  +  $scopes = explode(' ', $accessToken['scope']);
                  +}
                  +
                  +

                  Refer to the __construct documentation for further configuration options, and to the +documentation for both handling methods for further documentation about them.

                  +
                  + + +
                  + Tags + +
                  +
                  +
                  + link +
                  +
                  + https://indieauth.spec.indieweb.org/ + +
                  +
                  + link +
                  +
                  + https://www.rfc-editor.org/rfc/rfc6749.html#section-5.2 + +
                  +
                  + link +
                  +
                  + https://github.com/indieweb/indieauth-client-php + +
                  +
                  + link +
                  +
                  + https://github.com/Zegnat/php-mindee/blob/development/index.php + +
                  +
                  + + + + + + +

                  + Table of Contents + +

                  + +
                  +
                  + APPROVE_ACTION_KEY + +  = 'taproot_indieauth_action' +
                  +
                  The form data key used for identifying a request as an authorization (consent screen) form submissions.
                  + +
                  + APPROVE_ACTION_VALUE + +  = 'approve' +
                  +
                  The form data value used for identifying a request as an authorization (consent screen) form submissions.
                  + +
                  + DEFAULT_CSRF_KEY + +  = 'taproot_indieauth_server_csrf' +
                  +
                  The key used to store the CSRF token everywhere it’s used: Request parameters, Request body, and Cookies.
                  + +
                  + HANDLE_AUTHENTICATION_REQUEST + +  = 'handleAuthenticationRequestCallback' +
                  +
                  + +
                  + HANDLE_NON_INDIEAUTH_REQUEST + +  = 'handleNonIndieAuthRequestCallback' +
                  +
                  + +
                  + HASH_QUERY_STRING_KEY + +  = 'taproot_indieauth_server_hash' +
                  +
                  The query string parameter key used for storing the hash used for validating authorization request parameters.
                  + +
                  + $authorizationForm + +  : AuthorizationFormInterface +
                  +
                  + +
                  + $csrfMiddleware + +  : MiddlewareInterface +
                  +
                  + +
                  + $exceptionTemplatePath + +  : string +
                  +
                  + +
                  + $handleAuthenticationRequestCallback + +  : mixed +
                  +
                  + +
                  + $handleNonIndieAuthRequest + +  : mixed +
                  +
                  + +
                  + $httpGetWithEffectiveUrl + +  : mixed +
                  +
                  + +
                  + $logger + +  : LoggerInterface +
                  +
                  + +
                  + $secret + +  : string +
                  +
                  + +
                  + $tokenStorage + +  : TokenStorageInterface +
                  +
                  + +
                  + __construct() + +  : self +
                  +
                  Constructor
                  + +
                  + getTokenStorage() + +  : TokenStorageInterface +
                  +
                  + +
                  + handleAuthorizationEndpointRequest() + +  : ResponseInterface +
                  +
                  Handle Authorization Endpoint Request
                  + +
                  + handleTokenEndpointRequest() + +  : ResponseInterface +
                  +
                  Handle Token Endpoint Request
                  + +
                  + handleException() + +  : ResponseInterface +
                  +
                  Handle Exception
                  + +
                  + + + + +
                  +

                  + Constants + +

                  +
                  +

                  + APPROVE_ACTION_KEY + +

                  + + + +

                  The form data key used for identifying a request as an authorization (consent screen) form submissions.

                  + + + public + mixed + APPROVE_ACTION_KEY + = 'taproot_indieauth_action' + + + +
                  + + + +
                  +
                  +

                  + APPROVE_ACTION_VALUE + +

                  + + + +

                  The form data value used for identifying a request as an authorization (consent screen) form submissions.

                  + + + public + mixed + APPROVE_ACTION_VALUE + = 'approve' + + + +
                  + + + +
                  +
                  +

                  + DEFAULT_CSRF_KEY + +

                  + + + +

                  The key used to store the CSRF token everywhere it’s used: Request parameters, Request body, and Cookies.

                  + + + public + mixed + DEFAULT_CSRF_KEY + = 'taproot_indieauth_server_csrf' + + + +
                  + + + +
                  +
                  +

                  + HANDLE_AUTHENTICATION_REQUEST + +

                  + + + + + + public + mixed + HANDLE_AUTHENTICATION_REQUEST + = 'handleAuthenticationRequestCallback' + + + + + + +
                  +
                  +

                  + HANDLE_NON_INDIEAUTH_REQUEST + +

                  + + + + + + public + mixed + HANDLE_NON_INDIEAUTH_REQUEST + = 'handleNonIndieAuthRequestCallback' + + + + + + +
                  +
                  +

                  + HASH_QUERY_STRING_KEY + +

                  + + + +

                  The query string parameter key used for storing the hash used for validating authorization request parameters.

                  + + + public + mixed + HASH_QUERY_STRING_KEY + = 'taproot_indieauth_server_hash' + + + +
                  + + + +
                  +
                  + + +
                  +

                  + Properties + +

                  + +
                  +

                  + $csrfMiddleware + + + +

                  + + + + + protected + MiddlewareInterface + $csrfMiddleware + + + + + +
                  +
                  +

                  + $exceptionTemplatePath + + + +

                  + + + + + protected + string + $exceptionTemplatePath + + + + + +
                  +
                  +

                  + $handleAuthenticationRequestCallback + + + +

                  + + + + + protected + mixed + $handleAuthenticationRequestCallback + + + + + +
                  +
                  +

                  + $handleNonIndieAuthRequest + + + +

                  + + + + + protected + mixed + $handleNonIndieAuthRequest + + + + + +
                  +
                  +

                  + $httpGetWithEffectiveUrl + + + +

                  + + + + + protected + mixed + $httpGetWithEffectiveUrl + + + + + +
                  +
                  +

                  + $logger + + + +

                  + + + + + protected + LoggerInterface + $logger + + + + + +
                  +
                  +

                  + $secret + + + +

                  + + + + + protected + string + $secret + + + + + +
                  + +
                  + +
                  +

                  + Methods + +

                  +
                  +

                  + __construct() + +

                  + + +

                  Constructor

                  + + + public + __construct(array<string|int, mixed> $config) : self + +

                  Server instances are configured by passing a config array to the constructor.

                  +

                  The following keys are required:

                  +
                    +
                  • +

                    handleAuthenticationRequestCallback: a callable with the signature +function (ServerRequestInterface $request, string $authenticationRedirect, ?string $normalizedMeUrl): array|ResponseInterface. +This function is called on IndieAuth authorization requests, after validating the query parameters.

                    +

                    It should check to see if $request is authenticated, then:

                    +
                      +
                    • If it is authenticated, return an array which MUST have a me key, mapping to the +canonical URL of the currently logged-in user. It may additionally have a profile key. These +keys will be stored in the authorization code and sent to the client, if successful.
                    • +
                    • If it is not authenticated, either present or redirect to an authentication flow. This flow MUST +redirect the logged-in used back to $authenticationRedirect.
                    • +
                    +

                    If the request has a valid me parameter, the canonicalized version of it is passed as +$normalizedMeUrl. Otherwise, this parameter is null. This parameter can optionally be used +as a suggestion for which user to log in as in a multi-user authentication flow, but should NOT +be considered valid data.

                    +

                    If redirecting to an existing authentication flow, this callable can usually be implemented as a +closure. The callable may also implement its own authentication logic. For an example, see +Callback\SingleUserPasswordAuthenticationCallback.

                    +
                  • +
                  • +

                    secret: A cryptographically random string with a minimum length of 64 characters. Used +to hash and subsequently verify request query parameters which get passed around.

                    +
                  • +
                  • +

                    tokenStorage: Either an object implementing Storage\TokenStorageInterface, or a string path, +which will be passed to Storage\FilesystemJsonStorage. This object handles persisting authorization +codes and access tokens, as well as implementation-specific parts of the exchange process which are +out of the scope of the Server class (e.g. lifetimes and expiry). Refer to the Storage\TokenStorageInterface +documentation for more details.

                    +
                  • +
                  +

                  The following keys may be required depending on which packages you have installed:

                  +
                    +
                  • +httpGetWithEffectiveUrl: must be a callable with the following signature: +function (string $url): array [ResponseInterface $response, string $effectiveUrl], where +$effectiveUrl is the final URL after following any redirects (unfortunately, neither the PSR-7 +Response nor the PSR-18 Client interfaces offer a standard way of getting this very important +data, hence the unusual return signature). If guzzlehttp/guzzle is installed, this parameter +will be created automatically. Otherwise, the user must provide their own callable.
                  • +
                  +

                  The following keys are optional:

                  +
                    +
                  • +authorizationForm: an instance of AuthorizationFormInterface. Defaults to DefaultAuthorizationForm. +Refer to that implementation if you wish to replace the consent screen/scope choosing/authorization form.
                  • +
                  • +csrfMiddleware: an instance of MiddlewareInterface, which will be used to CSRF-protect the +user-facing authorization flow. By default an instance of DoubleSubmitCookieCsrfMiddleware. +Refer to that implementation if you want to replace it with your own middleware — you will +likely have to either make sure your middleware sets the same request attribute, or alter your +templates accordingly.
                  • +
                  • +exceptionTemplatePath: string, path to a template which will be used for displaying user-facing +errors. Defaults to ../templates/default_exception_response.html.php, refer to that if you wish +to write your own template.
                  • +
                  • +handleNonIndieAuthRequestCallback: A callback with the following signature: +function (ServerRequestInterface $request): ?ResponseInterface which will be called if the +authorization endpoint gets a request which is not identified as an IndieAuth request or authorization +form submission request. You could use this to handle various requests e.g. client-side requests +made by your authentication or authorization pages, if it’s not convenient to put them elsewhere. +Returning null will result in a standard invalid_request error being returned.
                  • +
                  • +logger: An instance of LoggerInterface. Will be used for internal logging, and will also be set +as the logger for any objects passed in config which implement LoggerAwareInterface.
                  • +
                  +
                  + +
                  Parameters
                  +
                  +
                  + $config + : array<string|int, mixed> +
                  +
                  +

                  An array of configuration variables

                  +
                  + +
                  +
                  + + + +
                  Return values
                  + self + — +
                  + + +
                  + +
                  +

                  + handleAuthorizationEndpointRequest() + +

                  + + +

                  Handle Authorization Endpoint Request

                  + + + public + handleAuthorizationEndpointRequest(ServerRequestInterface $request) : ResponseInterface + +

                  This method handles all requests to your authorization endpoint, passing execution off to +other callbacks when necessary. The logical flow can be summarised as follows:

                  +
                    +
                  • If this request an auth code exchange for profile information, validate the request +and return a response or error response.
                  • +
                  • Otherwise, proceed, wrapping all execution in CSRF-protection middleware.
                  • +
                  • Validate the request’s indieauth authorization code request parameters, returning an +error response if any are missing or invalid.
                  • +
                  • Call the authentication callback +
                      +
                    • If the callback returned an instance of ResponseInterface, the user is not currently +logged in. Return the Response, which will presumably start an authentication flow.
                    • +
                    • Otherwise, the callback returned information about the currently logged-in user. Continue.
                    • +
                    +
                  • +
                  • If this request is an authorization form submission, validate the data, store and authorization +code and return a redirect response to the client redirect_uri with code data. On an error, return +an appropriate error response.
                  • +
                  • Otherwise, fetch the client_id, parse app data if present, validate the redirect_uri and present +the authorization form/consent screen to the user.
                  • +
                  • If none of the above apply, try calling the non-indieauth request handler. If it returns a Response, +return that, otherwise return an error response.
                  • +
                  +

                  This route should NOT be wrapped in additional CSRF-protection, due to the need to handle API +POST requests from the client. Make sure you call it from a route which is excluded from any +CSRF-protection you might be using. To customise the CSRF protection used internally, refer to the +__construct config array documentation for the csrfMiddleware key.

                  +

                  Most user-facing errors are thrown as instances of IndieAuthException, which are passed off to +handleException to be turned into an instance of ResponseInterface. If you want to customise +error behaviour, one way to do so is to subclass Server and override that method.

                  +
                  + +
                  Parameters
                  +
                  +
                  + $request + : ServerRequestInterface +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + ResponseInterface + — +
                  + + +
                  +
                  +

                  + handleTokenEndpointRequest() + +

                  + + +

                  Handle Token Endpoint Request

                  + + + public + handleTokenEndpointRequest(ServerRequestInterface $request) : ResponseInterface + +

                  Handles requests to the IndieAuth token endpoint. The logical flow can be summarised as follows:

                  +
                    +
                  • Check that the request is a code redeeming request. Return an error if not.
                  • +
                  • Ensure that all required parameters are present. Return an error if not.
                  • +
                  • Attempt to exchange the code parameter for an access token. Return an error if it fails.
                  • +
                  • Make sure the client_id and redirect_uri request parameters match those stored in the auth code. If not, revoke the access token and return an error.
                  • +
                  • Make sure the provided code_verifier hashes to the code_challenge stored in the auth code. If not, revoke the access token and return an error.
                  • +
                  • Make sure the granted scope stored in the auth code is not empty. If it is, revoke the access token and return an error.
                  • +
                  • Otherwise, return a success response containing information about the issued access token.
                  • +
                  +

                  This method must NOT be CSRF-protected as it accepts external requests from client apps.

                  +
                  + +
                  Parameters
                  +
                  +
                  + $request + : ServerRequestInterface +
                  +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + ResponseInterface + — +
                  + + +
                  +
                  +

                  + handleException() + +

                  + + +

                  Handle Exception

                  + + + protected + handleException(IndieAuthException $exception) : ResponseInterface + +

                  Turns an instance of IndieAuthException into an appropriate instance of ResponseInterface.

                  +
                  + +
                  Parameters
                  +
                  +
                  + $exception + : IndieAuthException +
                  +
                  + +
                  +
                  + + + +
                  Return values
                  + ResponseInterface + — +
                  + + +
                  +
                  + +
                  +
                  +
                  +
                  +

                  Search results

                  + +
                  +
                  +
                    +
                    +
                    +
                    +
                    +
                    + + +
                    + + + + diff --git a/docs/classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html b/docs/classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html new file mode 100644 index 0000000..1ad0d31 --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html @@ -0,0 +1,1209 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                    +

                    Documentation

                    + + + + + +
                    + +
                    +
                    + + + + +
                    + + +
                    +

                    + FilesystemJsonStorage + + + + + implements + TokenStorageInterface, LoggerAwareInterface + +

                    + + + + + + + + + + +

                    + Interfaces, Classes and Traits + +

                    + +
                    +
                    TokenStorageInterface
                    +
                    Token Storage Interface
                    +
                    LoggerAwareInterface
                    +
                    + + +
                    + + +

                    + Table of Contents + +

                    + +
                    +
                    + DEFAULT_ACCESS_TOKEN_TTL + +  = 60 * 60 * 24 * 7 +
                    +
                    + +
                    + DEFAULT_AUTH_CODE_TTL + +  = 60 * 5 +
                    +
                    + +
                    + TOKEN_LENGTH + +  = 64 +
                    +
                    + +
                    + $accessTokenTtl + +  : int +
                    +
                    + +
                    + $authCodeTtl + +  : int +
                    +
                    + +
                    + $logger + +  : LoggerInterface +
                    +
                    + +
                    + $path + +  : string +
                    +
                    + +
                    + $secret + +  : string +
                    +
                    + +
                    + __construct() + +  : mixed +
                    +
                    + +
                    + createAuthCode() + +  : Token|null +
                    +
                    Create Auth Code
                    + +
                    + delete() + +  : bool +
                    +
                    + +
                    + deleteExpiredTokens() + +  : int +
                    +
                    + +
                    + exchangeAuthCodeForAccessToken() + +  : Token|null +
                    +
                    Exchange Authorization Code for Access Token
                    + +
                    + get() + +  : array<string|int, mixed>|null +
                    +
                    + +
                    + getAccessToken() + +  : Token|null +
                    +
                    Get Access Token
                    + +
                    + getPath() + +  : string +
                    +
                    + +
                    + put() + +  : bool +
                    +
                    + +
                    + revokeAccessToken() + +  : bool +
                    +
                    Revoke Access Token
                    + +
                    + setLogger() + +  : mixed +
                    +
                    + +
                    + hash() + +  : string +
                    +
                    + +
                    + withLock() + +  : mixed +
                    +
                    + +
                    + + + + +
                    +

                    + Constants + +

                    +
                    +

                    + DEFAULT_ACCESS_TOKEN_TTL + +

                    + + + + + + public + mixed + DEFAULT_ACCESS_TOKEN_TTL + = 60 * 60 * 24 * 7 + + + + + + +
                    +
                    +

                    + DEFAULT_AUTH_CODE_TTL + +

                    + + + + + + public + mixed + DEFAULT_AUTH_CODE_TTL + = 60 * 5 + + + + + + +
                    + +
                    + + +
                    +

                    + Properties + +

                    + + + + + +
                    + +
                    +

                    + Methods + +

                    +
                    +

                    + __construct() + +

                    + + + + + public + __construct(string $path, string $secret[, int|null $authCodeTtl = null ][, int|null $accessTokenTtl = null ][, mixed $cleanUpNow = false ][, LoggerInterface|null $logger = null ]) : mixed + + +
                    Parameters
                    +
                    +
                    + $path + : string +
                    +
                    + +
                    +
                    + $secret + : string +
                    +
                    + +
                    +
                    + $authCodeTtl + : int|null + = null
                    +
                    + +
                    +
                    + $accessTokenTtl + : int|null + = null
                    +
                    + +
                    +
                    + $cleanUpNow + : mixed + = false
                    +
                    + +
                    +
                    + $logger + : LoggerInterface|null + = null
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + mixed + — +
                    + + +
                    +
                    +

                    + createAuthCode() + +

                    + + +

                    Create Auth Code

                    + + + public + createAuthCode(array<string|int, mixed> $data) : Token|null + +

                    This method is called on a valid authorization token request. The $data +array is guaranteed to have the following keys:

                    +
                      +
                    • +client_id: the validated client_id request parameter
                    • +
                    • +redirect_uri: the validated redirect_uri request parameter
                    • +
                    • +state: the state request parameter
                    • +
                    • +code_challenge: the code_challenge request parameter
                    • +
                    • +code_challenge_method: the code_challenge_method request parameter
                    • +
                    • +requested_scope: the value of the scope request parameter
                    • +
                    • +me: the value of the me key from the authentication result returned from the authentication request handler callback
                    • +
                    +

                    It may also have additional keys, which can come from the following locations:

                    +
                      +
                    • All keys from the the authentication request handler callback result which do not clash +with the keys listed above (with the exception of me, which is always present). Usually +this is a profile key, but you may choose to return additional data from the authentication +callback, which will be present in $data.
                    • +
                    • Any keys added by the transformAuthorizationCode method on the currently active instance +of Taproot\IndieAuth\Callback\AuthorizationFormInterface. Typically this is the scope +key, which is a valid space-separated scope string listing the scopes granted by the user on +the consent screen. Other implementations of AuthorizationFormInterface may add additional +data, such as custom token-specific settings, or a custom token lifetime.
                    • +
                    +

                    This method should store the data passed to it, generate a corresponding authorization code, +and return an instance of Storage\Token containing both. Implementations will usually add +an expiry time, usually under the valid_until key.

                    +

                    The method call and data is structured such that implementations have a lot of flexibility +about how to store authorization code data. It could be a record in an auth code database +table, a record in a table which is used for both auth codes and access tokens, or even +a stateless self-encrypted token — note that in the latter case, you must persist a copy +of the auth code with its exchanged access token to check against, in order to prevent it +being exchanged more than once.

                    +

                    On an error, return null. The reason for the error is irrelevant for calling code, but it’s +recommended to log it internally for reference. For the same reason, this method should not +throw exceptions.

                    +
                    + +
                    Parameters
                    +
                    +
                    + $data + : array<string|int, mixed> +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + Token|null + — +
                    + + +
                    +
                    +

                    + delete() + +

                    + + + + + public + delete(string $key) : bool + + +
                    Parameters
                    +
                    +
                    + $key + : string +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + bool + — +
                    + + +
                    +
                    +

                    + deleteExpiredTokens() + +

                    + + + + + public + deleteExpiredTokens() : int + + + + + +
                    Return values
                    + int + — +
                    + + +
                    +
                    +

                    + exchangeAuthCodeForAccessToken() + +

                    + + +

                    Exchange Authorization Code for Access Token

                    + + + public + exchangeAuthCodeForAccessToken(string $code) : Token|null + +

                    Attempt to exchange an authorization code identified by $code for +an access token, returning it in a Token on success and null on error.

                    +

                    This method is called at the beginning of a code exchange request, before +further error checking or validation is applied. On an error, the created +access token is immediately revoked via revokeAccessToken().

                    +

                    For this reason, the token data in the returned Token object MUST include +the client_id and redirect_uri parameters associated with the +authorization code, as these are used by the IndieAuth Server for further +validation.

                    +

                    This method is responsible for ensuring that the matched auth code is +not expired. If it is, it should return null, presumably after deleting +the corresponding authorization code record.

                    +

                    If the exchanged access token should expire, this method should set its +expiry time, usually in a valid_until key.

                    +
                    + +
                    Parameters
                    +
                    +
                    + $code + : string +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + Token|null + — +
                    + + +
                    +
                    +

                    + get() + +

                    + + + + + public + get(string $key) : array<string|int, mixed>|null + + +
                    Parameters
                    +
                    +
                    + $key + : string +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + array<string|int, mixed>|null + — +
                    + + +
                    +
                    +

                    + getAccessToken() + +

                    + + +

                    Get Access Token

                    + + + public + getAccessToken(string $token) : Token|null + +

                    Fetch access token data identified by the token $token, returning +null if it is expired or invalid. The data should be structured in +exactly the same way it was stored by exchangeAuthCodeForAccessToken.

                    +
                    + +
                    Parameters
                    +
                    +
                    + $token + : string +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + Token|null + — +
                    + + +
                    +
                    +

                    + getPath() + +

                    + + + + + public + getPath(string $key) : string + + +
                    Parameters
                    +
                    +
                    + $key + : string +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + string + — +
                    + + +
                    +
                    +

                    + put() + +

                    + + + + + public + put(string $key, array<string|int, mixed> $data) : bool + + +
                    Parameters
                    +
                    +
                    + $key + : string +
                    +
                    + +
                    +
                    + $data + : array<string|int, mixed> +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + bool + — +
                    + + +
                    +
                    +

                    + revokeAccessToken() + +

                    + + +

                    Revoke Access Token

                    + + + public + revokeAccessToken(string $token) : bool + +

                    Revoke the access token identified by $token. Return true on success, +or false on error, including if the token did not exist.

                    +
                    + +
                    Parameters
                    +
                    +
                    + $token + : string +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + bool + — +
                    + + +
                    +
                    +

                    + setLogger() + +

                    + + + + + public + setLogger(LoggerInterface $logger) : mixed + + +
                    Parameters
                    +
                    +
                    + $logger + : LoggerInterface +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + mixed + — +
                    + + +
                    +
                    +

                    + hash() + +

                    + + + + + protected + hash(string $token) : string + + +
                    Parameters
                    +
                    +
                    + $token + : string +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + string + — +
                    + + +
                    +
                    +

                    + withLock() + +

                    + + + + + protected + withLock(string $path, string $mode, callable $callback) : mixed + + +
                    Parameters
                    +
                    +
                    + $path + : string +
                    +
                    + +
                    +
                    + $mode + : string +
                    +
                    + +
                    +
                    + $callback + : callable +
                    +
                    + +
                    +
                    + + + +
                    Return values
                    + mixed + — +
                    + + +
                    +
                    + +
                    +
                    +
                    +
                    +

                    Search results

                    + +
                    +
                    +
                      +
                      +
                      +
                      +
                      +
                      + + +
                      + + + + diff --git a/docs/classes/Taproot-IndieAuth-Storage-Sqlite3Storage.html b/docs/classes/Taproot-IndieAuth-Storage-Sqlite3Storage.html new file mode 100644 index 0000000..fa57623 --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-Storage-Sqlite3Storage.html @@ -0,0 +1,149 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                      +

                      Documentation

                      + + + + + +
                      + +
                      +
                      + + + + +
                      + + + +
                      +
                      +
                      +

                      Search results

                      + +
                      +
                      +
                        +
                        +
                        +
                        +
                        +
                        + + +
                        + + + + diff --git a/docs/classes/Taproot-IndieAuth-Storage-Token.html b/docs/classes/Taproot-IndieAuth-Storage-Token.html new file mode 100644 index 0000000..04c32fc --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-Storage-Token.html @@ -0,0 +1,454 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                        +

                        Documentation

                        + + + + + +
                        + +
                        +
                        + + + + +
                        + + +
                        +

                        + Token + + + + + implements + JsonSerializable + +

                        + + + + + + + + + + +

                        + Interfaces, Classes and Traits + +

                        + +
                        +
                        JsonSerializable
                        +
                        + + +
                        + + +

                        + Table of Contents + +

                        + +
                        +
                        + $data + +  : array<string|int, mixed> +
                        +
                        + +
                        + $key + +  : string +
                        +
                        + +
                        + __construct() + +  : mixed +
                        +
                        + +
                        + __toString() + +  : mixed +
                        +
                        + +
                        + getData() + +  : array<string|int, mixed> +
                        +
                        + +
                        + getKey() + +  : string +
                        +
                        + +
                        + jsonSerialize() + +  : mixed +
                        +
                        + +
                        + + + + + + +
                        +

                        + Properties + +

                        +
                        +

                        + $data + + + +

                        + + + + + protected + array<string|int, mixed> + $data + + + + + +
                        +
                        +

                        + $key + + + +

                        + + + + + protected + string + $key + + + + + +
                        +
                        + +
                        +

                        + Methods + +

                        +
                        +

                        + __construct() + +

                        + + + + + public + __construct(string $key, array<string|int, mixed> $data) : mixed + + +
                        Parameters
                        +
                        +
                        + $key + : string +
                        +
                        + +
                        +
                        + $data + : array<string|int, mixed> +
                        +
                        + +
                        +
                        + + + +
                        Return values
                        + mixed + — +
                        + + +
                        +
                        +

                        + __toString() + +

                        + + + + + public + __toString() : mixed + + + + + +
                        Return values
                        + mixed + — +
                        + + +
                        +
                        +

                        + getData() + +

                        + + + + + public + getData() : array<string|int, mixed> + + + + + +
                        Return values
                        + array<string|int, mixed> + — +
                        + + +
                        +
                        +

                        + getKey() + +

                        + + + + + public + getKey() : string + + + + + +
                        Return values
                        + string + — +
                        + + +
                        +
                        +

                        + jsonSerialize() + +

                        + + + + + public + jsonSerialize() : mixed + + + + + +
                        Return values
                        + mixed + — +
                        + + +
                        +
                        + +
                        +
                        +
                        +
                        +

                        Search results

                        + +
                        +
                        +
                          +
                          +
                          +
                          +
                          +
                          + + +
                          + + + + diff --git a/docs/classes/Taproot-IndieAuth-Storage-TokenStorageInterface.html b/docs/classes/Taproot-IndieAuth-Storage-TokenStorageInterface.html new file mode 100644 index 0000000..f30be08 --- /dev/null +++ b/docs/classes/Taproot-IndieAuth-Storage-TokenStorageInterface.html @@ -0,0 +1,433 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                          +

                          Documentation

                          + + + + + +
                          + +
                          +
                          + + + + +
                          + + +
                          +

                          + TokenStorageInterface +

                          + + + +

                          Token Storage Interface

                          + +

                          This interface defines the bare minimum methods required by the Server class in order to +implement auth code issuing and exchange flows, as well as to let external code get access +tokens (for validating requests authenticated by an access_token) and revoke access tokens.

                          +

                          The contract made between Server and implementations of TokenStorageInterface can broadly +be summarized as follows:

                          +
                            +
                          • The Server class is responsible for performing all validation which is +defined in the IndieAuth spec and is not implementation-specific. For example: checking +validity of all the authorization request parameters, checking that client_id, request_uri +and code_verifier parameters in token exchange requests match with the stored data.
                          • +
                          • The TokenStorageInterface class is responsible for performing implementation-specific +validation, such as assigning and checking expiry times for auth codes and access tokens.
                          • +
                          +

                          Implementations of TokenStorageInterface will usually implement additional methods to allow +for lower-level querying, saving, updating and deletion of token data. These can be used to, +for example, implement a UI for users to review and revoke currently valid access tokens.

                          +

                          The behaviour of TokenStorageInterface is somewhat coupled with the implementation of your +authentication handler callback (documented in Server::__construct) and AuthorizationFormInterface, +so you should refer to the documentation for both while implementing TokenStorageInterface.

                          +

                          Periodic deletion of expired tokens is out of the scope of this interface. Implementations may +choose to offer a clean-up method, and potentially the option to call it once automatically +on instantiation.

                          +

                          None of the methods defined on TokenStorageInterface should throw exceptions. Failure, for any +reason, is indicated by returning either null or false, depending on the method.

                          +
                          + + + + + + + + +

                          + Table of Contents + +

                          + +
                          +
                          + createAuthCode() + +  : Token|null +
                          +
                          Create Auth Code
                          + +
                          + exchangeAuthCodeForAccessToken() + +  : Token|null +
                          +
                          Exchange Authorization Code for Access Token
                          + +
                          + getAccessToken() + +  : Token|null +
                          +
                          Get Access Token
                          + +
                          + revokeAccessToken() + +  : bool +
                          +
                          Revoke Access Token
                          + +
                          + + + + + +
                          +

                          + Methods + +

                          +
                          +

                          + createAuthCode() + +

                          + + +

                          Create Auth Code

                          + + + public + createAuthCode(array<string|int, mixed> $data) : Token|null + +

                          This method is called on a valid authorization token request. The $data +array is guaranteed to have the following keys:

                          +
                            +
                          • +client_id: the validated client_id request parameter
                          • +
                          • +redirect_uri: the validated redirect_uri request parameter
                          • +
                          • +state: the state request parameter
                          • +
                          • +code_challenge: the code_challenge request parameter
                          • +
                          • +code_challenge_method: the code_challenge_method request parameter
                          • +
                          • +requested_scope: the value of the scope request parameter
                          • +
                          • +me: the value of the me key from the authentication result returned from the authentication request handler callback
                          • +
                          +

                          It may also have additional keys, which can come from the following locations:

                          +
                            +
                          • All keys from the the authentication request handler callback result which do not clash +with the keys listed above (with the exception of me, which is always present). Usually +this is a profile key, but you may choose to return additional data from the authentication +callback, which will be present in $data.
                          • +
                          • Any keys added by the transformAuthorizationCode method on the currently active instance +of Taproot\IndieAuth\Callback\AuthorizationFormInterface. Typically this is the scope +key, which is a valid space-separated scope string listing the scopes granted by the user on +the consent screen. Other implementations of AuthorizationFormInterface may add additional +data, such as custom token-specific settings, or a custom token lifetime.
                          • +
                          +

                          This method should store the data passed to it, generate a corresponding authorization code, +and return an instance of Storage\Token containing both. Implementations will usually add +an expiry time, usually under the valid_until key.

                          +

                          The method call and data is structured such that implementations have a lot of flexibility +about how to store authorization code data. It could be a record in an auth code database +table, a record in a table which is used for both auth codes and access tokens, or even +a stateless self-encrypted token — note that in the latter case, you must persist a copy +of the auth code with its exchanged access token to check against, in order to prevent it +being exchanged more than once.

                          +

                          On an error, return null. The reason for the error is irrelevant for calling code, but it’s +recommended to log it internally for reference. For the same reason, this method should not +throw exceptions.

                          +
                          + +
                          Parameters
                          +
                          +
                          + $data + : array<string|int, mixed> +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + Token|null + — +
                          + + +
                          +
                          +

                          + exchangeAuthCodeForAccessToken() + +

                          + + +

                          Exchange Authorization Code for Access Token

                          + + + public + exchangeAuthCodeForAccessToken(string $code) : Token|null + +

                          Attempt to exchange an authorization code identified by $code for +an access token, returning it in a Token on success and null on error.

                          +

                          This method is called at the beginning of a code exchange request, before +further error checking or validation is applied. On an error, the created +access token is immediately revoked via revokeAccessToken().

                          +

                          For this reason, the token data in the returned Token object MUST include +the client_id and redirect_uri parameters associated with the +authorization code, as these are used by the IndieAuth Server for further +validation.

                          +

                          This method is responsible for ensuring that the matched auth code is +not expired. If it is, it should return null, presumably after deleting +the corresponding authorization code record.

                          +

                          If the exchanged access token should expire, this method should set its +expiry time, usually in a valid_until key.

                          +
                          + +
                          Parameters
                          +
                          +
                          + $code + : string +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + Token|null + — +
                          + + +
                          +
                          +

                          + getAccessToken() + +

                          + + +

                          Get Access Token

                          + + + public + getAccessToken(string $token) : Token|null + +

                          Fetch access token data identified by the token $token, returning +null if it is expired or invalid. The data should be structured in +exactly the same way it was stored by exchangeAuthCodeForAccessToken.

                          +
                          + +
                          Parameters
                          +
                          +
                          + $token + : string +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + Token|null + — +
                          + + +
                          +
                          +

                          + revokeAccessToken() + +

                          + + +

                          Revoke Access Token

                          + + + public + revokeAccessToken(string $token) : bool + +

                          Revoke the access token identified by $token. Return true on success, +or false on error, including if the token did not exist.

                          +
                          + +
                          Parameters
                          +
                          +
                          + $token + : string +
                          +
                          + +
                          +
                          + + + +
                          Return values
                          + bool + — +
                          + + +
                          +
                          + +
                          +
                          +
                          +
                          +

                          Search results

                          + +
                          +
                          +
                            +
                            +
                            +
                            +
                            +
                            + + +
                            + + + + diff --git a/docs/css/base.css b/docs/css/base.css new file mode 100644 index 0000000..3fa8f23 --- /dev/null +++ b/docs/css/base.css @@ -0,0 +1,1002 @@ + +:root { + /* Typography */ + --font-primary: 'Source Sans Pro', Helvetica, Arial, sans-serif; + --font-secondary: 'Source Sans Pro', Helvetica, Arial, sans-serif; + --line-height--primary: 1.6; + --letter-spacing--primary: .05rem; + --text-base-size: 1em; + --text-scale-ratio: 1.2; + + --text-xxs: calc(var(--text-base-size) / var(--text-scale-ratio) / var(--text-scale-ratio) / var(--text-scale-ratio)); + --text-xs: calc(var(--text-base-size) / var(--text-scale-ratio) / var(--text-scale-ratio)); + --text-sm: calc(var(--text-base-size) / var(--text-scale-ratio)); + --text-md: var(--text-base-size); + --text-lg: calc(var(--text-base-size) * var(--text-scale-ratio)); + --text-xl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio)); + --text-xxl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio)); + --text-xxxl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio)); + --text-xxxxl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio)); + --text-xxxxxl: calc(var(--text-base-size) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio) * var(--text-scale-ratio)); + + /* Colors */ + --primary-color: hsl(96, 57%, 60%); + --primary-color-darken: hsl(96, 57%, 40%); + --primary-color-darker: hsl(96, 57%, 20%); + --primary-color-lighten: hsl(96, 57%, 80%); + --primary-color-lighter: hsl(96, 57%, 97%); + --dark-gray: #d1d1d1; + --light-gray: #f0f0f0; + + --text-color: #4b3b40; + + --header-height: var(--spacing-xxxxl); + --header-bg-color: var(--primary-color); + --code-background-color: #f7faf5; + --code-border-color: #d6e7cb; + --button-border-color: var(--primary-color-darken); + --button-color: transparent; + --button-color-primary: var(--primary-color); + --button-text-color: #555; + --button-text-color-primary: white; + --popover-background-color: rgba(255, 255, 255, 0.75); + --link-color-primary: var(--primary-color-darken); + --link-hover-color-primary: var(--primary-color-darker); + --form-field-border-color: var(--dark-gray); + --form-field-color: #fff; + --admonition-success-color: var(--primary-color); + --admonition-border-color: silver; + --table-separator-color: var(--primary-color-lighten); + --title-text-color: var(--primary-color); + + --sidebar-border-color: var(--primary-color-lighten); + + /* Grid */ + --container-width: 1400px; + + /* Spacing */ + --spacing-base-size: 1rem; + --spacing-scale-ratio: 1.5; + + --spacing-xxxs: calc(var(--spacing-base-size) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio)); + --spacing-xxs: calc(var(--spacing-base-size) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio)); + --spacing-xs: calc(var(--spacing-base-size) / var(--spacing-scale-ratio) / var(--spacing-scale-ratio)); + --spacing-sm: calc(var(--spacing-base-size) / var(--spacing-scale-ratio)); + --spacing-md: var(--spacing-base-size); + --spacing-lg: calc(var(--spacing-base-size) * var(--spacing-scale-ratio)); + --spacing-xl: calc(var(--spacing-base-size) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio)); + --spacing-xxl: calc(var(--spacing-base-size) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio)); + --spacing-xxxl: calc(var(--spacing-base-size) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio)); + --spacing-xxxxl: calc(var(--spacing-base-size) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio) * var(--spacing-scale-ratio)); + + --border-radius-base-size: 3px; +} + +/* Base Styles +-------------------------------------------------- */ +body { + color: var(--text-color); + font-family: var(--font-primary); + font-size: var(--text-md); + letter-spacing: var(--letter-spacing--primary); + line-height: var(--line-height--primary); +} + +.phpdocumentor h1, +.phpdocumentor h2, +.phpdocumentor h3, +.phpdocumentor h4, +.phpdocumentor h5, +.phpdocumentor h6 { + margin-bottom: var(--spacing-lg); + margin-top: var(--spacing-lg); + font-weight: 600; +} + +.phpdocumentor h1 { + font-size: var(--text-xxxxl); + letter-spacing: var(--letter-spacing--primary); + line-height: 1.2; + margin-top: 0; +} + +.phpdocumentor h2 { + font-size: var(--text-xxxl); + letter-spacing: var(--letter-spacing--primary); + line-height: 1.25; + margin-top: 0; +} + +.phpdocumentor h3 { + font-size: var(--text-xxl); + letter-spacing: var(--letter-spacing--primary); + line-height: 1.3; +} + +.phpdocumentor h4 { + font-size: var(--text-xl); + letter-spacing: calc(var(--letter-spacing--primary) / 2); + line-height: 1.35; + margin-bottom: var(--spacing-md); +} + +.phpdocumentor h5 { + font-size: var(--text-lg); + letter-spacing: calc(var(--letter-spacing--primary) / 4); + line-height: 1.5; + margin-bottom: var(--spacing-md); + margin-top: var(--spacing-md); +} + +.phpdocumentor h6 { + font-size: var(--text-md); + letter-spacing: 0; + line-height: var(--line-height--primary); + margin-bottom: var(--spacing-md); + margin-top: var(--spacing-md); +} + +.phpdocumentor h1 .headerlink, +.phpdocumentor h2 .headerlink, +.phpdocumentor h3 .headerlink, +.phpdocumentor h4 .headerlink, +.phpdocumentor h5 .headerlink, +.phpdocumentor h6 .headerlink +{ + transition: all .3s ease-in-out; + opacity: 0; + text-decoration: none; + color: silver; + font-size: 80%; +} + +.phpdocumentor h1:hover .headerlink, +.phpdocumentor h2:hover .headerlink, +.phpdocumentor h3:hover .headerlink, +.phpdocumentor h4:hover .headerlink, +.phpdocumentor h5:hover .headerlink, +.phpdocumentor h6:hover .headerlink +{ + opacity: 1; +} +.phpdocumentor p { + margin-top: 0; + margin-bottom: var(--spacing-md); +} +.phpdocumentor figure { + margin-bottom: var(--spacing-md); +} +.phpdocumentor-line { + border-top: 1px solid #E1E1E1; + border-width: 0; + margin-bottom: var(--spacing-xxl); + margin-top: var(--spacing-xxl); +} +.phpdocumentor-section { + box-sizing: border-box; + margin: 0 auto; + max-width: var(--container-width); + padding: 0 var(--spacing-lg); + position: relative; + width: 100%; +} + +@media (min-width: 1200px) { + .phpdocumentor-section { + padding: 0; + width: 95%; + } +} +.phpdocumentor-column { + box-sizing: border-box; + float: left; + width: 100%; +} + +@media (min-width: 550px) { + .phpdocumentor-column { + margin-left: 4%; + } + + .phpdocumentor-column:first-child { + margin-left: 0; + } + + .-one.phpdocumentor-column { + width: 4.66666666667%; + } + + .-two.phpdocumentor-column { + width: 13.3333333333%; + } + + .-three.phpdocumentor-column { + width: 22%; + } + + .-four.phpdocumentor-column { + width: 30.6666666667%; + } + + .-five.phpdocumentor-column { + width: 39.3333333333%; + } + + .-six.phpdocumentor-column { + width: 48%; + } + + .-seven.phpdocumentor-column { + width: 56.6666666667%; + } + + .-eight.phpdocumentor-column { + width: 65.3333333333%; + } + + .-nine.phpdocumentor-column { + width: 74.0%; + } + + .-ten.phpdocumentor-column { + width: 82.6666666667%; + } + + .-eleven.phpdocumentor-column { + width: 91.3333333333%; + } + + .-twelve.phpdocumentor-column { + margin-left: 0; + width: 100%; + } + + .-one-third.phpdocumentor-column { + width: 30.6666666667%; + } + + .-two-thirds.phpdocumentor-column { + width: 65.3333333333%; + } + + .-one-half.phpdocumentor-column { + width: 48%; + } + + /* Offsets */ + .-offset-by-one.phpdocumentor-column { + margin-left: 8.66666666667%; + } + + .-offset-by-two.phpdocumentor-column { + margin-left: 17.3333333333%; + } + + .-offset-by-three.phpdocumentor-column { + margin-left: 26%; + } + + .-offset-by-four.phpdocumentor-column { + margin-left: 34.6666666667%; + } + + .-offset-by-five.phpdocumentor-column { + margin-left: 43.3333333333%; + } + + .-offset-by-six.phpdocumentor-column { + margin-left: 52%; + } + + .-offset-by-seven.phpdocumentor-column { + margin-left: 60.6666666667%; + } + + .-offset-by-eight.phpdocumentor-column { + margin-left: 69.3333333333%; + } + + .-offset-by-nine.phpdocumentor-column { + margin-left: 78.0%; + } + + .-offset-by-ten.phpdocumentor-column { + margin-left: 86.6666666667%; + } + + .-offset-by-eleven.phpdocumentor-column { + margin-left: 95.3333333333%; + } + + .-offset-by-one-third.phpdocumentor-column { + margin-left: 34.6666666667%; + } + + .-offset-by-two-thirds.phpdocumentor-column { + margin-left: 69.3333333333%; + } + + .-offset-by-one-half.phpdocumentor-column { + margin-left: 52%; + } +} +.phpdocumentor a { + color: var(--link-color-primary); +} + +.phpdocumentor a:hover { + color: var(--link-hover-color-primary); +} +.phpdocumentor-button { + background-color: var(--button-color); + border: 1px solid var(--button-border-color); + border-radius: var(--border-radius-base-size); + box-sizing: border-box; + color: var(--button-text-color); + cursor: pointer; + display: inline-block; + font-size: var(--text-sm); + font-weight: 600; + height: 38px; + letter-spacing: .1rem; + line-height: 38px; + padding: 0 var(--spacing-xxl); + text-align: center; + text-decoration: none; + text-transform: uppercase; + white-space: nowrap; + margin-bottom: var(--spacing-md); +} + +.phpdocumentor-button .-wide { + width: 100%; +} + +.phpdocumentor-button:hover, +.phpdocumentor-button:focus { + border-color: #888; + color: #333; + outline: 0; +} + +.phpdocumentor-button.-primary { + background-color: var(--button-color-primary); + border-color: var(--button-color-primary); + color: var(--button-text-color-primary); +} + +.phpdocumentor-button.-primary:hover, +.phpdocumentor-button.-primary:focus { + background-color: var(--link-color-primary); + border-color: var(--link-color-primary); + color: var(--button-text-color-primary); +} +.phpdocumentor form { + margin-bottom: var(--spacing-md); +} + +.phpdocumentor-field { + background-color: var(--form-field-color); + border: 1px solid var(--form-field-border-color); + border-radius: var(--border-radius-base-size); + box-shadow: none; + box-sizing: border-box; + height: 38px; + padding: var(--spacing-xxxs) var(--spacing-xxs); /* The 6px vertically centers text on FF, ignored by Webkit */ + margin-bottom: var(--spacing-md); +} + +/* Removes awkward default styles on some inputs for iOS */ +input[type="email"], +input[type="number"], +input[type="search"], +input[type="text"], +input[type="tel"], +input[type="url"], +input[type="password"], +textarea { + -moz-appearance: none; + -webkit-appearance: none; + appearance: none; +} + +.phpdocumentor-textarea { + min-height: 65px; + padding-bottom: var(--spacing-xxxs); + padding-top: var(--spacing-xxxs); +} + +.phpdocumentor-field:focus { + border: 1px solid var(--button-color-primary); + outline: 0; +} + +.phpdocumentor-label { + display: block; + margin-bottom: var(--spacing-xs); +} + +.phpdocumentor-fieldset { + border-width: 0; + padding: 0; +} + +input[type="checkbox"].phpdocumentor-field, +input[type="radio"].phpdocumentor-field { + display: inline; +} +div.phpdocumentor-list > ul, +ul.phpdocumentor-list { + list-style: circle inside; +} + +ol.phpdocumentor-list { + list-style: decimal inside; +} + +div.phpdocumentor-list > ul, +ol.phpdocumentor-list, +ul.phpdocumentor-list { + margin-top: 0; + padding-left: 0; + margin-bottom: var(--spacing-md); +} + +dl { + margin-bottom: var(--spacing-md); +} + +div.phpdocumentor-list > ul ul, +ul.phpdocumentor-list ul.phpdocumentor-list, +ul.phpdocumentor-list ol.phpdocumentor-list, +ol.phpdocumentor-list ol.phpdocumentor-list, +ol.phpdocumentor-list ul.phpdocumentor-list { + font-size: var(--text-sm); + margin: var(--spacing-xs) 0 var(--spacing-xs) calc(var(--spacing-xs) * 2); +} + +li.phpdocumentor-list { + margin-bottom: var(--spacing-md); +} +.phpdocumentor pre { + margin-bottom: var(--spacing-md); +} + +.phpdocumentor-code { + background: var(--code-background-color); + border: 1px solid var(--code-border-color); + border-radius: var(--border-radius-base-size); + font-size: var(--text-sm); + padding: var(--spacing-sm) var(--spacing-md); + width: 100%; + box-sizing: border-box; +} + +pre > .phpdocumentor-code { + display: block; + white-space: pre; +} +.phpdocumentor blockquote { + border-left: 4px solid var(--primary-color); + margin: var(--spacing-md) 0; + padding: var(--spacing-xs) var(--spacing-sm); + color: var(--primary-color-darker); + font-style: italic; + font-size: var(--text-sm); +} +.phpdocumentor table { + margin-bottom: var(--spacing-md); +} + +th.phpdocumentor-heading, +td.phpdocumentor-cell { + border-bottom: 1px solid var(--table-separator-color); + padding: var(--spacing-sm) var(--spacing-md); + text-align: left; +} + +th.phpdocumentor-heading:first-child, +td.phpdocumentor-cell:first-child { + padding-left: 0; +} + +th.phpdocumentor-heading:last-child, +td.phpdocumentor-cell:last-child { + padding-right: 0; +} + +.phpdocumentor-header { + display: flex; + flex-direction: row; + align-items: stretch; + flex-wrap: wrap; + justify-content: space-between; + height: auto; + padding: var(--spacing-md) var(--spacing-md); +} + +.phpdocumentor-header__menu-button { + position: absolute; + top: -100%; + left: -100%; +} + +.phpdocumentor-header__menu-icon { + font-size: 2rem; + color: var(--primary-color); +} + +.phpdocumentor-header__menu-button:checked ~ .phpdocumentor-topnav { + max-height: 250px; + padding-top: var(--spacing-md); +} + +@media (min-width: 1000px) { + .phpdocumentor-header { + flex-direction: row; + padding: var(--spacing-lg) var(--spacing-lg); + min-height: var(--header-height); + } + + .phpdocumentor-header__menu-icon { + display: none; + } +} + +@media (min-width: 1000px) { + .phpdocumentor-header { + padding-top: 0; + padding-bottom: 0; + } +} +@media (min-width: 1200px) { + .phpdocumentor-header { + padding: 0; + } +} +.phpdocumentor-title { + box-sizing: border-box; + color: var(--title-text-color); + font-size: var(--text-xxl); + letter-spacing: .05rem; + font-weight: normal; + width: auto; + margin: 0; + display: flex; + align-items: center; +} + +.phpdocumentor-title.-without-divider { + border: none; +} + +.phpdocumentor-title__link { + transition: all .3s ease-out; + display: flex; + color: var(--title-text-color); + text-decoration: none; + font-weight: normal; + white-space: nowrap; + transform: scale(.75); + transform-origin: left; +} + +.phpdocumentor-title__link:hover { + transform: perspective(15rem) translateX(.5rem); + font-weight: 600; +} + +@media (min-width: 1000px) { + .phpdocumentor-title { + width: 30.6666666667%; + border-right: var(--sidebar-border-color) solid 1px; + } + + .phpdocumentor-title__link { + transform-origin: left; + } +} + +@media (min-width: 1000px) { + .phpdocumentor-title__link { + transform: scale(.85); + } +} + +@media (min-width: 1200px) { + .phpdocumentor-title__link { + transform: scale(1); + } +} +.phpdocumentor-topnav { + display: flex; + align-items: center; + margin: 0; + max-height: 0; + overflow: hidden; + transition: max-height 0.2s ease-out; + flex-basis: 100%; +} + +.phpdocumentor-topnav__menu { + text-align: right; + list-style: none; + margin: 0; + padding: 0; + flex: 1; + display: flex; + flex-flow: row wrap; + justify-content: center; +} + +.phpdocumentor-topnav__menu-item { + margin: 0; + width: 100%; + display: inline-block; + text-align: center; + padding: var(--spacing-sm) 0 +} + +.phpdocumentor-topnav__menu-item.-social { + width: auto; + padding: var(--spacing-sm) +} + +.phpdocumentor-topnav__menu-item a { + display: inline-block; + color: var(--text-color); + text-decoration: none; + font-size: var(--text-lg); + transition: all .3s ease-out; + border-bottom: 1px dotted transparent; + line-height: 1; +} + +.phpdocumentor-topnav__menu-item a:hover { + transform: perspective(15rem) translateY(.1rem); + border-bottom: 1px dotted var(--text-color); +} + +@media (min-width: 1000px) { + .phpdocumentor-topnav { + max-height: none; + overflow: visible; + flex-basis: auto; + } + + .phpdocumentor-topnav__menu { + display: flex; + flex-flow: row wrap; + justify-content: flex-end; + } + + .phpdocumentor-topnav__menu-item, + .phpdocumentor-topnav__menu-item.-social { + width: auto; + display: inline; + text-align: right; + padding: 0 0 0 var(--spacing-md) + } +} +.phpdocumentor-sidebar { + margin: 0; + overflow: hidden; + max-height: 0; +} + +.phpdocumentor .phpdocumentor-sidebar .phpdocumentor-list { + padding-top: var(--spacing-xs); + padding-left: var(--spacing-md); + list-style: none; +} + +.phpdocumentor .phpdocumentor-sidebar li { + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + padding: 0 0 var(--spacing-xxxs) var(--spacing-md); +} + +.phpdocumentor .phpdocumentor-sidebar abbr, +.phpdocumentor .phpdocumentor-sidebar a { + text-decoration: none; + border-bottom: none; + color: var(--text-color); + font-size: var(--text-md); + padding-left: 0; + transition: padding-left .4s ease-out; +} + +.phpdocumentor .phpdocumentor-sidebar a:hover { + padding-left: 5px; + font-weight: 600; +} + +.phpdocumentor .phpdocumentor-sidebar__category > * { + border-left: 1px solid var(--primary-color-lighten); +} + +.phpdocumentor .phpdocumentor-sidebar__category { + margin-bottom: var(--spacing-lg); +} + +.phpdocumentor .phpdocumentor-sidebar__category-header { + font-size: var(--text-md); + margin-bottom: var(--spacing-xs); + color: var(--link-color-primary); + font-weight: 600; + border-left: 0; +} + +.phpdocumentor .phpdocumentor-sidebar__root-package, +.phpdocumentor .phpdocumentor-sidebar__root-namespace { + font-size: var(--text-md); + margin: 0; + padding-top: var(--spacing-xs); + padding-left: var(--spacing-md); + color: var(--text-color); + font-weight: normal; +} + +@media (min-width: 550px) { + .phpdocumentor-sidebar { + border-right: var(--sidebar-border-color) solid 1px; + } +} + +.phpdocumentor-sidebar__menu-button { + position: absolute; + top: -100%; + left: -100%; +} + +.phpdocumentor-sidebar__menu-icon { + font-size: var(--text-md); + font-weight: 600; + background: var(--primary-color); + color: white; + margin: 0 0 var(--spacing-lg); + display: block; + padding: var(--spacing-sm); + text-align: center; + border-radius: 3px; + text-transform: uppercase; + letter-spacing: .15rem; +} + +.phpdocumentor-sidebar__menu-button:checked ~ .phpdocumentor-sidebar { + max-height: 100%; + padding-top: var(--spacing-md); +} + +@media (min-width: 550px) { + .phpdocumentor-sidebar { + overflow: visible; + max-height: 100%; + } + + .phpdocumentor-sidebar__menu-icon { + display: none; + } +} +.phpdocumentor-admonition { + border: 1px solid var(--admonition-border-color); + border-radius: var(--border-radius-base-size); + border-color: var(--primary-color-lighten); + background-color: var(--primary-color-lighter); + font-size: 85%; + padding: .5rem; + margin: 2rem 0; + display: flex; + flex-direction: row; +} + +.phpdocumentor-admonition--success { + border-color: var(--admonition-success-color); +} + +.phpdocumentor-admonition__icon { + font-size: 2rem; + margin: .75rem 0.75rem 1.25rem 0.5rem; + color: var(--primary-color); +} +.phpdocumentor ul.phpdocumentor-breadcrumbs { + font-size: var(--text-md); + list-style: none; + margin: 0; + padding: 0; +} + +.phpdocumentor ul.phpdocumentor-breadcrumbs a { + color: var(--text-color); + text-decoration: none; +} + +.phpdocumentor ul.phpdocumentor-breadcrumbs > li { + display: inline-block; + margin: 0; +} + +.phpdocumentor ul.phpdocumentor-breadcrumbs > li + li:before { + color: var(--dark-gray); + content: "\\\A0"; + padding: 0; +} +.phpdocumentor .phpdocumentor-back-to-top { + position: fixed; + bottom: 2rem; + font-size: 2.5rem; + opacity: .25; + transition: all .3s ease-in-out; + right: 2rem; +} + +.phpdocumentor .phpdocumentor-back-to-top:hover { + color: var(--link-color-primary); + opacity: 1; +} +.phpdocumentor-search { + position: relative; + display: none; /** disable by default for non-js flow */ + opacity: .3; /** white-out default for loading indication */ + transition: opacity .3s, background .3s; + margin: var(--spacing-sm) 0; + flex: 1; + min-width: 100%; +} + +.phpdocumentor-search label { + display: flex; + align-items: center; + flex: 1; +} + +.phpdocumentor-search__icon { + color: var(--primary-color); + margin-right: var(--spacing-sm); + width: 1rem; + height: 1rem; +} + +.phpdocumentor-search--enabled { + display: flex; +} + +.phpdocumentor-search--active { + opacity: 1; +} + +.phpdocumentor-search input:disabled { + background-color: lightgray; +} + +.phpdocumentor-search__field:focus, +.phpdocumentor-search__field { + margin-bottom: 0; + border: 0; + border-bottom: 2px solid var(--primary-color); + padding: 0; + border-radius: 0; + flex: 1; +} + +@media (min-width: 1000px) { + .phpdocumentor-search { + min-width: auto; + max-width: 20rem; + margin: 0 0 0 auto; + } +} +.phpdocumentor-content { + position: relative; +} + +.phpdocumentor-search-results { + backdrop-filter: blur(5px); + background: var(--popover-background-color); + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + padding: 0; + opacity: 1; + pointer-events: all; + + transition: opacity .3s, background .3s; +} + +.phpdocumentor-search-results--hidden { + background: transparent; + backdrop-filter: blur(0); + opacity: 0; + pointer-events: none; +} + +.phpdocumentor-search-results__dialog { + width: 100%; + background: white; + max-height: 100%; + display: flex; + flex-direction: column; +} + +.phpdocumentor-search-results__body { + overflow: auto; +} + +.phpdocumentor-search-results__header { + padding: var(--spacing-lg); + display: flex; + justify-content: space-between; + background: var(--primary-color-darken); + color: white; + align-items: center; +} + +.phpdocumentor-search-results__close { + font-size: var(--text-xl); + background: none; + border: none; + padding: 0; + margin: 0; +} + +.phpdocumentor .phpdocumentor-search-results__title { + font-size: var(--text-xl); + margin-bottom: 0; +} + +.phpdocumentor-search-results__entries { + list-style: none; + padding: 0 var(--spacing-lg); + margin: 0; +} + +.phpdocumentor-search-results__entry { + border-bottom: 1px solid var(--table-separator-color); + padding: var(--spacing-sm) 0; + text-align: left; +} + +.phpdocumentor-search-results__entry a { + display: block; +} + +.phpdocumentor-search-results__entry small { + margin-top: var(--spacing-xs); + margin-bottom: var(--spacing-md); + color: var(--primary-color-darker); + display: block; + word-break: break-word; +} + +.phpdocumentor-search-results__entry h3 { + font-size: var(--text-lg); + margin: 0; +} + +@media (min-width: 550px) { + .phpdocumentor-search-results { + padding: 0 var(--spacing-lg); + } + + .phpdocumentor-search-results__entry h3 { + font-size: var(--text-xxl); + } + + .phpdocumentor-search-results__dialog { + margin: var(--spacing-xl) auto; + max-width: 40rem; + background: white; + border: 1px solid silver; + box-shadow: 0 2px 5px silver; + max-height: 40rem; + border-radius: 3px; + } +} + +/* Used for screen readers and such */ +.visually-hidden { + display: none; +} diff --git a/docs/css/normalize.css b/docs/css/normalize.css new file mode 100644 index 0000000..46f646a --- /dev/null +++ b/docs/css/normalize.css @@ -0,0 +1,427 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +/** + * 1. Set default font family to sans-serif. + * 2. Prevent iOS text size adjust after orientation change, without disabling + * user zoom. + */ + +html { + font-family: sans-serif; /* 1 */ + -ms-text-size-adjust: 100%; /* 2 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/** + * Remove default margin. + */ + +body { + margin: 0; +} + +/* HTML5 display definitions + ========================================================================== */ + +/** + * Correct `block` display not defined for any HTML5 element in IE 8/9. + * Correct `block` display not defined for `details` or `summary` in IE 10/11 + * and Firefox. + * Correct `block` display not defined for `main` in IE 11. + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} + +/** + * 1. Correct `inline-block` display not defined in IE 8/9. + * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. + */ + +audio, +canvas, +progress, +video { + display: inline-block; /* 1 */ + vertical-align: baseline; /* 2 */ +} + +/** + * Prevent modern browsers from displaying `audio` without controls. + * Remove excess height in iOS 5 devices. + */ + +audio:not([controls]) { + display: none; + height: 0; +} + +/** + * Address `[hidden]` styling not present in IE 8/9/10. + * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. + */ + +[hidden], +template { + display: none; +} + +/* Links + ========================================================================== */ + +/** + * Remove the gray background color from active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * Improve readability when focused and also mouse hovered in all browsers. + */ + +a:active, +a:hover { + outline: 0; +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Address styling not present in IE 8/9/10/11, Safari, and Chrome. + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/** + * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. + */ + +b, +strong { + font-weight: bold; +} + +/** + * Address styling not present in Safari and Chrome. + */ + +dfn { + font-style: italic; +} + +/** + * Address variable `h1` font-size and margin within `section` and `article` + * contexts in Firefox 4+, Safari, and Chrome. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/** + * Address styling not present in IE 8/9. + */ + +mark { + background: #ff0; + color: #000; +} + +/** + * Address inconsistent and variable font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` affecting `line-height` in all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove border when inside `a` element in IE 8/9/10. + */ + +img { + border: 0; +} + +/** + * Correct overflow not hidden in IE 9/10/11. + */ + +svg:not(:root) { + overflow: hidden; +} + +/* Grouping content + ========================================================================== */ + +/** + * Address margin not present in IE 8/9 and Safari. + */ + +figure { + margin: 1em 40px; +} + +/** + * Address differences between Firefox and other browsers. + */ + +hr { + -moz-box-sizing: content-box; + box-sizing: content-box; + height: 0; +} + +/** + * Contain overflow in all browsers. + */ + +pre { + overflow: auto; +} + +/** + * Address odd `em`-unit font size rendering in all browsers. + */ + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} + +/* Forms + ========================================================================== */ + +/** + * Known limitation: by default, Chrome and Safari on OS X allow very limited + * styling of `select`, unless a `border` property is set. + */ + +/** + * 1. Correct color not being inherited. + * Known issue: affects color of disabled elements. + * 2. Correct font properties not being inherited. + * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. + */ + +button, +input, +optgroup, +select, +textarea { + color: inherit; /* 1 */ + font: inherit; /* 2 */ + margin: 0; /* 3 */ +} + +/** + * Address `overflow` set to `hidden` in IE 8/9/10/11. + */ + +button { + overflow: visible; +} + +/** + * Address inconsistent `text-transform` inheritance for `button` and `select`. + * All other form control elements do not inherit `text-transform` values. + * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. + * Correct `select` style inheritance in Firefox. + */ + +button, +select { + text-transform: none; +} + +/** + * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` + * and `video` controls. + * 2. Correct inability to style clickable `input` types in iOS. + * 3. Improve usability and consistency of cursor style between image-type + * `input` and others. + */ + +button, +html input[type="button"], /* 1 */ +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; /* 2 */ + cursor: pointer; /* 3 */ +} + +/** + * Re-set default cursor for disabled elements. + */ + +button[disabled], +html input[disabled] { + cursor: default; +} + +/** + * Remove inner padding and border in Firefox 4+. + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/** + * Address Firefox 4+ setting `line-height` on `input` using `!important` in + * the UA stylesheet. + */ + +input { + line-height: normal; +} + +/** + * It's recommended that you don't attempt to style these elements. + * Firefox's implementation doesn't respect box-sizing, padding, or width. + * + * 1. Address box sizing set to `content-box` in IE 8/9/10. + * 2. Remove excess padding in IE 8/9/10. + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Fix the cursor style for Chrome's increment/decrement buttons. For certain + * `font-size` values of the `input`, it causes the cursor style of the + * decrement button to change from `default` to `text`. + */ + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Address `appearance` set to `searchfield` in Safari and Chrome. + * 2. Address `box-sizing` set to `border-box` in Safari and Chrome + * (include `-moz` to future-proof). + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/** + * Remove inner padding and search cancel button in Safari and Chrome on OS X. + * Safari (but not Chrome) clips the cancel button when the search input has + * padding (and `textfield` appearance). + */ + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * Define consistent border, margin, and padding. + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/** + * 1. Correct `color` not being inherited in IE 8/9/10/11. + * 2. Remove padding so people aren't caught out if they zero out fieldsets. + */ + +legend { + border: 0; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Remove default vertical scrollbar in IE 8/9/10/11. + */ + +textarea { + overflow: auto; +} + +/** + * Don't inherit the `font-weight` (applied by a rule above). + * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. + */ + +optgroup { + font-weight: bold; +} + +/* Tables + ========================================================================== */ + +/** + * Remove most spacing between table cells. + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} + +td, +th { + padding: 0; +} diff --git a/docs/css/template.css b/docs/css/template.css new file mode 100644 index 0000000..fb905f3 --- /dev/null +++ b/docs/css/template.css @@ -0,0 +1,169 @@ +.phpdocumentor-summary { + font-style: italic; +} +.phpdocumentor-description { + margin-bottom: var(--spacing-md); +} +.phpdocumentor-element { + position: relative; +} + +.phpdocumentor .phpdocumentor-element__name { + line-height: 1; +} + +.phpdocumentor-element__package, +.phpdocumentor-element__extends, +.phpdocumentor-element__implements { + display: block; + font-size: var(--text-xxs); + font-weight: normal; + opacity: .7; +} + +.phpdocumentor-element__package .phpdocumentor-breadcrumbs { + display: inline; +} + +.phpdocumentor-element:not(:last-child) { + border-bottom: 1px solid var(--primary-color-lighten); + padding-bottom: var(--spacing-lg); +} + +.phpdocumentor-element.-deprecated .phpdocumentor-element__name { + text-decoration: line-through; +} + +.phpdocumentor-element__modifier { + font-size: var(--text-xxs); + padding: calc(var(--spacing-base-size) / 4) calc(var(--spacing-base-size) / 2); + color: var(--text-color); + background-color: var(--light-gray); + border-radius: 3px; + text-transform: uppercase; +} +.phpdocumentor-signature { + display: inline-block; + font-size: var(--text-sm); + margin-bottom: var(--spacing-md); +} + +.phpdocumentor-signature.-deprecated .phpdocumentor-signature__name { + text-decoration: line-through; +} +.phpdocumentor-table-of-contents { +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry { + padding-top: var(--spacing-xs); + margin-left: 2rem; + display: flex; +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry > a { + flex: 0 1 auto; +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry > span { + flex: 1; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry:after { + content: ''; + height: 12px; + width: 12px; + left: 16px; + position: absolute; +} +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-private:after { + background: url('data:image/svg+xml;utf8,') no-repeat; +} +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-protected:after { + left: 13px; + background: url('data:image/svg+xml;utf8,') no-repeat; +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry:before { + width: 1.25rem; + height: 1.25rem; + line-height: 1.25rem; + background: transparent url('data:image/svg+xml;utf8,') no-repeat center center; + content: ''; + position: absolute; + left: 0; + border-radius: 50%; + font-weight: 600; + color: white; + text-align: center; + font-size: .75rem; + margin-top: .2rem; +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-method:before { + content: 'M'; + background-image: url('data:image/svg+xml;utf8,'); +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-function:before { + content: 'M'; + background-image: url('data:image/svg+xml;utf8,'); +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-property:before { + content: 'P' +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-constant:before { + content: 'C'; + background-color: transparent; + background-image: url('data:image/svg+xml;utf8,'); +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-class:before { + content: 'C' +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-interface:before { + content: 'I' +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-trait:before { + content: 'T' +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-namespace:before { + content: 'N' +} + +.phpdocumentor-table-of-contents .phpdocumentor-table-of-contents__entry.-package:before { + content: 'P' +} + +.phpdocumentor-table-of-contents dd { + font-style: italic; + margin-left: 2rem; +} +.phpdocumentor-element-found-in { + position: absolute; + top: 0; + right: 0; + font-size: var(--text-sm); + color: gray; +} +.phpdocumentor-class-graph { + width: 100%; height: 600px; border:1px solid black; overflow: hidden +} + +.phpdocumentor-class-graph__graph { + width: 100%; +} +.phpdocumentor-tag-list__definition { + display: flex; +} + +.phpdocumentor-tag-link { + margin-right: var(--spacing-sm); +} diff --git a/docs/files/src-callback-authorizationforminterface.html b/docs/files/src-callback-authorizationforminterface.html new file mode 100644 index 0000000..f7d2bb4 --- /dev/null +++ b/docs/files/src-callback-authorizationforminterface.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                            +

                            Documentation

                            + + + + + +
                            + +
                            +
                            + + + + +
                            +
                              +
                            + +
                            +

                            AuthorizationFormInterface.php

                            + + + +

                            + Interfaces, Classes and Traits + +

                            + +
                            +
                            AuthorizationFormInterface
                            +
                            Authorization Form Interface
                            + + +
                            + + + + + + + +
                            +
                            +
                            +
                            +

                            Search results

                            + +
                            +
                            +
                              +
                              +
                              +
                              +
                              +
                              + + +
                              + + + + diff --git a/docs/files/src-callback-defaultauthorizationform.html b/docs/files/src-callback-defaultauthorizationform.html new file mode 100644 index 0000000..3d2730d --- /dev/null +++ b/docs/files/src-callback-defaultauthorizationform.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                              +

                              Documentation

                              + + + + + +
                              + +
                              +
                              + + + + +
                              +
                                +
                              + +
                              +

                              DefaultAuthorizationForm.php

                              + + + +

                              + Interfaces, Classes and Traits + +

                              + +
                              + +
                              DefaultAuthorizationForm
                              +
                              + +
                              + + + + + + + +
                              +
                              +
                              +
                              +

                              Search results

                              + +
                              +
                              +
                                +
                                +
                                +
                                +
                                +
                                + + +
                                + + + + diff --git a/docs/files/src-callback-singleuserpasswordauthenticationcallback.html b/docs/files/src-callback-singleuserpasswordauthenticationcallback.html new file mode 100644 index 0000000..837345a --- /dev/null +++ b/docs/files/src-callback-singleuserpasswordauthenticationcallback.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                +

                                Documentation

                                + + + + + +
                                + +
                                +
                                + + + + +
                                +
                                  +
                                + +
                                +

                                SingleUserPasswordAuthenticationCallback.php

                                + + + +

                                + Interfaces, Classes and Traits + +

                                + +
                                + +
                                SingleUserPasswordAuthenticationCallback
                                +
                                Single User Password Authentication Callback
                                + +
                                + + + + + + + +
                                +
                                +
                                +
                                +

                                Search results

                                + +
                                +
                                +
                                  +
                                  +
                                  +
                                  +
                                  +
                                  + + +
                                  + + + + diff --git a/docs/files/src-functions.html b/docs/files/src-functions.html new file mode 100644 index 0000000..2622513 --- /dev/null +++ b/docs/files/src-functions.html @@ -0,0 +1,989 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                  +

                                  Documentation

                                  + + + + + +
                                  + +
                                  +
                                  + + + + +
                                  +
                                    +
                                  + +
                                  +

                                  functions.php

                                  + + + + + +

                                  + Table of Contents + +

                                  + +
                                  +
                                  + generateRandomString() + +  : mixed +
                                  +
                                  + +
                                  + generateRandomPrintableAsciiString() + +  : mixed +
                                  +
                                  + +
                                  + generatePKCECodeChallenge() + +  : mixed +
                                  +
                                  + +
                                  + base64_urlencode() + +  : mixed +
                                  +
                                  + +
                                  + hashAuthorizationRequestParameters() + +  : string|null +
                                  +
                                  + +
                                  + isIndieAuthAuthorizationCodeRedeemingRequest() + +  : mixed +
                                  +
                                  + +
                                  + isIndieAuthAuthorizationRequest() + +  : mixed +
                                  +
                                  + +
                                  + isAuthorizationApprovalRequest() + +  : mixed +
                                  +
                                  + +
                                  + buildQueryString() + +  : mixed +
                                  +
                                  + +
                                  + urlComponentsMatch() + +  : bool +
                                  +
                                  + +
                                  + appendQueryParams() + +  : mixed +
                                  +
                                  Append Query Parameters
                                  + +
                                  + trySetLogger() + +  : mixed +
                                  +
                                  Try setLogger
                                  + +
                                  + renderTemplate() + +  : mixed +
                                  +
                                  + +
                                  + isClientIdentifier() + +  : bool +
                                  +
                                  Check if a provided string matches the IndieAuth criteria for a Client Identifier.
                                  + +
                                  + isProfileUrl() + +  : bool +
                                  +
                                  Check if a provided string matches the IndieAuth criteria for a User Profile URL.
                                  + +
                                  + isValidState() + +  : bool +
                                  +
                                  OAuth 2.0 limits what values are valid for state.
                                  + +
                                  + isValidCodeChallenge() + +  : bool +
                                  +
                                  IndieAuth requires PKCE. This implementation supports only S256 for hashing.
                                  + +
                                  + isValidScope() + +  : bool +
                                  +
                                  OAuth 2.0 limits what values are valid for scope.
                                  + +
                                  + + + + +
                                  +

                                  + Functions + +

                                  +
                                  +

                                  + generateRandomString() + +

                                  + + + + + + generateRandomString(mixed $numBytes) : mixed + + +
                                  Parameters
                                  +
                                  +
                                  + $numBytes + : mixed +
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + generateRandomPrintableAsciiString() + +

                                  + + + + + + generateRandomPrintableAsciiString(int $length) : mixed + + +
                                  Parameters
                                  +
                                  +
                                  + $length + : int +
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + generatePKCECodeChallenge() + +

                                  + + + + + + generatePKCECodeChallenge(mixed $plaintext) : mixed + + +
                                  Parameters
                                  +
                                  +
                                  + $plaintext + : mixed +
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + base64_urlencode() + +

                                  + + + + + + base64_urlencode(mixed $string) : mixed + + +
                                  Parameters
                                  +
                                  +
                                  + $string + : mixed +
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + hashAuthorizationRequestParameters() + +

                                  + + + + + + hashAuthorizationRequestParameters(ServerRequestInterface $request, string $secret[, string|null $algo = null ][, array<string|int, mixed>|null $hashedParameters = null ]) : string|null + + +
                                  Parameters
                                  +
                                  +
                                  + $request + : ServerRequestInterface +
                                  +
                                  + +
                                  +
                                  + $secret + : string +
                                  +
                                  + +
                                  +
                                  + $algo + : string|null + = null
                                  +
                                  + +
                                  +
                                  + $hashedParameters + : array<string|int, mixed>|null + = null
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + isIndieAuthAuthorizationCodeRedeemingRequest() + +

                                  + + + + + + isIndieAuthAuthorizationCodeRedeemingRequest(ServerRequestInterface $request) : mixed + + +
                                  Parameters
                                  +
                                  +
                                  + $request + : ServerRequestInterface +
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + isIndieAuthAuthorizationRequest() + +

                                  + + + + + + isIndieAuthAuthorizationRequest(ServerRequestInterface $request[, mixed $permittedMethods = ['get'] ]) : mixed + + +
                                  Parameters
                                  +
                                  +
                                  + $request + : ServerRequestInterface +
                                  +
                                  + +
                                  +
                                  + $permittedMethods + : mixed + = ['get']
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + isAuthorizationApprovalRequest() + +

                                  + + + + + + isAuthorizationApprovalRequest(ServerRequestInterface $request) : mixed + + +
                                  Parameters
                                  +
                                  +
                                  + $request + : ServerRequestInterface +
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + buildQueryString() + +

                                  + + + + + + buildQueryString(array<string|int, mixed> $parameters) : mixed + + +
                                  Parameters
                                  +
                                  +
                                  + $parameters + : array<string|int, mixed> +
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + urlComponentsMatch() + +

                                  + + + + + + urlComponentsMatch(mixed $url1, mixed $url2[, array<string|int, mixed>|null $components = null ]) : bool + + +
                                  Parameters
                                  +
                                  +
                                  + $url1 + : mixed +
                                  +
                                  + +
                                  +
                                  + $url2 + : mixed +
                                  +
                                  + +
                                  +
                                  + $components + : array<string|int, mixed>|null + = null
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + appendQueryParams() + +

                                  + + +

                                  Append Query Parameters

                                  + + + + appendQueryParams(string $uri, array<string|int, mixed> $queryParams) : mixed + +

                                  Converts $queryParams into a query string, then checks $uri for an +existing query string. Then appends the newly generated query string +with either ? or & as appropriate.

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $uri + : string +
                                  +
                                  + +
                                  +
                                  + $queryParams + : array<string|int, mixed> +
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + trySetLogger() + +

                                  + + +

                                  Try setLogger

                                  + + + + trySetLogger(mixed $target, LoggerInterface $logger) : mixed + +

                                  If $target implements LoggerAwareInterface, set it’s logger +to $logger. Returns $target.

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $target + : mixed +
                                  +
                                  + +
                                  +
                                  + $logger + : LoggerInterface +
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + renderTemplate() + +

                                  + + + + + + renderTemplate(string $template[, array<string|int, mixed> $context = [] ]) : mixed + + +
                                  Parameters
                                  +
                                  +
                                  + $template + : string +
                                  +
                                  + +
                                  +
                                  + $context + : array<string|int, mixed> + = []
                                  +
                                  + +
                                  +
                                  + + + + +
                                  +
                                  +

                                  + isClientIdentifier() + +

                                  + + +

                                  Check if a provided string matches the IndieAuth criteria for a Client Identifier.

                                  + + + + isClientIdentifier(string $client_id) : bool + +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $client_id + : string +
                                  +
                                  +

                                  The client ID provided by the OAuth Client

                                  +
                                  + +
                                  +
                                  + + +
                                  + Tags + +
                                  +
                                  +
                                  + see +
                                  +
                                  + https://indieauth.spec.indieweb.org/#client-identifier + +
                                  + +
                                  +
                                  + + +
                                  +
                                  +

                                  + isProfileUrl() + +

                                  + + +

                                  Check if a provided string matches the IndieAuth criteria for a User Profile URL.

                                  + + + + isProfileUrl(string $profile_url) : bool + +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $profile_url + : string +
                                  +
                                  +

                                  The profile URL provided by the IndieAuth Client as me

                                  +
                                  + +
                                  +
                                  + + +
                                  + Tags + +
                                  +
                                  +
                                  + see +
                                  +
                                  + https://indieauth.spec.indieweb.org/#user-profile-url + +
                                  + +
                                  +
                                  + + +
                                  +
                                  +

                                  + isValidState() + +

                                  + + +

                                  OAuth 2.0 limits what values are valid for state.

                                  + + + + isValidState(string $state) : bool + +

                                  We check this first, because if valid, we want to send it along with other errors.

                                  +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $state + : string +
                                  +
                                  + +
                                  +
                                  + + +
                                  + Tags + +
                                  +
                                  +
                                  + see +
                                  +
                                  + https://tools.ietf.org/html/rfc6749#appendix-A.5 + +
                                  + +
                                  +
                                  + + +
                                  +
                                  +

                                  + isValidCodeChallenge() + +

                                  + + +

                                  IndieAuth requires PKCE. This implementation supports only S256 for hashing.

                                  + + + + isValidCodeChallenge(string $challenge) : bool + +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $challenge + : string +
                                  +
                                  + +
                                  +
                                  + + +
                                  + Tags + +
                                  +
                                  +
                                  + see +
                                  +
                                  + https://indieauth.spec.indieweb.org/#authorization-request + +
                                  + +
                                  +
                                  + + +
                                  +
                                  +

                                  + isValidScope() + +

                                  + + +

                                  OAuth 2.0 limits what values are valid for scope.

                                  + + + + isValidScope(string $scope) : bool + +
                                  + +
                                  Parameters
                                  +
                                  +
                                  + $scope + : string +
                                  +
                                  + +
                                  +
                                  + + +
                                  + Tags + +
                                  +
                                  +
                                  + see +
                                  +
                                  + https://tools.ietf.org/html/rfc6749#section-3.3 + +
                                  + +
                                  +
                                  + + +
                                  +
                                  + +
                                  +
                                  +
                                  +
                                  +

                                  Search results

                                  + +
                                  +
                                  +
                                    +
                                    +
                                    +
                                    +
                                    +
                                    + + +
                                    + + + + diff --git a/docs/files/src-indieauthexception.html b/docs/files/src-indieauthexception.html new file mode 100644 index 0000000..87bf7e5 --- /dev/null +++ b/docs/files/src-indieauthexception.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                    +

                                    Documentation

                                    + + + + + +
                                    + +
                                    +
                                    + + + + +
                                    +
                                      +
                                    + +
                                    +

                                    IndieAuthException.php

                                    + + + +

                                    + Interfaces, Classes and Traits + +

                                    + +
                                    + +
                                    IndieAuthException
                                    +
                                    + +
                                    + + + + + + + +
                                    +
                                    +
                                    +
                                    +

                                    Search results

                                    + +
                                    +
                                    +
                                      +
                                      +
                                      +
                                      +
                                      +
                                      + + +
                                      + + + + diff --git a/docs/files/src-middleware-closurerequesthandler.html b/docs/files/src-middleware-closurerequesthandler.html new file mode 100644 index 0000000..b7247d0 --- /dev/null +++ b/docs/files/src-middleware-closurerequesthandler.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                      +

                                      Documentation

                                      + + + + + +
                                      + +
                                      +
                                      + + + + +
                                      +
                                        +
                                      + +
                                      +

                                      ClosureRequestHandler.php

                                      + + + +

                                      + Interfaces, Classes and Traits + +

                                      + +
                                      + +
                                      ClosureRequestHandler
                                      +
                                      + +
                                      + + + + + + + +
                                      +
                                      +
                                      +
                                      +

                                      Search results

                                      + +
                                      +
                                      +
                                        +
                                        +
                                        +
                                        +
                                        +
                                        + + +
                                        + + + + diff --git a/docs/files/src-middleware-doublesubmitcookiecsrfmiddleware.html b/docs/files/src-middleware-doublesubmitcookiecsrfmiddleware.html new file mode 100644 index 0000000..f9a5613 --- /dev/null +++ b/docs/files/src-middleware-doublesubmitcookiecsrfmiddleware.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                        +

                                        Documentation

                                        + + + + + +
                                        + +
                                        +
                                        + + + + +
                                        +
                                          +
                                        + +
                                        +

                                        DoubleSubmitCookieCsrfMiddleware.php

                                        + + + +

                                        + Interfaces, Classes and Traits + +

                                        + +
                                        + +
                                        DoubleSubmitCookieCsrfMiddleware
                                        +
                                        Double-Submit Cookie CSRF Middleware
                                        + +
                                        + + + + + + + +
                                        +
                                        +
                                        +
                                        +

                                        Search results

                                        + +
                                        +
                                        +
                                          +
                                          +
                                          +
                                          +
                                          +
                                          + + +
                                          + + + + diff --git a/docs/files/src-middleware-noopmiddleware.html b/docs/files/src-middleware-noopmiddleware.html new file mode 100644 index 0000000..fbe8509 --- /dev/null +++ b/docs/files/src-middleware-noopmiddleware.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                          +

                                          Documentation

                                          + + + + + +
                                          + +
                                          +
                                          + + + + +
                                          +
                                            +
                                          + +
                                          +

                                          NoOpMiddleware.php

                                          + + + +

                                          + Interfaces, Classes and Traits + +

                                          + +
                                          + +
                                          NoOpMiddleware
                                          +
                                          No-Op Middleware
                                          + +
                                          + + + + + + + +
                                          +
                                          +
                                          +
                                          +

                                          Search results

                                          + +
                                          +
                                          +
                                            +
                                            +
                                            +
                                            +
                                            +
                                            + + +
                                            + + + + diff --git a/docs/files/src-middleware-responserequesthandler.html b/docs/files/src-middleware-responserequesthandler.html new file mode 100644 index 0000000..0061a49 --- /dev/null +++ b/docs/files/src-middleware-responserequesthandler.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                            +

                                            Documentation

                                            + + + + + +
                                            + +
                                            +
                                            + + + + +
                                            +
                                              +
                                            + +
                                            +

                                            ResponseRequestHandler.php

                                            + + + +

                                            + Interfaces, Classes and Traits + +

                                            + +
                                            + +
                                            ResponseRequestHandler
                                            +
                                            + +
                                            + + + + + + + +
                                            +
                                            +
                                            +
                                            +

                                            Search results

                                            + +
                                            +
                                            +
                                              +
                                              +
                                              +
                                              +
                                              +
                                              + + +
                                              + + + + diff --git a/docs/files/src-server.html b/docs/files/src-server.html new file mode 100644 index 0000000..7d1d506 --- /dev/null +++ b/docs/files/src-server.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                              +

                                              Documentation

                                              + + + + + +
                                              + +
                                              +
                                              + + + + +
                                              +
                                                +
                                              + +
                                              +

                                              Server.php

                                              + + + +

                                              + Interfaces, Classes and Traits + +

                                              + +
                                              + +
                                              Server
                                              +
                                              IndieAuth Server
                                              + +
                                              + + + + + + + +
                                              +
                                              +
                                              +
                                              +

                                              Search results

                                              + +
                                              +
                                              +
                                                +
                                                +
                                                +
                                                +
                                                +
                                                + + +
                                                + + + + diff --git a/docs/files/src-storage-filesystemjsonstorage.html b/docs/files/src-storage-filesystemjsonstorage.html new file mode 100644 index 0000000..b87a170 --- /dev/null +++ b/docs/files/src-storage-filesystemjsonstorage.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                +

                                                Documentation

                                                + + + + + +
                                                + +
                                                +
                                                + + + + +
                                                +
                                                  +
                                                + +
                                                +

                                                FilesystemJsonStorage.php

                                                + + + +

                                                + Interfaces, Classes and Traits + +

                                                + +
                                                + +
                                                FilesystemJsonStorage
                                                +
                                                + +
                                                + + + + + + + +
                                                +
                                                +
                                                +
                                                +

                                                Search results

                                                + +
                                                +
                                                +
                                                  +
                                                  +
                                                  +
                                                  +
                                                  +
                                                  + + +
                                                  + + + + diff --git a/docs/files/src-storage-sqlite3storage.html b/docs/files/src-storage-sqlite3storage.html new file mode 100644 index 0000000..b32948c --- /dev/null +++ b/docs/files/src-storage-sqlite3storage.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                  +

                                                  Documentation

                                                  + + + + + +
                                                  + +
                                                  +
                                                  + + + + +
                                                  +
                                                    +
                                                  + +
                                                  +

                                                  Sqlite3Storage.php

                                                  + + + +

                                                  + Interfaces, Classes and Traits + +

                                                  + +
                                                  + +
                                                  Sqlite3Storage
                                                  +
                                                  + +
                                                  + + + + + + + +
                                                  +
                                                  +
                                                  +
                                                  +

                                                  Search results

                                                  + +
                                                  +
                                                  +
                                                    +
                                                    +
                                                    +
                                                    +
                                                    +
                                                    + + +
                                                    + + + + diff --git a/docs/files/src-storage-token.html b/docs/files/src-storage-token.html new file mode 100644 index 0000000..e94dc6e --- /dev/null +++ b/docs/files/src-storage-token.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                    +

                                                    Documentation

                                                    + + + + + +
                                                    + +
                                                    +
                                                    + + + + +
                                                    +
                                                      +
                                                    + +
                                                    +

                                                    Token.php

                                                    + + + +

                                                    + Interfaces, Classes and Traits + +

                                                    + +
                                                    + +
                                                    Token
                                                    +
                                                    + +
                                                    + + + + + + + +
                                                    +
                                                    +
                                                    +
                                                    +

                                                    Search results

                                                    + +
                                                    +
                                                    +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      +
                                                      + + +
                                                      + + + + diff --git a/docs/files/src-storage-tokenstorageinterface.html b/docs/files/src-storage-tokenstorageinterface.html new file mode 100644 index 0000000..f37e142 --- /dev/null +++ b/docs/files/src-storage-tokenstorageinterface.html @@ -0,0 +1,123 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                      +

                                                      Documentation

                                                      + + + + + +
                                                      + +
                                                      +
                                                      + + + + +
                                                      +
                                                        +
                                                      + +
                                                      +

                                                      TokenStorageInterface.php

                                                      + + + +

                                                      + Interfaces, Classes and Traits + +

                                                      + +
                                                      +
                                                      TokenStorageInterface
                                                      +
                                                      Token Storage Interface
                                                      + + +
                                                      + + + + + + + +
                                                      +
                                                      +
                                                      +
                                                      +

                                                      Search results

                                                      + +
                                                      +
                                                      +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        +
                                                        + + +
                                                        + + + + diff --git a/docs/graphs/classes.html b/docs/graphs/classes.html new file mode 100644 index 0000000..b361d8b --- /dev/null +++ b/docs/graphs/classes.html @@ -0,0 +1,100 @@ + + + + + Documentation + + + + + + + + +
                                                        +

                                                        Documentation

                                                        + + + + + +
                                                        + +
                                                        +
                                                        + + + + +
                                                        +
                                                        + +
                                                        + +
                                                        +
                                                        +
                                                        +

                                                        Search results

                                                        + +
                                                        +
                                                        +
                                                          +
                                                          +
                                                          +
                                                          +
                                                          +
                                                          + + +
                                                          + + + + diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..098eb9d --- /dev/null +++ b/docs/index.html @@ -0,0 +1,115 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                          +

                                                          Documentation

                                                          + + + + + +
                                                          + +
                                                          +
                                                          + + + + +
                                                          +

                                                          Documentation

                                                          + + + +

                                                          + Namespaces + +

                                                          + +
                                                          +
                                                          Taproot
                                                          +
                                                          + + + + + + + +
                                                          +
                                                          +
                                                          +

                                                          Search results

                                                          + +
                                                          +
                                                          +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            +
                                                            + + +
                                                            + + + + diff --git a/docs/indices/files.html b/docs/indices/files.html new file mode 100644 index 0000000..b906075 --- /dev/null +++ b/docs/indices/files.html @@ -0,0 +1,139 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                            +

                                                            Documentation

                                                            + + + + + +
                                                            + +
                                                            +
                                                            + + + + + +
                                                            + + +
                                                            + + + + diff --git a/docs/js/search.js b/docs/js/search.js new file mode 100644 index 0000000..a7e3595 --- /dev/null +++ b/docs/js/search.js @@ -0,0 +1,173 @@ +// Search module for phpDocumentor +// +// This module is a wrapper around fuse.js that will use a given index and attach itself to a +// search form and to a search results pane identified by the following data attributes: +// +// 1. data-search-form +// 2. data-search-results +// +// The data-search-form is expected to have a single input element of type 'search' that will trigger searching for +// a series of results, were the data-search-results pane is expected to have a direct UL child that will be populated +// with rendered results. +// +// The search has various stages, upon loading this stage the data-search-form receives the CSS class +// 'phpdocumentor-search--enabled'; this indicates that JS is allowed and indices are being loaded. It is recommended +// to hide the form by default and show it when it receives this class to achieve progressive enhancement for this +// feature. +// +// After loading this module, it is expected to load a search index asynchronously, for example: +// +// +// +// In this script the generated index should attach itself to the search module using the `appendIndex` function. By +// doing it like this the page will continue loading, unhindered by the loading of the search. +// +// After the page has fully loaded, and all these deferred indexes loaded, the initialization of the search module will +// be called and the form will receive the class 'phpdocumentor-search--active', indicating search is ready. At this +// point, the input field will also have it's 'disabled' attribute removed. +var Search = (function () { + var fuse; + var index = []; + var options = { + shouldSort: true, + threshold: 0.6, + location: 0, + distance: 100, + maxPatternLength: 32, + minMatchCharLength: 1, + keys: [ + "fqsen", + "name", + "summary", + "url" + ] + }; + + // Credit David Walsh (https://davidwalsh.name/javascript-debounce-function) + // Returns a function, that, as long as it continues to be invoked, will not + // be triggered. The function will be called after it stops being called for + // N milliseconds. If `immediate` is passed, trigger the function on the + // leading edge, instead of the trailing. + function debounce(func, wait, immediate) { + var timeout; + + return function executedFunction() { + var context = this; + var args = arguments; + + var later = function () { + timeout = null; + if (!immediate) func.apply(context, args); + }; + + var callNow = immediate && !timeout; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + if (callNow) func.apply(context, args); + }; + } + + function close() { + // Start scroll prevention: https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/ + const scrollY = document.body.style.top; + document.body.style.position = ''; + document.body.style.top = ''; + window.scrollTo(0, parseInt(scrollY || '0') * -1); + // End scroll prevention + + var form = document.querySelector('[data-search-form]'); + var searchResults = document.querySelector('[data-search-results]'); + + form.classList.toggle('phpdocumentor-search--has-results', false); + searchResults.classList.add('phpdocumentor-search-results--hidden'); + var searchField = document.querySelector('[data-search-form] input[type="search"]'); + searchField.blur(); + } + + function search(event) { + // Start scroll prevention: https://css-tricks.com/prevent-page-scrolling-when-a-modal-is-open/ + document.body.style.position = 'fixed'; + document.body.style.top = `-${window.scrollY}px`; + // End scroll prevention + + // prevent enter's from autosubmitting + event.stopPropagation(); + + var form = document.querySelector('[data-search-form]'); + var searchResults = document.querySelector('[data-search-results]'); + var searchResultEntries = document.querySelector('[data-search-results] .phpdocumentor-search-results__entries'); + + searchResultEntries.innerHTML = ''; + + if (!event.target.value) { + close(); + return; + } + + form.classList.toggle('phpdocumentor-search--has-results', true); + searchResults.classList.remove('phpdocumentor-search-results--hidden'); + var results = fuse.search(event.target.value, {limit: 25}); + + results.forEach(function (result) { + var entry = document.createElement("li"); + entry.classList.add("phpdocumentor-search-results__entry"); + entry.innerHTML += '

                                                            ' + result.name + "

                                                            \n"; + entry.innerHTML += '' + result.fqsen + "\n"; + entry.innerHTML += '
                                                            ' + result.summary + '
                                                            '; + searchResultEntries.appendChild(entry) + }); + } + + function appendIndex(added) { + index = index.concat(added); + + // re-initialize search engine when appending an index after initialisation + if (typeof fuse !== 'undefined') { + fuse = new Fuse(index, options); + } + } + + function init() { + fuse = new Fuse(index, options); + + var form = document.querySelector('[data-search-form]'); + var searchField = document.querySelector('[data-search-form] input[type="search"]'); + + var closeButton = document.querySelector('.phpdocumentor-search-results__close'); + closeButton.addEventListener('click', function() { close() }.bind(this)); + + var searchResults = document.querySelector('[data-search-results]'); + searchResults.addEventListener('click', function() { close() }.bind(this)); + + form.classList.add('phpdocumentor-search--active'); + + searchField.setAttribute('placeholder', 'Search (Press "/" to focus)'); + searchField.removeAttribute('disabled'); + searchField.addEventListener('keyup', debounce(search, 300)); + + window.addEventListener('keyup', function (event) { + if (event.key === '/') { + searchField.focus(); + } + if (event.code === 'Escape') { + close(); + } + }.bind(this)); + } + + return { + appendIndex, + init + } +})(); + +window.addEventListener('DOMContentLoaded', function () { + var form = document.querySelector('[data-search-form]'); + + // When JS is supported; show search box. Must be before including the search for it to take effect immediately + form.classList.add('phpdocumentor-search--enabled'); +}); + +window.addEventListener('load', function () { + Search.init(); +}); diff --git a/docs/js/searchIndex.js b/docs/js/searchIndex.js new file mode 100644 index 0000000..7566d6e --- /dev/null +++ b/docs/js/searchIndex.js @@ -0,0 +1,739 @@ +Search.appendIndex( + [ + { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\AuthorizationFormInterface", + "name": "AuthorizationFormInterface", + "summary": "Authorization\u0020Form\u0020Interface", + "url": "classes/Taproot-IndieAuth-Callback-AuthorizationFormInterface.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\AuthorizationFormInterface\u003A\u003AshowForm\u0028\u0029", + "name": "showForm", + "summary": "Show\u0020Form", + "url": "classes/Taproot-IndieAuth-Callback-AuthorizationFormInterface.html#method_showForm" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\AuthorizationFormInterface\u003A\u003AtransformAuthorizationCode\u0028\u0029", + "name": "transformAuthorizationCode", + "summary": "Transform\u0020Authorization\u0020Code", + "url": "classes/Taproot-IndieAuth-Callback-AuthorizationFormInterface.html#method_transformAuthorizationCode" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\DefaultAuthorizationForm", + "name": "DefaultAuthorizationForm", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-DefaultAuthorizationForm.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\DefaultAuthorizationForm\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-DefaultAuthorizationForm.html#method___construct" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\DefaultAuthorizationForm\u003A\u003AshowForm\u0028\u0029", + "name": "showForm", + "summary": "Show\u0020Form", + "url": "classes/Taproot-IndieAuth-Callback-DefaultAuthorizationForm.html#method_showForm" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\DefaultAuthorizationForm\u003A\u003AtransformAuthorizationCode\u0028\u0029", + "name": "transformAuthorizationCode", + "summary": "Transform\u0020Authorization\u0020Code", + "url": "classes/Taproot-IndieAuth-Callback-DefaultAuthorizationForm.html#method_transformAuthorizationCode" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\DefaultAuthorizationForm\u003A\u003AsetLogger\u0028\u0029", + "name": "setLogger", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-DefaultAuthorizationForm.html#method_setLogger" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\DefaultAuthorizationForm\u003A\u003A\u0024csrfKey", + "name": "csrfKey", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-DefaultAuthorizationForm.html#property_csrfKey" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\DefaultAuthorizationForm\u003A\u003A\u0024formTemplatePath", + "name": "formTemplatePath", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-DefaultAuthorizationForm.html#property_formTemplatePath" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\DefaultAuthorizationForm\u003A\u003A\u0024logger", + "name": "logger", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-DefaultAuthorizationForm.html#property_logger" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\SingleUserPasswordAuthenticationCallback", + "name": "SingleUserPasswordAuthenticationCallback", + "summary": "Single\u0020User\u0020Password\u0020Authentication\u0020Callback", + "url": "classes/Taproot-IndieAuth-Callback-SingleUserPasswordAuthenticationCallback.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\SingleUserPasswordAuthenticationCallback\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-SingleUserPasswordAuthenticationCallback.html#method___construct" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\SingleUserPasswordAuthenticationCallback\u003A\u003A__invoke\u0028\u0029", + "name": "__invoke", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-SingleUserPasswordAuthenticationCallback.html#method___invoke" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\SingleUserPasswordAuthenticationCallback\u003A\u003APASSWORD_FORM_PARAMETER", + "name": "PASSWORD_FORM_PARAMETER", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-SingleUserPasswordAuthenticationCallback.html#constant_PASSWORD_FORM_PARAMETER" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\SingleUserPasswordAuthenticationCallback\u003A\u003A\u0024csrfKey", + "name": "csrfKey", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-SingleUserPasswordAuthenticationCallback.html#property_csrfKey" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\SingleUserPasswordAuthenticationCallback\u003A\u003A\u0024formTemplate", + "name": "formTemplate", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-SingleUserPasswordAuthenticationCallback.html#property_formTemplate" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\SingleUserPasswordAuthenticationCallback\u003A\u003A\u0024user", + "name": "user", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-SingleUserPasswordAuthenticationCallback.html#property_user" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback\\SingleUserPasswordAuthenticationCallback\u003A\u003A\u0024hashedPassword", + "name": "hashedPassword", + "summary": "", + "url": "classes/Taproot-IndieAuth-Callback-SingleUserPasswordAuthenticationCallback.html#property_hashedPassword" + }, { + "fqsen": "\\Taproot\\IndieAuth\\generateRandomString\u0028\u0029", + "name": "generateRandomString", + "summary": "", + "url": "namespaces/taproot-indieauth.html#function_generateRandomString" + }, { + "fqsen": "\\Taproot\\IndieAuth\\generateRandomPrintableAsciiString\u0028\u0029", + "name": "generateRandomPrintableAsciiString", + "summary": "", + "url": "namespaces/taproot-indieauth.html#function_generateRandomPrintableAsciiString" + }, { + "fqsen": "\\Taproot\\IndieAuth\\generatePKCECodeChallenge\u0028\u0029", + "name": "generatePKCECodeChallenge", + "summary": "", + "url": "namespaces/taproot-indieauth.html#function_generatePKCECodeChallenge" + }, { + "fqsen": "\\Taproot\\IndieAuth\\base64_urlencode\u0028\u0029", + "name": "base64_urlencode", + "summary": "", + "url": "namespaces/taproot-indieauth.html#function_base64_urlencode" + }, { + "fqsen": "\\Taproot\\IndieAuth\\hashAuthorizationRequestParameters\u0028\u0029", + "name": "hashAuthorizationRequestParameters", + "summary": "", + "url": "namespaces/taproot-indieauth.html#function_hashAuthorizationRequestParameters" + }, { + "fqsen": "\\Taproot\\IndieAuth\\isIndieAuthAuthorizationCodeRedeemingRequest\u0028\u0029", + "name": "isIndieAuthAuthorizationCodeRedeemingRequest", + "summary": "", + "url": "namespaces/taproot-indieauth.html#function_isIndieAuthAuthorizationCodeRedeemingRequest" + }, { + "fqsen": "\\Taproot\\IndieAuth\\isIndieAuthAuthorizationRequest\u0028\u0029", + "name": "isIndieAuthAuthorizationRequest", + "summary": "", + "url": "namespaces/taproot-indieauth.html#function_isIndieAuthAuthorizationRequest" + }, { + "fqsen": "\\Taproot\\IndieAuth\\isAuthorizationApprovalRequest\u0028\u0029", + "name": "isAuthorizationApprovalRequest", + "summary": "", + "url": "namespaces/taproot-indieauth.html#function_isAuthorizationApprovalRequest" + }, { + "fqsen": "\\Taproot\\IndieAuth\\buildQueryString\u0028\u0029", + "name": "buildQueryString", + "summary": "", + "url": "namespaces/taproot-indieauth.html#function_buildQueryString" + }, { + "fqsen": "\\Taproot\\IndieAuth\\urlComponentsMatch\u0028\u0029", + "name": "urlComponentsMatch", + "summary": "", + "url": "namespaces/taproot-indieauth.html#function_urlComponentsMatch" + }, { + "fqsen": "\\Taproot\\IndieAuth\\appendQueryParams\u0028\u0029", + "name": "appendQueryParams", + "summary": "Append\u0020Query\u0020Parameters", + "url": "namespaces/taproot-indieauth.html#function_appendQueryParams" + }, { + "fqsen": "\\Taproot\\IndieAuth\\trySetLogger\u0028\u0029", + "name": "trySetLogger", + "summary": "Try\u0020setLogger", + "url": "namespaces/taproot-indieauth.html#function_trySetLogger" + }, { + "fqsen": "\\Taproot\\IndieAuth\\renderTemplate\u0028\u0029", + "name": "renderTemplate", + "summary": "", + "url": "namespaces/taproot-indieauth.html#function_renderTemplate" + }, { + "fqsen": "\\Taproot\\IndieAuth\\isClientIdentifier\u0028\u0029", + "name": "isClientIdentifier", + "summary": "Check\u0020if\u0020a\u0020provided\u0020string\u0020matches\u0020the\u0020IndieAuth\u0020criteria\u0020for\u0020a\u0020Client\u0020Identifier.", + "url": "namespaces/taproot-indieauth.html#function_isClientIdentifier" + }, { + "fqsen": "\\Taproot\\IndieAuth\\isProfileUrl\u0028\u0029", + "name": "isProfileUrl", + "summary": "Check\u0020if\u0020a\u0020provided\u0020string\u0020matches\u0020the\u0020IndieAuth\u0020criteria\u0020for\u0020a\u0020User\u0020Profile\u0020URL.", + "url": "namespaces/taproot-indieauth.html#function_isProfileUrl" + }, { + "fqsen": "\\Taproot\\IndieAuth\\isValidState\u0028\u0029", + "name": "isValidState", + "summary": "OAuth\u00202.0\u0020limits\u0020what\u0020values\u0020are\u0020valid\u0020for\u0020state.", + "url": "namespaces/taproot-indieauth.html#function_isValidState" + }, { + "fqsen": "\\Taproot\\IndieAuth\\isValidCodeChallenge\u0028\u0029", + "name": "isValidCodeChallenge", + "summary": "IndieAuth\u0020requires\u0020PKCE.\u0020This\u0020implementation\u0020supports\u0020only\u0020S256\u0020for\u0020hashing.", + "url": "namespaces/taproot-indieauth.html#function_isValidCodeChallenge" + }, { + "fqsen": "\\Taproot\\IndieAuth\\isValidScope\u0028\u0029", + "name": "isValidScope", + "summary": "OAuth\u00202.0\u0020limits\u0020what\u0020values\u0020are\u0020valid\u0020for\u0020scope.", + "url": "namespaces/taproot-indieauth.html#function_isValidScope" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException", + "name": "IndieAuthException", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003Acreate\u0028\u0029", + "name": "create", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#method_create" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AgetStatusCode\u0028\u0029", + "name": "getStatusCode", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#method_getStatusCode" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AgetExplanation\u0028\u0029", + "name": "getExplanation", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#method_getExplanation" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AgetInfo\u0028\u0029", + "name": "getInfo", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#method_getInfo" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AtrustQueryParams\u0028\u0029", + "name": "trustQueryParams", + "summary": "Trust\u0020Query\u0020Params", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#method_trustQueryParams" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AgetRequest\u0028\u0029", + "name": "getRequest", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#method_getRequest" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AINTERNAL_ERROR", + "name": "INTERNAL_ERROR", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_INTERNAL_ERROR" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AINTERNAL_ERROR_REDIRECT", + "name": "INTERNAL_ERROR_REDIRECT", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_INTERNAL_ERROR_REDIRECT" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AAUTHENTICATION_CALLBACK_MISSING_ME_PARAM", + "name": "AUTHENTICATION_CALLBACK_MISSING_ME_PARAM", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_AUTHENTICATION_CALLBACK_MISSING_ME_PARAM" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AAUTHORIZATION_APPROVAL_REQUEST_MISSING_HASH", + "name": "AUTHORIZATION_APPROVAL_REQUEST_MISSING_HASH", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_AUTHORIZATION_APPROVAL_REQUEST_MISSING_HASH" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AAUTHORIZATION_APPROVAL_REQUEST_INVALID_HASH", + "name": "AUTHORIZATION_APPROVAL_REQUEST_INVALID_HASH", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_AUTHORIZATION_APPROVAL_REQUEST_INVALID_HASH" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AHTTP_EXCEPTION_FETCHING_CLIENT_ID", + "name": "HTTP_EXCEPTION_FETCHING_CLIENT_ID", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_HTTP_EXCEPTION_FETCHING_CLIENT_ID" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AINTERNAL_EXCEPTION_FETCHING_CLIENT_ID", + "name": "INTERNAL_EXCEPTION_FETCHING_CLIENT_ID", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_INTERNAL_EXCEPTION_FETCHING_CLIENT_ID" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AINVALID_REDIRECT_URI", + "name": "INVALID_REDIRECT_URI", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_INVALID_REDIRECT_URI" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AINVALID_CLIENT_ID", + "name": "INVALID_CLIENT_ID", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_INVALID_CLIENT_ID" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AINVALID_STATE", + "name": "INVALID_STATE", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_INVALID_STATE" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AINVALID_CODE_CHALLENGE", + "name": "INVALID_CODE_CHALLENGE", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_INVALID_CODE_CHALLENGE" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AINVALID_SCOPE", + "name": "INVALID_SCOPE", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_INVALID_SCOPE" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003AEXC_INFO", + "name": "EXC_INFO", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#constant_EXC_INFO" + }, { + "fqsen": "\\Taproot\\IndieAuth\\IndieAuthException\u003A\u003A\u0024request", + "name": "request", + "summary": "", + "url": "classes/Taproot-IndieAuth-IndieAuthException.html#property_request" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\ClosureRequestHandler", + "name": "ClosureRequestHandler", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-ClosureRequestHandler.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\ClosureRequestHandler\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-ClosureRequestHandler.html#method___construct" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\ClosureRequestHandler\u003A\u003Ahandle\u0028\u0029", + "name": "handle", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-ClosureRequestHandler.html#method_handle" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\ClosureRequestHandler\u003A\u003A\u0024callable", + "name": "callable", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-ClosureRequestHandler.html#property_callable" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\ClosureRequestHandler\u003A\u003A\u0024args", + "name": "args", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-ClosureRequestHandler.html#property_args" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware", + "name": "DoubleSubmitCookieCsrfMiddleware", + "summary": "Double\u002DSubmit\u0020Cookie\u0020CSRF\u0020Middleware", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "Constructor", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#method___construct" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003AsetLogger\u0028\u0029", + "name": "setLogger", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#method_setLogger" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003Aprocess\u0028\u0029", + "name": "process", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#method_process" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003AisValid\u0028\u0029", + "name": "isValid", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#method_isValid" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003AREAD_METHODS", + "name": "READ_METHODS", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#constant_READ_METHODS" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003ATTL", + "name": "TTL", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#constant_TTL" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003AATTRIBUTE", + "name": "ATTRIBUTE", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#constant_ATTRIBUTE" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003ADEFAULT_ERROR_RESPONSE_STRING", + "name": "DEFAULT_ERROR_RESPONSE_STRING", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#constant_DEFAULT_ERROR_RESPONSE_STRING" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003ACSRF_TOKEN_LENGTH", + "name": "CSRF_TOKEN_LENGTH", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#constant_CSRF_TOKEN_LENGTH" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003A\u0024attribute", + "name": "attribute", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#property_attribute" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003A\u0024ttl", + "name": "ttl", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#property_ttl" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003A\u0024errorResponse", + "name": "errorResponse", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#property_errorResponse" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003A\u0024tokenLength", + "name": "tokenLength", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#property_tokenLength" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\DoubleSubmitCookieCsrfMiddleware\u003A\u003A\u0024logger", + "name": "logger", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-DoubleSubmitCookieCsrfMiddleware.html#property_logger" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\NoOpMiddleware", + "name": "NoOpMiddleware", + "summary": "No\u002DOp\u0020Middleware", + "url": "classes/Taproot-IndieAuth-Middleware-NoOpMiddleware.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\NoOpMiddleware\u003A\u003Aprocess\u0028\u0029", + "name": "process", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-NoOpMiddleware.html#method_process" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\ResponseRequestHandler", + "name": "ResponseRequestHandler", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-ResponseRequestHandler.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\ResponseRequestHandler\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-ResponseRequestHandler.html#method___construct" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\ResponseRequestHandler\u003A\u003Ahandle\u0028\u0029", + "name": "handle", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-ResponseRequestHandler.html#method_handle" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware\\ResponseRequestHandler\u003A\u003A\u0024response", + "name": "response", + "summary": "", + "url": "classes/Taproot-IndieAuth-Middleware-ResponseRequestHandler.html#property_response" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server", + "name": "Server", + "summary": "IndieAuth\u0020Server", + "url": "classes/Taproot-IndieAuth-Server.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "Constructor", + "url": "classes/Taproot-IndieAuth-Server.html#method___construct" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003AgetTokenStorage\u0028\u0029", + "name": "getTokenStorage", + "summary": "", + "url": "classes/Taproot-IndieAuth-Server.html#method_getTokenStorage" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003AhandleAuthorizationEndpointRequest\u0028\u0029", + "name": "handleAuthorizationEndpointRequest", + "summary": "Handle\u0020Authorization\u0020Endpoint\u0020Request", + "url": "classes/Taproot-IndieAuth-Server.html#method_handleAuthorizationEndpointRequest" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003AhandleTokenEndpointRequest\u0028\u0029", + "name": "handleTokenEndpointRequest", + "summary": "Handle\u0020Token\u0020Endpoint\u0020Request", + "url": "classes/Taproot-IndieAuth-Server.html#method_handleTokenEndpointRequest" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003AhandleException\u0028\u0029", + "name": "handleException", + "summary": "Handle\u0020Exception", + "url": "classes/Taproot-IndieAuth-Server.html#method_handleException" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003AHANDLE_NON_INDIEAUTH_REQUEST", + "name": "HANDLE_NON_INDIEAUTH_REQUEST", + "summary": "", + "url": "classes/Taproot-IndieAuth-Server.html#constant_HANDLE_NON_INDIEAUTH_REQUEST" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003AHANDLE_AUTHENTICATION_REQUEST", + "name": "HANDLE_AUTHENTICATION_REQUEST", + "summary": "", + "url": "classes/Taproot-IndieAuth-Server.html#constant_HANDLE_AUTHENTICATION_REQUEST" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003AHASH_QUERY_STRING_KEY", + "name": "HASH_QUERY_STRING_KEY", + "summary": "The\u0020query\u0020string\u0020parameter\u0020key\u0020used\u0020for\u0020storing\u0020the\u0020hash\u0020used\u0020for\u0020validating\u0020authorization\u0020request\u0020parameters.", + "url": "classes/Taproot-IndieAuth-Server.html#constant_HASH_QUERY_STRING_KEY" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003ADEFAULT_CSRF_KEY", + "name": "DEFAULT_CSRF_KEY", + "summary": "The\u0020key\u0020used\u0020to\u0020store\u0020the\u0020CSRF\u0020token\u0020everywhere\u0020it\u2019s\u0020used\u003A\u0020Request\u0020parameters,\u0020Request\u0020body,\u0020and\u0020Cookies.", + "url": "classes/Taproot-IndieAuth-Server.html#constant_DEFAULT_CSRF_KEY" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003AAPPROVE_ACTION_KEY", + "name": "APPROVE_ACTION_KEY", + "summary": "The\u0020form\u0020data\u0020key\u0020used\u0020for\u0020identifying\u0020a\u0020request\u0020as\u0020an\u0020authorization\u0020\u0028consent\u0020screen\u0029\u0020form\u0020submissions.", + "url": "classes/Taproot-IndieAuth-Server.html#constant_APPROVE_ACTION_KEY" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003AAPPROVE_ACTION_VALUE", + "name": "APPROVE_ACTION_VALUE", + "summary": "The\u0020form\u0020data\u0020value\u0020used\u0020for\u0020identifying\u0020a\u0020request\u0020as\u0020an\u0020authorization\u0020\u0028consent\u0020screen\u0029\u0020form\u0020submissions.", + "url": "classes/Taproot-IndieAuth-Server.html#constant_APPROVE_ACTION_VALUE" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003A\u0024tokenStorage", + "name": "tokenStorage", + "summary": "", + "url": "classes/Taproot-IndieAuth-Server.html#property_tokenStorage" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003A\u0024authorizationForm", + "name": "authorizationForm", + "summary": "", + "url": "classes/Taproot-IndieAuth-Server.html#property_authorizationForm" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003A\u0024csrfMiddleware", + "name": "csrfMiddleware", + "summary": "", + "url": "classes/Taproot-IndieAuth-Server.html#property_csrfMiddleware" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003A\u0024logger", + "name": "logger", + "summary": "", + "url": "classes/Taproot-IndieAuth-Server.html#property_logger" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003A\u0024httpGetWithEffectiveUrl", + "name": "httpGetWithEffectiveUrl", + "summary": "", + "url": "classes/Taproot-IndieAuth-Server.html#property_httpGetWithEffectiveUrl" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003A\u0024handleAuthenticationRequestCallback", + "name": "handleAuthenticationRequestCallback", + "summary": "", + "url": "classes/Taproot-IndieAuth-Server.html#property_handleAuthenticationRequestCallback" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003A\u0024handleNonIndieAuthRequest", + "name": "handleNonIndieAuthRequest", + "summary": "", + "url": "classes/Taproot-IndieAuth-Server.html#property_handleNonIndieAuthRequest" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003A\u0024exceptionTemplatePath", + "name": "exceptionTemplatePath", + "summary": "", + "url": "classes/Taproot-IndieAuth-Server.html#property_exceptionTemplatePath" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Server\u003A\u003A\u0024secret", + "name": "secret", + "summary": "", + "url": "classes/Taproot-IndieAuth-Server.html#property_secret" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage", + "name": "FilesystemJsonStorage", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method___construct" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003AsetLogger\u0028\u0029", + "name": "setLogger", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method_setLogger" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003AcreateAuthCode\u0028\u0029", + "name": "createAuthCode", + "summary": "Create\u0020Auth\u0020Code", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method_createAuthCode" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003AexchangeAuthCodeForAccessToken\u0028\u0029", + "name": "exchangeAuthCodeForAccessToken", + "summary": "Exchange\u0020Authorization\u0020Code\u0020for\u0020Access\u0020Token", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method_exchangeAuthCodeForAccessToken" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003AgetAccessToken\u0028\u0029", + "name": "getAccessToken", + "summary": "Get\u0020Access\u0020Token", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method_getAccessToken" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003ArevokeAccessToken\u0028\u0029", + "name": "revokeAccessToken", + "summary": "Revoke\u0020Access\u0020Token", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method_revokeAccessToken" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003AdeleteExpiredTokens\u0028\u0029", + "name": "deleteExpiredTokens", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method_deleteExpiredTokens" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003Aget\u0028\u0029", + "name": "get", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method_get" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003Aput\u0028\u0029", + "name": "put", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method_put" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003Adelete\u0028\u0029", + "name": "delete", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method_delete" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003AgetPath\u0028\u0029", + "name": "getPath", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method_getPath" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003AwithLock\u0028\u0029", + "name": "withLock", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method_withLock" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003Ahash\u0028\u0029", + "name": "hash", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#method_hash" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003ADEFAULT_AUTH_CODE_TTL", + "name": "DEFAULT_AUTH_CODE_TTL", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#constant_DEFAULT_AUTH_CODE_TTL" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003ADEFAULT_ACCESS_TOKEN_TTL", + "name": "DEFAULT_ACCESS_TOKEN_TTL", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#constant_DEFAULT_ACCESS_TOKEN_TTL" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003ATOKEN_LENGTH", + "name": "TOKEN_LENGTH", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#constant_TOKEN_LENGTH" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003A\u0024path", + "name": "path", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#property_path" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003A\u0024authCodeTtl", + "name": "authCodeTtl", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#property_authCodeTtl" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003A\u0024accessTokenTtl", + "name": "accessTokenTtl", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#property_accessTokenTtl" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003A\u0024secret", + "name": "secret", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#property_secret" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\FilesystemJsonStorage\u003A\u003A\u0024logger", + "name": "logger", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-FilesystemJsonStorage.html#property_logger" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\Sqlite3Storage", + "name": "Sqlite3Storage", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-Sqlite3Storage.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\Token", + "name": "Token", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-Token.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\Token\u003A\u003A__construct\u0028\u0029", + "name": "__construct", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-Token.html#method___construct" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\Token\u003A\u003AgetData\u0028\u0029", + "name": "getData", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-Token.html#method_getData" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\Token\u003A\u003AgetKey\u0028\u0029", + "name": "getKey", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-Token.html#method_getKey" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\Token\u003A\u003A__toString\u0028\u0029", + "name": "__toString", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-Token.html#method___toString" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\Token\u003A\u003AjsonSerialize\u0028\u0029", + "name": "jsonSerialize", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-Token.html#method_jsonSerialize" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\Token\u003A\u003A\u0024key", + "name": "key", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-Token.html#property_key" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\Token\u003A\u003A\u0024data", + "name": "data", + "summary": "", + "url": "classes/Taproot-IndieAuth-Storage-Token.html#property_data" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\TokenStorageInterface", + "name": "TokenStorageInterface", + "summary": "Token\u0020Storage\u0020Interface", + "url": "classes/Taproot-IndieAuth-Storage-TokenStorageInterface.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\TokenStorageInterface\u003A\u003AcreateAuthCode\u0028\u0029", + "name": "createAuthCode", + "summary": "Create\u0020Auth\u0020Code", + "url": "classes/Taproot-IndieAuth-Storage-TokenStorageInterface.html#method_createAuthCode" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\TokenStorageInterface\u003A\u003AexchangeAuthCodeForAccessToken\u0028\u0029", + "name": "exchangeAuthCodeForAccessToken", + "summary": "Exchange\u0020Authorization\u0020Code\u0020for\u0020Access\u0020Token", + "url": "classes/Taproot-IndieAuth-Storage-TokenStorageInterface.html#method_exchangeAuthCodeForAccessToken" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\TokenStorageInterface\u003A\u003AgetAccessToken\u0028\u0029", + "name": "getAccessToken", + "summary": "Get\u0020Access\u0020Token", + "url": "classes/Taproot-IndieAuth-Storage-TokenStorageInterface.html#method_getAccessToken" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage\\TokenStorageInterface\u003A\u003ArevokeAccessToken\u0028\u0029", + "name": "revokeAccessToken", + "summary": "Revoke\u0020Access\u0020Token", + "url": "classes/Taproot-IndieAuth-Storage-TokenStorageInterface.html#method_revokeAccessToken" + }, { + "fqsen": "\\", + "name": "\\", + "summary": "", + "url": "namespaces/default.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Callback", + "name": "Callback", + "summary": "", + "url": "namespaces/taproot-indieauth-callback.html" + }, { + "fqsen": "\\Taproot\\IndieAuth", + "name": "IndieAuth", + "summary": "", + "url": "namespaces/taproot-indieauth.html" + }, { + "fqsen": "\\Taproot", + "name": "Taproot", + "summary": "", + "url": "namespaces/taproot.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Middleware", + "name": "Middleware", + "summary": "", + "url": "namespaces/taproot-indieauth-middleware.html" + }, { + "fqsen": "\\Taproot\\IndieAuth\\Storage", + "name": "Storage", + "summary": "", + "url": "namespaces/taproot-indieauth-storage.html" + } ] +); diff --git a/docs/namespaces/default.html b/docs/namespaces/default.html new file mode 100644 index 0000000..0ef5202 --- /dev/null +++ b/docs/namespaces/default.html @@ -0,0 +1,119 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                            +

                                                            Documentation

                                                            + + + + + +
                                                            + +
                                                            +
                                                            + + + + +
                                                            +
                                                              +
                                                            + +
                                                            +

                                                            API Documentation

                                                            + + +

                                                            + Namespaces + +

                                                            + +
                                                            +
                                                            Taproot
                                                            +
                                                            + + + + + + + +
                                                            +
                                                            +
                                                            +
                                                            +

                                                            Search results

                                                            + +
                                                            +
                                                            +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              +
                                                              + + +
                                                              + + + + diff --git a/docs/namespaces/taproot-indieauth-callback.html b/docs/namespaces/taproot-indieauth-callback.html new file mode 100644 index 0000000..3de8d79 --- /dev/null +++ b/docs/namespaces/taproot-indieauth-callback.html @@ -0,0 +1,128 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                              +

                                                              Documentation

                                                              + + + + + +
                                                              + +
                                                              +
                                                              + + + + +
                                                              + + + +
                                                              +
                                                              +
                                                              +

                                                              Search results

                                                              + +
                                                              +
                                                              +
                                                                +
                                                                +
                                                                +
                                                                +
                                                                +
                                                                + + +
                                                                + + + + diff --git a/docs/namespaces/taproot-indieauth-middleware.html b/docs/namespaces/taproot-indieauth-middleware.html new file mode 100644 index 0000000..b00dc28 --- /dev/null +++ b/docs/namespaces/taproot-indieauth-middleware.html @@ -0,0 +1,130 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                                +

                                                                Documentation

                                                                + + + + + +
                                                                + +
                                                                +
                                                                + + + + +
                                                                + + + +
                                                                +
                                                                +
                                                                +

                                                                Search results

                                                                + +
                                                                +
                                                                +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  +
                                                                  + + +
                                                                  + + + + diff --git a/docs/namespaces/taproot-indieauth-storage.html b/docs/namespaces/taproot-indieauth-storage.html new file mode 100644 index 0000000..d535d55 --- /dev/null +++ b/docs/namespaces/taproot-indieauth-storage.html @@ -0,0 +1,130 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                                  +

                                                                  Documentation

                                                                  + + + + + +
                                                                  + +
                                                                  +
                                                                  + + + + +
                                                                  + + + +
                                                                  +
                                                                  +
                                                                  +

                                                                  Search results

                                                                  + +
                                                                  +
                                                                  +
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    +
                                                                    + + +
                                                                    + + + + diff --git a/docs/namespaces/taproot-indieauth.html b/docs/namespaces/taproot-indieauth.html new file mode 100644 index 0000000..bc47bea --- /dev/null +++ b/docs/namespaces/taproot-indieauth.html @@ -0,0 +1,1012 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                                    +

                                                                    Documentation

                                                                    + + + + + +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    + + +
                                                                    +

                                                                    IndieAuth

                                                                    + + +

                                                                    + Namespaces + +

                                                                    + +
                                                                    +
                                                                    Callback
                                                                    +
                                                                    Middleware
                                                                    +
                                                                    Storage
                                                                    +
                                                                    + +

                                                                    + Interfaces, Classes and Traits + +

                                                                    + +
                                                                    + +
                                                                    IndieAuthException
                                                                    +
                                                                    +
                                                                    Server
                                                                    +
                                                                    IndieAuth Server
                                                                    + +
                                                                    + + +

                                                                    + Table of Contents + +

                                                                    + +
                                                                    +
                                                                    + generateRandomString() + +  : mixed +
                                                                    +
                                                                    + +
                                                                    + generateRandomPrintableAsciiString() + +  : mixed +
                                                                    +
                                                                    + +
                                                                    + generatePKCECodeChallenge() + +  : mixed +
                                                                    +
                                                                    + +
                                                                    + base64_urlencode() + +  : mixed +
                                                                    +
                                                                    + +
                                                                    + hashAuthorizationRequestParameters() + +  : string|null +
                                                                    +
                                                                    + +
                                                                    + isIndieAuthAuthorizationCodeRedeemingRequest() + +  : mixed +
                                                                    +
                                                                    + +
                                                                    + isIndieAuthAuthorizationRequest() + +  : mixed +
                                                                    +
                                                                    + +
                                                                    + isAuthorizationApprovalRequest() + +  : mixed +
                                                                    +
                                                                    + +
                                                                    + buildQueryString() + +  : mixed +
                                                                    +
                                                                    + +
                                                                    + urlComponentsMatch() + +  : bool +
                                                                    +
                                                                    + +
                                                                    + appendQueryParams() + +  : mixed +
                                                                    +
                                                                    Append Query Parameters
                                                                    + +
                                                                    + trySetLogger() + +  : mixed +
                                                                    +
                                                                    Try setLogger
                                                                    + +
                                                                    + renderTemplate() + +  : mixed +
                                                                    +
                                                                    + +
                                                                    + isClientIdentifier() + +  : bool +
                                                                    +
                                                                    Check if a provided string matches the IndieAuth criteria for a Client Identifier.
                                                                    + +
                                                                    + isProfileUrl() + +  : bool +
                                                                    +
                                                                    Check if a provided string matches the IndieAuth criteria for a User Profile URL.
                                                                    + +
                                                                    + isValidState() + +  : bool +
                                                                    +
                                                                    OAuth 2.0 limits what values are valid for state.
                                                                    + +
                                                                    + isValidCodeChallenge() + +  : bool +
                                                                    +
                                                                    IndieAuth requires PKCE. This implementation supports only S256 for hashing.
                                                                    + +
                                                                    + isValidScope() + +  : bool +
                                                                    +
                                                                    OAuth 2.0 limits what values are valid for scope.
                                                                    + +
                                                                    + + + +
                                                                    +

                                                                    + Functions + +

                                                                    +
                                                                    +

                                                                    + generateRandomString() + +

                                                                    + + + + + + generateRandomString(mixed $numBytes) : mixed + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $numBytes + : mixed +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + generateRandomPrintableAsciiString() + +

                                                                    + + + + + + generateRandomPrintableAsciiString(int $length) : mixed + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $length + : int +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + generatePKCECodeChallenge() + +

                                                                    + + + + + + generatePKCECodeChallenge(mixed $plaintext) : mixed + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $plaintext + : mixed +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + base64_urlencode() + +

                                                                    + + + + + + base64_urlencode(mixed $string) : mixed + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $string + : mixed +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + hashAuthorizationRequestParameters() + +

                                                                    + + + + + + hashAuthorizationRequestParameters(ServerRequestInterface $request, string $secret[, string|null $algo = null ][, array<string|int, mixed>|null $hashedParameters = null ]) : string|null + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $request + : ServerRequestInterface +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + $secret + : string +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + $algo + : string|null + = null
                                                                    +
                                                                    + +
                                                                    +
                                                                    + $hashedParameters + : array<string|int, mixed>|null + = null
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + isIndieAuthAuthorizationCodeRedeemingRequest() + +

                                                                    + + + + + + isIndieAuthAuthorizationCodeRedeemingRequest(ServerRequestInterface $request) : mixed + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $request + : ServerRequestInterface +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + isIndieAuthAuthorizationRequest() + +

                                                                    + + + + + + isIndieAuthAuthorizationRequest(ServerRequestInterface $request[, mixed $permittedMethods = ['get'] ]) : mixed + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $request + : ServerRequestInterface +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + $permittedMethods + : mixed + = ['get']
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + isAuthorizationApprovalRequest() + +

                                                                    + + + + + + isAuthorizationApprovalRequest(ServerRequestInterface $request) : mixed + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $request + : ServerRequestInterface +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + buildQueryString() + +

                                                                    + + + + + + buildQueryString(array<string|int, mixed> $parameters) : mixed + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $parameters + : array<string|int, mixed> +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + urlComponentsMatch() + +

                                                                    + + + + + + urlComponentsMatch(mixed $url1, mixed $url2[, array<string|int, mixed>|null $components = null ]) : bool + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $url1 + : mixed +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + $url2 + : mixed +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + $components + : array<string|int, mixed>|null + = null
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + appendQueryParams() + +

                                                                    + + +

                                                                    Append Query Parameters

                                                                    + + + + appendQueryParams(string $uri, array<string|int, mixed> $queryParams) : mixed + +

                                                                    Converts $queryParams into a query string, then checks $uri for an +existing query string. Then appends the newly generated query string +with either ? or & as appropriate.

                                                                    +
                                                                    + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $uri + : string +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + $queryParams + : array<string|int, mixed> +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + trySetLogger() + +

                                                                    + + +

                                                                    Try setLogger

                                                                    + + + + trySetLogger(mixed $target, LoggerInterface $logger) : mixed + +

                                                                    If $target implements LoggerAwareInterface, set it’s logger +to $logger. Returns $target.

                                                                    +
                                                                    + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $target + : mixed +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + $logger + : LoggerInterface +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + renderTemplate() + +

                                                                    + + + + + + renderTemplate(string $template[, array<string|int, mixed> $context = [] ]) : mixed + + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $template + : string +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + $context + : array<string|int, mixed> + = []
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + + + +
                                                                    +
                                                                    +

                                                                    + isClientIdentifier() + +

                                                                    + + +

                                                                    Check if a provided string matches the IndieAuth criteria for a Client Identifier.

                                                                    + + + + isClientIdentifier(string $client_id) : bool + +
                                                                    + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $client_id + : string +
                                                                    +
                                                                    +

                                                                    The client ID provided by the OAuth Client

                                                                    +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    + Tags + +
                                                                    +
                                                                    +
                                                                    + see +
                                                                    +
                                                                    + https://indieauth.spec.indieweb.org/#client-identifier + +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    +

                                                                    + isProfileUrl() + +

                                                                    + + +

                                                                    Check if a provided string matches the IndieAuth criteria for a User Profile URL.

                                                                    + + + + isProfileUrl(string $profile_url) : bool + +
                                                                    + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $profile_url + : string +
                                                                    +
                                                                    +

                                                                    The profile URL provided by the IndieAuth Client as me

                                                                    +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    + Tags + +
                                                                    +
                                                                    +
                                                                    + see +
                                                                    +
                                                                    + https://indieauth.spec.indieweb.org/#user-profile-url + +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    +

                                                                    + isValidState() + +

                                                                    + + +

                                                                    OAuth 2.0 limits what values are valid for state.

                                                                    + + + + isValidState(string $state) : bool + +

                                                                    We check this first, because if valid, we want to send it along with other errors.

                                                                    +
                                                                    + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $state + : string +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    + Tags + +
                                                                    +
                                                                    +
                                                                    + see +
                                                                    +
                                                                    + https://tools.ietf.org/html/rfc6749#appendix-A.5 + +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    +

                                                                    + isValidCodeChallenge() + +

                                                                    + + +

                                                                    IndieAuth requires PKCE. This implementation supports only S256 for hashing.

                                                                    + + + + isValidCodeChallenge(string $challenge) : bool + +
                                                                    + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $challenge + : string +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    + Tags + +
                                                                    +
                                                                    +
                                                                    + see +
                                                                    +
                                                                    + https://indieauth.spec.indieweb.org/#authorization-request + +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    +

                                                                    + isValidScope() + +

                                                                    + + +

                                                                    OAuth 2.0 limits what values are valid for scope.

                                                                    + + + + isValidScope(string $scope) : bool + +
                                                                    + +
                                                                    Parameters
                                                                    +
                                                                    +
                                                                    + $scope + : string +
                                                                    +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    + Tags + +
                                                                    +
                                                                    +
                                                                    + see +
                                                                    +
                                                                    + https://tools.ietf.org/html/rfc6749#section-3.3 + +
                                                                    + +
                                                                    +
                                                                    + + +
                                                                    +
                                                                    + +
                                                                    +
                                                                    +
                                                                    +
                                                                    +

                                                                    Search results

                                                                    + +
                                                                    +
                                                                    +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      +
                                                                      + + +
                                                                      + + + + diff --git a/docs/namespaces/taproot.html b/docs/namespaces/taproot.html new file mode 100644 index 0000000..146c42d --- /dev/null +++ b/docs/namespaces/taproot.html @@ -0,0 +1,119 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                                      +

                                                                      Documentation

                                                                      + + + + + +
                                                                      + +
                                                                      +
                                                                      + + + + +
                                                                      +
                                                                        +
                                                                      + +
                                                                      +

                                                                      Taproot

                                                                      + + +

                                                                      + Namespaces + +

                                                                      + +
                                                                      +
                                                                      IndieAuth
                                                                      +
                                                                      + + + + + + + +
                                                                      +
                                                                      +
                                                                      +
                                                                      +

                                                                      Search results

                                                                      + +
                                                                      +
                                                                      +
                                                                        +
                                                                        +
                                                                        +
                                                                        +
                                                                        +
                                                                        + + +
                                                                        + + + + diff --git a/docs/packages/default.html b/docs/packages/default.html new file mode 100644 index 0000000..a2bbab7 --- /dev/null +++ b/docs/packages/default.html @@ -0,0 +1,1023 @@ + + + + + Documentation + + + + + + + + + + + + + + + +
                                                                        +

                                                                        Documentation

                                                                        + + + + + +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                          +
                                                                        + +
                                                                        +

                                                                        Default

                                                                        + + + +

                                                                        + Interfaces, Classes and Traits + +

                                                                        + +
                                                                        +
                                                                        AuthorizationFormInterface
                                                                        +
                                                                        Authorization Form Interface
                                                                        +
                                                                        TokenStorageInterface
                                                                        +
                                                                        Token Storage Interface
                                                                        + +
                                                                        DefaultAuthorizationForm
                                                                        +
                                                                        +
                                                                        SingleUserPasswordAuthenticationCallback
                                                                        +
                                                                        Single User Password Authentication Callback
                                                                        +
                                                                        IndieAuthException
                                                                        +
                                                                        +
                                                                        ClosureRequestHandler
                                                                        +
                                                                        +
                                                                        DoubleSubmitCookieCsrfMiddleware
                                                                        +
                                                                        Double-Submit Cookie CSRF Middleware
                                                                        +
                                                                        NoOpMiddleware
                                                                        +
                                                                        No-Op Middleware
                                                                        +
                                                                        ResponseRequestHandler
                                                                        +
                                                                        +
                                                                        Server
                                                                        +
                                                                        IndieAuth Server
                                                                        +
                                                                        FilesystemJsonStorage
                                                                        +
                                                                        +
                                                                        Sqlite3Storage
                                                                        +
                                                                        +
                                                                        Token
                                                                        +
                                                                        + +
                                                                        + + +

                                                                        + Table of Contents + +

                                                                        + +
                                                                        +
                                                                        + generateRandomString() + +  : mixed +
                                                                        +
                                                                        + +
                                                                        + generateRandomPrintableAsciiString() + +  : mixed +
                                                                        +
                                                                        + +
                                                                        + generatePKCECodeChallenge() + +  : mixed +
                                                                        +
                                                                        + +
                                                                        + base64_urlencode() + +  : mixed +
                                                                        +
                                                                        + +
                                                                        + hashAuthorizationRequestParameters() + +  : string|null +
                                                                        +
                                                                        + +
                                                                        + isIndieAuthAuthorizationCodeRedeemingRequest() + +  : mixed +
                                                                        +
                                                                        + +
                                                                        + isIndieAuthAuthorizationRequest() + +  : mixed +
                                                                        +
                                                                        + +
                                                                        + isAuthorizationApprovalRequest() + +  : mixed +
                                                                        +
                                                                        + +
                                                                        + buildQueryString() + +  : mixed +
                                                                        +
                                                                        + +
                                                                        + urlComponentsMatch() + +  : bool +
                                                                        +
                                                                        + +
                                                                        + appendQueryParams() + +  : mixed +
                                                                        +
                                                                        Append Query Parameters
                                                                        + +
                                                                        + trySetLogger() + +  : mixed +
                                                                        +
                                                                        Try setLogger
                                                                        + +
                                                                        + renderTemplate() + +  : mixed +
                                                                        +
                                                                        + +
                                                                        + isClientIdentifier() + +  : bool +
                                                                        +
                                                                        Check if a provided string matches the IndieAuth criteria for a Client Identifier.
                                                                        + +
                                                                        + isProfileUrl() + +  : bool +
                                                                        +
                                                                        Check if a provided string matches the IndieAuth criteria for a User Profile URL.
                                                                        + +
                                                                        + isValidState() + +  : bool +
                                                                        +
                                                                        OAuth 2.0 limits what values are valid for state.
                                                                        + +
                                                                        + isValidCodeChallenge() + +  : bool +
                                                                        +
                                                                        IndieAuth requires PKCE. This implementation supports only S256 for hashing.
                                                                        + +
                                                                        + isValidScope() + +  : bool +
                                                                        +
                                                                        OAuth 2.0 limits what values are valid for scope.
                                                                        + +
                                                                        + + + +
                                                                        +

                                                                        + Functions + +

                                                                        +
                                                                        +

                                                                        + generateRandomString() + +

                                                                        + + + + + + generateRandomString(mixed $numBytes) : mixed + + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $numBytes + : mixed +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + generateRandomPrintableAsciiString() + +

                                                                        + + + + + + generateRandomPrintableAsciiString(int $length) : mixed + + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $length + : int +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + generatePKCECodeChallenge() + +

                                                                        + + + + + + generatePKCECodeChallenge(mixed $plaintext) : mixed + + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $plaintext + : mixed +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + base64_urlencode() + +

                                                                        + + + + + + base64_urlencode(mixed $string) : mixed + + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $string + : mixed +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + hashAuthorizationRequestParameters() + +

                                                                        + + + + + + hashAuthorizationRequestParameters(ServerRequestInterface $request, string $secret[, string|null $algo = null ][, array<string|int, mixed>|null $hashedParameters = null ]) : string|null + + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $request + : ServerRequestInterface +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + $secret + : string +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + $algo + : string|null + = null
                                                                        +
                                                                        + +
                                                                        +
                                                                        + $hashedParameters + : array<string|int, mixed>|null + = null
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + isIndieAuthAuthorizationCodeRedeemingRequest() + +

                                                                        + + + + + + isIndieAuthAuthorizationCodeRedeemingRequest(ServerRequestInterface $request) : mixed + + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $request + : ServerRequestInterface +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + isIndieAuthAuthorizationRequest() + +

                                                                        + + + + + + isIndieAuthAuthorizationRequest(ServerRequestInterface $request[, mixed $permittedMethods = ['get'] ]) : mixed + + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $request + : ServerRequestInterface +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + $permittedMethods + : mixed + = ['get']
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + isAuthorizationApprovalRequest() + +

                                                                        + + + + + + isAuthorizationApprovalRequest(ServerRequestInterface $request) : mixed + + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $request + : ServerRequestInterface +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + buildQueryString() + +

                                                                        + + + + + + buildQueryString(array<string|int, mixed> $parameters) : mixed + + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $parameters + : array<string|int, mixed> +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + urlComponentsMatch() + +

                                                                        + + + + + + urlComponentsMatch(mixed $url1, mixed $url2[, array<string|int, mixed>|null $components = null ]) : bool + + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $url1 + : mixed +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + $url2 + : mixed +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + $components + : array<string|int, mixed>|null + = null
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + appendQueryParams() + +

                                                                        + + +

                                                                        Append Query Parameters

                                                                        + + + + appendQueryParams(string $uri, array<string|int, mixed> $queryParams) : mixed + +

                                                                        Converts $queryParams into a query string, then checks $uri for an +existing query string. Then appends the newly generated query string +with either ? or & as appropriate.

                                                                        +
                                                                        + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $uri + : string +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + $queryParams + : array<string|int, mixed> +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + trySetLogger() + +

                                                                        + + +

                                                                        Try setLogger

                                                                        + + + + trySetLogger(mixed $target, LoggerInterface $logger) : mixed + +

                                                                        If $target implements LoggerAwareInterface, set it’s logger +to $logger. Returns $target.

                                                                        +
                                                                        + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $target + : mixed +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + $logger + : LoggerInterface +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + renderTemplate() + +

                                                                        + + + + + + renderTemplate(string $template[, array<string|int, mixed> $context = [] ]) : mixed + + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $template + : string +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + $context + : array<string|int, mixed> + = []
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + + + +
                                                                        +
                                                                        +

                                                                        + isClientIdentifier() + +

                                                                        + + +

                                                                        Check if a provided string matches the IndieAuth criteria for a Client Identifier.

                                                                        + + + + isClientIdentifier(string $client_id) : bool + +
                                                                        + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $client_id + : string +
                                                                        +
                                                                        +

                                                                        The client ID provided by the OAuth Client

                                                                        +
                                                                        + +
                                                                        +
                                                                        + + +
                                                                        + Tags + +
                                                                        +
                                                                        +
                                                                        + see +
                                                                        +
                                                                        + https://indieauth.spec.indieweb.org/#client-identifier + +
                                                                        + +
                                                                        +
                                                                        + + +
                                                                        +
                                                                        +

                                                                        + isProfileUrl() + +

                                                                        + + +

                                                                        Check if a provided string matches the IndieAuth criteria for a User Profile URL.

                                                                        + + + + isProfileUrl(string $profile_url) : bool + +
                                                                        + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $profile_url + : string +
                                                                        +
                                                                        +

                                                                        The profile URL provided by the IndieAuth Client as me

                                                                        +
                                                                        + +
                                                                        +
                                                                        + + +
                                                                        + Tags + +
                                                                        +
                                                                        +
                                                                        + see +
                                                                        +
                                                                        + https://indieauth.spec.indieweb.org/#user-profile-url + +
                                                                        + +
                                                                        +
                                                                        + + +
                                                                        +
                                                                        +

                                                                        + isValidState() + +

                                                                        + + +

                                                                        OAuth 2.0 limits what values are valid for state.

                                                                        + + + + isValidState(string $state) : bool + +

                                                                        We check this first, because if valid, we want to send it along with other errors.

                                                                        +
                                                                        + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $state + : string +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + +
                                                                        + Tags + +
                                                                        +
                                                                        +
                                                                        + see +
                                                                        +
                                                                        + https://tools.ietf.org/html/rfc6749#appendix-A.5 + +
                                                                        + +
                                                                        +
                                                                        + + +
                                                                        +
                                                                        +

                                                                        + isValidCodeChallenge() + +

                                                                        + + +

                                                                        IndieAuth requires PKCE. This implementation supports only S256 for hashing.

                                                                        + + + + isValidCodeChallenge(string $challenge) : bool + +
                                                                        + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $challenge + : string +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + +
                                                                        + Tags + +
                                                                        +
                                                                        +
                                                                        + see +
                                                                        +
                                                                        + https://indieauth.spec.indieweb.org/#authorization-request + +
                                                                        + +
                                                                        +
                                                                        + + +
                                                                        +
                                                                        +

                                                                        + isValidScope() + +

                                                                        + + +

                                                                        OAuth 2.0 limits what values are valid for scope.

                                                                        + + + + isValidScope(string $scope) : bool + +
                                                                        + +
                                                                        Parameters
                                                                        +
                                                                        +
                                                                        + $scope + : string +
                                                                        +
                                                                        + +
                                                                        +
                                                                        + + +
                                                                        + Tags + +
                                                                        +
                                                                        +
                                                                        + see +
                                                                        +
                                                                        + https://tools.ietf.org/html/rfc6749#section-3.3 + +
                                                                        + +
                                                                        +
                                                                        + + +
                                                                        +
                                                                        + +
                                                                        +
                                                                        +
                                                                        +
                                                                        +

                                                                        Search results

                                                                        + +
                                                                        +
                                                                        +
                                                                          +
                                                                          +
                                                                          +
                                                                          +
                                                                          +
                                                                          + + +
                                                                          + + + + diff --git a/docs/reports/deprecated.html b/docs/reports/deprecated.html new file mode 100644 index 0000000..a8a0394 --- /dev/null +++ b/docs/reports/deprecated.html @@ -0,0 +1,109 @@ + + + + + Documentation » Deprecated elements + + + + + + + + + + + + + + + + +
                                                                          +

                                                                          Documentation

                                                                          + + + + + +
                                                                          + +
                                                                          +
                                                                          + + + + +
                                                                          + + +
                                                                          +

                                                                          Deprecated

                                                                          + + +
                                                                          + No deprecated elements have been found in this project. +
                                                                          +
                                                                          +
                                                                          +
                                                                          +
                                                                          +

                                                                          Search results

                                                                          + +
                                                                          +
                                                                          +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            +
                                                                            + + +
                                                                            + + + + diff --git a/docs/reports/errors.html b/docs/reports/errors.html new file mode 100644 index 0000000..3d51c8b --- /dev/null +++ b/docs/reports/errors.html @@ -0,0 +1,108 @@ + + + + + Documentation » Compilation errors + + + + + + + + + + + + + + + + +
                                                                            +

                                                                            Documentation

                                                                            + + + + + +
                                                                            + +
                                                                            +
                                                                            + + + + +
                                                                            + + +
                                                                            +

                                                                            Errors

                                                                            + + +
                                                                            No errors have been found in this project.
                                                                            + +
                                                                            +
                                                                            +
                                                                            +
                                                                            +

                                                                            Search results

                                                                            + +
                                                                            +
                                                                            +
                                                                              +
                                                                              +
                                                                              +
                                                                              +
                                                                              +
                                                                              + + +
                                                                              + + + + diff --git a/docs/reports/markers.html b/docs/reports/markers.html new file mode 100644 index 0000000..8879341 --- /dev/null +++ b/docs/reports/markers.html @@ -0,0 +1,109 @@ + + + + + Documentation » Markers + + + + + + + + + + + + + + + + +
                                                                              +

                                                                              Documentation

                                                                              + + + + + +
                                                                              + +
                                                                              +
                                                                              + + + + +
                                                                              + + +
                                                                              +

                                                                              Markers

                                                                              + +
                                                                              + No markers have been found in this project. +
                                                                              + +
                                                                              +
                                                                              +
                                                                              +
                                                                              +

                                                                              Search results

                                                                              + +
                                                                              +
                                                                              +
                                                                                +
                                                                                +
                                                                                +
                                                                                +
                                                                                +
                                                                                + + +
                                                                                + + + + diff --git a/phpdoc.dist.xml b/phpdoc.dist.xml new file mode 100644 index 0000000..c3af03c --- /dev/null +++ b/phpdoc.dist.xml @@ -0,0 +1,18 @@ + + + + + docs + + + + + src + + + + \ No newline at end of file