[Plugin] auth_ldap: Use Pillow to convert avatar if installed
This commit is contained in:
parent
a270857c41
commit
09c7f4a258
|
@ -1,5 +1,5 @@
|
||||||
"""LDAP Authentication Provider Plugin"""
|
"""LDAP Authentication Provider Plugin"""
|
||||||
|
import io
|
||||||
import ssl
|
import ssl
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
from flask_ldapconn import LDAPConn
|
from flask_ldapconn import LDAPConn
|
||||||
|
@ -176,8 +176,21 @@ class AuthLDAP(AuthPlugin):
|
||||||
|
|
||||||
def __save_avatar(self, avatar, user):
|
def __save_avatar(self, avatar, user):
|
||||||
if avatar.mimetype != "image/jpeg":
|
if avatar.mimetype != "image/jpeg":
|
||||||
raise BadRequest("Unsupported image Format")
|
# Try converting using Pillow (if installed)
|
||||||
# Maybe use Pillow to convert here
|
try:
|
||||||
|
from PIL import Image
|
||||||
|
image = Image.open(io.BytesIO(avatar.binary))
|
||||||
|
image_bytes = io.BytesIO()
|
||||||
|
image.save(image_bytes, format="JPEG")
|
||||||
|
avatar.binary = image_bytes.getvalue()
|
||||||
|
avatar.mimetype = "image/jpeg"
|
||||||
|
except ImportError:
|
||||||
|
logger.debug("Pillow not installed for image conversion")
|
||||||
|
raise BadRequest("Unsupported image format")
|
||||||
|
except IOError:
|
||||||
|
logger.debug(f"Could not convert avatar from '{avatar.mimetype}' to JPEG")
|
||||||
|
raise BadRequest("Unsupported image format")
|
||||||
|
|
||||||
if self.admin_dn is None:
|
if self.admin_dn is None:
|
||||||
logger.error("admin_dn missing in ldap config!")
|
logger.error("admin_dn missing in ldap config!")
|
||||||
raise InternalServerError
|
raise InternalServerError
|
||||||
|
|
Loading…
Reference in New Issue