Metadata-Version: 2.1
Name: aiohttp-login-jwt
Version: 1.4.1
Summary: Registration and authorization (including social) for aiohttp apps
Home-page: https://github.com/kirlf/aiohttp-login-jwt
Author: Imbolc, Vladimir Fadeev
Author-email: vovenur@gmail.com
License: ISC
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: ISC License (ISCL)
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Requires-Dist: aiohttp
Requires-Dist: aiohttp-jinja2
Requires-Dist: aiohttp-session[secure]
Requires-Dist: wtforms
Requires-Dist: passlib
Requires-Dist: aiosmtplib

This fork of imbolc/aiohttp-login is developed for the based on
   **JWT** tokens registration and login procedures.

   Moreover, the following options are added into the ``cfg.py`` for the
   contained in JWT roles: - ``"ROLES_API_BLACK_LIST": {}`` - for the
   configuration of forbiden endpoints for certain roles; -
   ``"ROLES_API_LIMITS": {}`` - for the configuration of API calls
   limits for certain roles; - ``"CACHE"`` - Redis or KeyDB object for
   calls counting (cache storage) (default ``None`` that means no
   restrictions); - ``"API_CALL_LIMIT_EXPIRATION_TIME"`` - time interval
   in minutes within which number calls should be restricted (default
   ``60``).

aiohttp-login
=============

Registration and authorization (including social) for aiohttp apps

With just a few settings you’ll give for your
`aiohttp <https://github.com/KeepSafe/aiohttp>`__ site:

-  registration with email confirmation
-  authorization by email or social account (facebook, google and
   vkontakte for now)
-  reset password by email
-  change email with confirmation
-  edit current password

You can see all of this staff alive
`here <http://aiohttp-login.imbolc.name/>`__

Databases
---------

You can use this lib with different database backends:

-  postgres with `asyncpg <https://github.com/MagicStack/asyncpg>`__
-  mongodb with `motor <https://github.com/mongodb/motor>`__
-  the db you need - *it’s very easy to add a new backend*

UI themes
---------

The library designed to easily change UI themes. Currently
``bootstrap-3`` and ``bootstrap-4`` themes are available. But it’s very
easy to add new themes, actually theme - is just a folder with jinja2
templates.

Installation and configuration
------------------------------

Just install the library from pypi:

::

   pip install aiohttp-login

Choice and configure one of database storages.

For postgres with `asyncpg <https://github.com/MagicStack/asyncpg>`__:

.. code:: python

   import asyncpg
   from aiohttp_login.asyncpg_storage import AsyncpgStorage

   pool = await asyncpg.create_pool(dsn='postgres:///your_db')
   storage = AsyncpgStorage(pool)

For mongodb with `motor <https://github.com/mongodb/motor>`__:

.. code:: python

   from motor.motor_asyncio import AsyncIOMotorClient
   from aiohttp_login.motor_storage import MotorStorage

   db = AsyncIOMotorClient(io_loop=loop)['your_db']
   storage = MotorStorage(db)

Now configure the library with a few settings:

.. code:: python

   app = web.Application(loop=loop)
   app.middlewares.append(aiohttp_login.flash.middleware)
   aiohttp_jinja2.setup(
       app,
       loader=jinja_app_loader.Loader(),
       context_processors=[aiohttp_login.flash.context_processor],
   )
   aiohttp_login.setup(app, storage, {
       'CSRF_SECRET': 'secret',

       'VKONTAKTE_ID': 'your-id',
       'VKONTAKTE_SECRET': 'your-secret',
       'GOOGLE_ID': 'your-id',
       'GOOGLE_SECRET': 'your-secret',
       'FACEBOOK_ID': 'your-id',
       'FACEBOOK_SECRET': 'your-secret',

       'SMTP_SENDER': 'Your Name <your@gmail.com>',
       'SMTP_HOST': 'smtp.gmail.com',
       'SMTP_PORT': 465,
       'SMTP_USERNAME': 'your@gmail.com',
       'SMTP_PASSWORD': 'password'
   })

That’s all. Look at the code in the
`example <https://github.com/imbolc/aiohttp-login/tree/master/example>`__
folder. Full list of available settings you can find in
`aiohttp_login/cfg.py <https://github.com/imbolc/aiohttp-login/blob/master/aiohttp_login/cfg.py>`__
file.

Run the example
---------------

Create a virtual environment and install the dependencies:

::

   cd example
   python3 -m venv venv
   source venv/bin/activate
   pip install -r requirements.txt

Create postgres database and tables:

::

   createdb aiohttp_login
   psql -d aiohttp_login -f ../aiohttp_login/pg_tables.sql

Rename ``settings.py.template`` to ``settings.py`` and populate it with
real data.

Run the server:

::

   python app.py

Run tests
---------

::

   pip install -r requirements-dev.txt
   py.test


