Metadata-Version: 2.1
Name: Flask-Authlib
Version: 1.3.1
Summary: Authentication library for Flask Web Framework 
Home-page: https://github.com/AbduazizZiyodov/flask-authlib
Author: Abduaziz Ziyodov
Author-email: abduaziz.ziyodov@mail.ru
License: MIT
Platform: any
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Environment :: Web Environment
Description-Content-Type: text/markdown
Requires-Dist: flask
Requires-Dist: flask-login
Requires-Dist: psycopg2-binary
Requires-Dist: sqlalchemy
Requires-Dist: flask-sqlalchemy
Requires-Dist: flask-bcrypt
Requires-Dist: cryptography (==3.3.2)
Requires-Dist: python-jose
Requires-Dist: jwt

# **Flask-Authlib** 🔐

[![PyPI version](https://badge.fury.io/py/Flask-Authlib.svg)](https://badge.fury.io/py/Flask-Authlib)

<hr>

Flask-Authlib - authentication library for Flask Web Framework.

Advantages:
- Templates: login , register
- Default `user` Model
- View Functions

# Install

By using `pip`:

```bash
$ pip install flask-authlib
```

# Simple Usage

- Import `Flask` from `flask`
- Import `SQLAlchemy` from `flask_sqlalchemy`
- Import `Auth` from `flask_authlib`

Code Sample:

```python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_authlib import Auth
```

Define your `app` and `db`. Create auth var from `Auth` class and call `init()` method:

```python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_authlib import Auth

app = Flask(__name__)
db = SQLAlchemy(app)

auth = Auth(app=app, db=db)
auth.init()

# simple route
@app.route('/')
def home_page():
    return {'message': 'Hi, bro 😁'}
```

Run your backend:

```bash
$ export FLASK_APP=<app> && export FLASK_ENV=development
$ flask run --reload
```

**Screenshots:**

![LOGIN](screenshots/login.PNG)
Login page at `/login`

![REGISTER](screenshots/register.PNG)
Register page at `/register`

# **Advanced Usage**

> You can change urls

**Defaults**

- Home page - `/`
- Login page - `/login`
- Register page - `/register`
- Logout url - `/logout`


Write your urls before calling `init()` method:

```python
...

auth = Auth(app=app, db=db, login_url='/mylogin',
            register_url='/myreg', logout_url='/myexit',
            home_page='/')
auth.init()
...
```

> You can set your own template config!

You can change:

- Button color on forms
- Form title at login and register page
- All labels like Username.. email ...
- Text in button.

**Default template config**

```json

config = {
        "LOGIN_BTN": "btn-success",
        "REGISTER_BTN": "btn-warning",

        "LOGIN_BTN_TEXT": "Login",
        "REGISTER_BTN_TEXT": "Register",

        "LOGIN_PAGE_TITLE": "Login",
        "REGISTER_PAGE_TITLE": "Register",

        "LOGIN_LABEL_USERNAME": "Username",
        "LOGIN_LABEL_PASSWORD": "Password",
        "REGISTER_LABEL_USERNAME": "Username",
        "REGISTER_LABEL_PASSWORD": "Password",
        "REGISTER_LABEL_EMAIL": "Email address"
}
```

_p.s btn colors based on bootstrap classes_

Setting your config:

```python
...
my_config = {
        "LOGIN_BTN": "btn-danger",
        "REGISTER_BTN": "btn-primary",

        "LOGIN_PAGE_TITLE": "Admin",
        "REGISTER_PAGE_TITLE": "Admin"
}
auth = Auth(app=app, db=db, template_config=my_config)
auth.init()
...
```

>If some settings are not entered, they remain as default

**Screenshots:**

>![LOGIN](screenshots/login_2.PNG)
>Login page

<hr>

>![REGISTER](screenshots/register_2.PNG)
>Register page

# **Running Example** 🚀

### First way

> Required  `docker` 

Project directory have:
- dockerfile
- docker_compose.yml

For running this you have to type this command:

```bash
$ docker-compose up
```

Screenshot:

![DOCKER](screenshots/docker.PNG)

## **Second way**

Clone this repo:

```bash
$ git clone https://github.com/AbduazizZiyodov/flask-authlib.git
```

Navigate to `/example`:

```bash
$ cd example/
```

Install all required packages:

```bash
$ pip install -r requirements.txt
```

Run development server:
* `$ python app.py` or
* `$ gunicorn app:app` or
* `$ export FLASK_APP=app && flask run --reload`

Enjoy 😅

**Author: Abduaziz Ziyodov**

