Examples

This page provides real-world examples of using Auth.

Web Application Example

Flask Integration

from flask import Flask, request, jsonify, g
from functools import wraps
from auth import Authorization
import uuid

app = Flask(__name__)
auth = Authorization(str(uuid.uuid4()))

# Setup roles
auth.add_role('admin')
auth.add_role('editor')
auth.add_role('viewer')

# Setup permissions
auth.add_permission('admin', 'manage_users')
auth.add_permission('admin', 'delete_posts')
auth.add_permission('editor', 'create_post')
auth.add_permission('editor', 'edit_post')
auth.add_permission('viewer', 'view_posts')

def get_current_user():
    return request.headers.get('X-User-Email')

def require_permission(permission):
    def decorator(f):
        @wraps(f)
        def decorated_function(*args, **kwargs):
            user = get_current_user()
            if not auth.user_has_permission(user, permission):
                return jsonify({'error': 'Permission denied'}), 403
            return f(*args, **kwargs)
        return decorated_function
    return decorator

@app.route('/api/posts', methods=['POST'])
@require_permission('create_post')
def create_post():
    # Create post logic
    return jsonify({'message': 'Post created'}), 201

@app.route('/api/users', methods=['POST'])
@require_permission('manage_users')
def create_user():
    # Create user logic
    return jsonify({'message': 'User created'}), 201

CLI Tool Example

import click
from auth import Authorization
import uuid

auth = Authorization(str(uuid.uuid4()))

@click.group()
def cli():
    pass

@cli.command()
@click.option('--name', required=True)
@click.option('--description')
def create_role(name, description):
    if auth.add_role(name, description):
        click.echo(f"Role '{name}' created")

@cli.command()
@click.option('--role', required=True)
@click.option('--permission', required=True)
def grant(role, permission):
    if auth.add_permission(role, permission):
        click.echo(f"Granted '{permission}' to '{role}'")

if __name__ == '__main__':
    cli()

Microservices Example

from auth.client import EnhancedAuthClient
import os

# Centralized auth service
auth_client = EnhancedAuthClient(
    api_key=os.environ['AUTH_CLIENT_KEY'],
    service_url='http://auth-service:5000'
)

def check_permission(user, permission):
    response = auth_client.user_has_permission(user, permission)
    return response['data']['has_permission']

# Use in your service
if check_permission('user@example.com', 'process_payment'):
    process_payment()

See Python Usage and REST API for more examples.