Secure python function with decorator

 

Introduction

This is an example showing how to protect some functions in python.

Code

import functools

user = {"username": "bob", "access_level": "user"}

def make_secure(func):
    @functools.wraps(func)
    def secure_function(*args, **kwargs):
        if user["access_level"] == "admin":
            return func(*args, **kwargs)
        else:
            return f"No admin permissions for {user['username']}"

    return secure_function

@make_secure
def write_data_to_protected_area():
    return "write success"

print(write_data_to_protected_area())

'''
Expected output:
No admin permissions for bob
'''

user = {"username": "jenny", "access_level": "admin"}
print(write_data_to_protected_area())

'''
Expected output:
write success
'''

Reference

Comments