flask_praetorian package

flask-praetorian is a security extension for flask. It is modelled heavily on flask-security (https://github.com/mattupstate/flask-security), but is targeted at providing authentication for api-only applications that use token based authentication. It builds on flask-jwt and provides some additional functionality such as password encryption upon storage and decorators that check the current users roles

Submodules

flask_praetorian.base module

class flask_praetorian.base.Praetorian(app=None, user_class=None, jwt=None)

Bases: object

authenticate(username, password)

Verifies that a password matches the stored password for that username. If verification passes, the matching user instance is returned

encrypt_password(raw_password)

Encrypts a plaintext password using the stored passlib password context

error_handler(error)

Provides a flask error handler

init_app(app, user_class, jwt=None)

Initializes the Praetorian extension

Param:app: The flask app to which this extension is bound
Param:user_class: The class used to interact with user information
Param:jwt: An instance of a jwt extension that should be used if None, a new jwt instance will be used instead
classmethod validate_user_class(user_class)

Validates the supplied user_class to make sure that it has the class methods necessary to function correctly.

Requirements: - lookup method. Accepts username parameter, returns instance - identify method. Accepts user id parameter, returns instance

verify_password(raw_password, hashed_password)

Verifies that a plaintext password matches the hashed version of that password using the stored passlib password context

flask_praetorian.decorators module

flask_praetorian.decorators.auth_required(*args, **kwargs)

This decorator is used to ensure that a user is authenticated before being able to access a flask route. It is a simple wrapper around the flask_jwt.jwt_required decorator, and is only included here so that a Praetorian user does not have to import jwt into their module if they wish to only use Praetorian

flask_praetorian.decorators.roles_accepted(*accepted_rolenames)

This decorator ensures that any uses accessing the decorated route have one of the needed roles to access it

flask_praetorian.decorators.roles_required(*required_rolenames)

This decorator ensures that any uses accessing the decorated route have all the needed roles to access it

flask_praetorian.exceptions module

exception flask_praetorian.exceptions.PraetorianError(*format_args, status_code=401, **format_kwds)

Bases: buzz.Buzz

Provides a custom exception class for flask-praetorian based on Buzz. buzz-lightyear on gitub

jsonify()

Returns a representation of the error in a jsonic form that is compatible with flask’s error handling