Metadata-Version: 2.1
Name: woocommerce-subscriptions-check
Version: 1.0.4
Summary: Check user subscriptions in Woocommerce without have and admin role
Home-page: https://github.com/cr0hn/woocommerce-subscriptions-check
Author: Daniel Garcia (cr0hn)
License: UNKNOWN
Description: WooCommerce Subscription Checker
        ================================
        
        +----------------+-----------------------------------------------------------------+
        |Current version | 1.0                                                           |
        +----------------+-----------------------------------------------------------------+
        |Project site    | https://github.com/cr0hn/woocommerce-subscription-check         |
        +----------------+-----------------------------------------------------------------+
        |Issues          | https://github.com/cr0hn/woocommerce-subscription-check/issues/ |
        +----------------+-----------------------------------------------------------------+
        |Python versions | 3.6 or above                                                    |
        +----------------+-----------------------------------------------------------------+
        
        
        Motivations
        ===========
        
        Woocommerce doesn't allow to check the user subscriptions (or any other data) from the Wordpress API without being an admin user.
        
        This means that if a regular user want to check their subscriptions, products or something else, it need to be an admin role. And, in non-secure scenarios, this is not good idea, i.e: in the browser through Javascript
        
        What that project does?
        =======================
        
        This project exposes non-privileged API and allow to regular users to check their subscription, without the need to have an admin role.
        
        Requirements
        ============
        
        You must install in your Wordpress the plugins:
        
        - JWT Authentication for WP-API
        - WP REST API
        - Disable REST API and Require JWT (Recommendable)
        
        **IMPORTANT**
        
        Be careful with JWT plugin. Ensure you follow these steps, in the same order:
        
        1 - Add to wp-config.php
        ------------------------
        
        Add these lines in your wp-config.php:
        
        define('JWT_AUTH_SECRET_KEY', 'your-top-secrect-key');
        define('JWT_AUTH_CORS_ENABLE', true);
        
        **IT'S MORE IMPORTANT** to add these lines just before the definition of AUTH_KEY, SECURE_AUTH_KEY... (https://github.com/Tmeister/wp-api-jwt-auth/issues/59)
        
        2 - Activate the plugin
        -----------------------
        
        After you add the data from step 1, then activate the plugin.
        
        Environment vars
        ================
        
        - LISTEN_ADDR (default: 127.0.0.1)
        - LISTEN_PORT (default: 9000)
        - API_PREFIX (default: v1)
        - LOG_LEVEL (default: 1)
        - SENTRY_DSN (default: None)
        - REDIS_HOST (default: 127.0.0.1)
        - REDIS_PORT (default: 6379)
        - REDIS_DB (default: 1)
        - SCHEME (default: https)
        - DOMAIN: **Mandatory**
        - ADMIN_ROLE_USER: **Mandatory**
        - ADMIN_ROLE_PASSWORD: **Mandatory**
        
        
        Using Docker
        ============
        
        .. code-block:: bash
        
            > docker run -p 9000:9000 --rm cr0hn/woocommerce-subscription-check
        
        Using Pypi
        ==========
        
        .. code-block:: bash
        
            > python3.6 -m pip install woocommerce_subscriptions_check
        
        Installing with Sentry support:
        
        
        .. code-block:: bash
        
            > python3.6 -m pip install woocommerce_subscriptions_check[sentry]
        
        
        End-points
        ==========
        
        /api/v1/login
        --------------
        
        **General**
        
        - Method: POST
        - Input data as JSON
        - Input value: user / password
        
        **Example request**
        
        .. code-block:: bash
        
            > curl -v -X POST http://127.0.0.1:9000/api/v1/login -d '{"user": "MyUser", "password": "MyPassword"}'
        
        **Example responses**
        
        *Authentication done*
        
        - HTTP STATUS: 200
        - Response:
        
        .. code-block:: json
        
            {"token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI19s82.eyJpc3MiOiJodHRwczpcL1wvd2hvaXNsZWF2aW5nLmNvbSIsImlhdCI6MTUyMzQ0ODQxMSwibmJmIjoxNTIzNDQ4NDExLCJleHAiOjE1MjQwNTMyMTEsImRhdGEiOnsidXNlciI6eyJpZCI6IjIifX19.bu8ChmreEqDt5wwACSB5L_-8V9hHPRzJI-zGHB1Unv4"}
        
        
        *Authentication fails*
        
        - HTTP STATUS: 403
        - Response:
        
        .. code-block:: json
        
            {"message":"Invalid user or password"}
        
        *Invalid Data*
        
        - HTTP STATUS: 400
        - Response: "Invalid JSON"
        
        /api/v1/subscriptions
        ---------------------
        
        **General**
        
        - Method: GET
        - Input value: user / password
        
        **Example request**
        
        .. code-block:: bash
        
            > curl -v -X POST http://127.0.0.1:9000/api/v1/subscriptions -H 'Authorization: Bearer TOKEN_FROM_LOGIN'
        
        **Example responses**
        
        *user has subscriptions*
        
        - HTTP STATUS: 200
        - Response:
        
        .. code-block:: json
        
            {
                "subscriptionName": "micro",
                "subscriptionStatus": "active",
                "expireDate": "2018-05-10T16:17:31"
            }
        
        *user has NOT subscriptions*
        
        - HTTP STATUS: 200
        - Response:
        
        .. code-block:: json
        
            {
                "subscriptionName": null,
                "subscriptionStatus": null,
                "expireDate": null
            }
        
        *Authentication fails*
        
        - HTTP STATUS: 403
        - Response:
        
        .. code-block:: json
        
            {"message":"Invalid token. You must authenticate first"}
        
        *Invalid Data*
        
        - HTTP STATUS: 400
        - Response: "Invalid JSON"
Platform: UNKNOWN
Classifier: Environment :: Console
Classifier: Intended Audience :: System Administrators
Classifier: Intended Audience :: Other Audience
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: MacOS
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX
Classifier: Programming Language :: Python :: 3
Provides-Extra: sentry
