mirror of
				https://github.com/dgtlmoon/changedetection.io.git
				synced 2025-11-04 08:34:57 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			26 lines
		
	
	
		
			862 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			862 B
		
	
	
	
		
			Python
		
	
	
	
	
	
from flask import request, make_response, jsonify
 | 
						|
from functools import wraps
 | 
						|
 | 
						|
 | 
						|
# Simple API auth key comparison
 | 
						|
# @todo - Maybe short lived token in the future?
 | 
						|
 | 
						|
def check_token(f):
 | 
						|
    @wraps(f)
 | 
						|
    def decorated(*args, **kwargs):
 | 
						|
        datastore = args[0].datastore
 | 
						|
 | 
						|
        config_api_token_enabled = datastore.data['settings']['application'].get('api_access_token_enabled')
 | 
						|
        config_api_token = datastore.data['settings']['application'].get('api_access_token')
 | 
						|
 | 
						|
        # config_api_token_enabled - a UI option in settings if access should obey the key or not
 | 
						|
        if config_api_token_enabled:
 | 
						|
            if request.headers.get('x-api-key') != config_api_token:
 | 
						|
                return make_response(
 | 
						|
                    jsonify("Invalid access - API key invalid."), 403
 | 
						|
                )
 | 
						|
 | 
						|
        return f(*args, **kwargs)
 | 
						|
 | 
						|
    return decorated
 |