mirror of
				https://github.com/optim-enterprises-bv/Mailu.git
				synced 2025-11-04 03:57:53 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python3
 | 
						|
 | 
						|
import sys
 | 
						|
import tabulate
 | 
						|
 | 
						|
sys.path[0:0] = ['/app']
 | 
						|
 | 
						|
import mailu
 | 
						|
app = mailu.create_app()
 | 
						|
 | 
						|
 | 
						|
# Known endpoints without permissions
 | 
						|
known_missing_permissions = [
 | 
						|
    'index',
 | 
						|
    'static', 'bootstrap.static',
 | 
						|
    'admin.static', 'admin.login'
 | 
						|
]
 | 
						|
 | 
						|
 | 
						|
# Compute the permission table
 | 
						|
missing_permissions = []
 | 
						|
permissions = {}
 | 
						|
for endpoint, function in app.view_functions.items():
 | 
						|
    audit = function.__dict__.get('_audit_permissions')
 | 
						|
    if audit:
 | 
						|
        handler, args = audit
 | 
						|
        if args:
 | 
						|
            model = args[0].__name__
 | 
						|
            key = args[1]
 | 
						|
        else:
 | 
						|
            model = key = None
 | 
						|
        permissions[endpoint] = [endpoint, handler.__name__, model, key]
 | 
						|
    elif endpoint not in known_missing_permissions:
 | 
						|
        missing_permissions.append(endpoint)
 | 
						|
 | 
						|
# Display the permissions table
 | 
						|
print(tabulate.tabulate([
 | 
						|
    [route, *permissions[route.endpoint]]
 | 
						|
    for route in app.url_map.iter_rules() if route.endpoint in permissions
 | 
						|
]))
 | 
						|
 | 
						|
# Warn if any endpoint is missing a permission check
 | 
						|
if missing_permissions:
 | 
						|
    print()
 | 
						|
    print('The following endpoints are missing permission checks:')
 | 
						|
    print(','.join(missing_permissions))
 | 
						|
 |