mirror of
				https://github.com/optim-enterprises-bv/Mailu.git
				synced 2025-11-03 19:47:52 +00:00 
			
		
		
		
	Honor feature limitations for imap and pop3
This commit is contained in:
		@@ -37,21 +37,26 @@ def handle_authentication(headers):
 | 
				
			|||||||
        password = urllib.parse.unquote(headers["Auth-Pass"])
 | 
					        password = urllib.parse.unquote(headers["Auth-Pass"])
 | 
				
			||||||
        ip = urllib.parse.unquote(headers["Client-Ip"])
 | 
					        ip = urllib.parse.unquote(headers["Client-Ip"])
 | 
				
			||||||
        user = models.User.query.get(user_email)
 | 
					        user = models.User.query.get(user_email)
 | 
				
			||||||
 | 
					        status = False
 | 
				
			||||||
        if user:
 | 
					        if user:
 | 
				
			||||||
            for token in user.tokens:
 | 
					            for token in user.tokens:
 | 
				
			||||||
                if (token.check_password(password) and
 | 
					                if (token.check_password(password) and
 | 
				
			||||||
                    (not token.ip or token.ip == ip)):
 | 
					                    (not token.ip or token.ip == ip)):
 | 
				
			||||||
                        return {
 | 
					                        status = True
 | 
				
			||||||
                            "Auth-Status": "OK",
 | 
					 | 
				
			||||||
                            "Auth-Server": server,
 | 
					 | 
				
			||||||
                            "Auth-Port": port
 | 
					 | 
				
			||||||
                        }
 | 
					 | 
				
			||||||
            if user.check_password(password):
 | 
					            if user.check_password(password):
 | 
				
			||||||
 | 
					                status = True
 | 
				
			||||||
 | 
					            if status:
 | 
				
			||||||
 | 
					                if protocol == "imap" and not user.enable_imap:
 | 
				
			||||||
 | 
					                    status = False
 | 
				
			||||||
 | 
					                elif protocol == "pop3" and not user.enable_pop:
 | 
				
			||||||
 | 
					                    status = False
 | 
				
			||||||
 | 
					        if status:
 | 
				
			||||||
            return {
 | 
					            return {
 | 
				
			||||||
                "Auth-Status": "OK",
 | 
					                "Auth-Status": "OK",
 | 
				
			||||||
                "Auth-Server": server,
 | 
					                "Auth-Server": server,
 | 
				
			||||||
                "Auth-Port": port
 | 
					                "Auth-Port": port
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
            status, code = get_status(protocol, "authentication")
 | 
					            status, code = get_status(protocol, "authentication")
 | 
				
			||||||
            return {
 | 
					            return {
 | 
				
			||||||
                "Auth-Status": status,
 | 
					                "Auth-Status": status,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user