25 lines
		
	
	
	
		
			780 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
	
		
			780 B
		
	
	
	
		
			Python
		
	
	
	
	
	
from __future__ import absolute_import
 | 
						|
 | 
						|
import logging
 | 
						|
 | 
						|
from flask import request, current_app
 | 
						|
from flask_login import current_user, logout_user
 | 
						|
 | 
						|
from .models import User as ProxyUser
 | 
						|
 | 
						|
 | 
						|
logger = logging.getLogger("realms.auth")
 | 
						|
 | 
						|
 | 
						|
def before_request():
 | 
						|
    header_name = current_app.config["AUTH_PROXY_HEADER_NAME"]
 | 
						|
    remote_user = request.headers.get(header_name)
 | 
						|
    if remote_user:
 | 
						|
        if current_user.is_authenticated:
 | 
						|
            if current_user.id == remote_user:
 | 
						|
                return
 | 
						|
            logger.info("login in realms and login by proxy are different: '{}'/'{}'".format(
 | 
						|
                current_user.id, remote_user))
 | 
						|
            logout_user()
 | 
						|
        logger.info("User logged in by proxy as '{}'".format(remote_user))
 | 
						|
        ProxyUser.do_login(remote_user)
 |