|
@@ -19,12 +19,14 @@ from open_webui.models.auths import (
|
|
|
UserResponse,
|
|
|
)
|
|
|
from open_webui.models.users import Users
|
|
|
+from open_webui.models.groups import Groups
|
|
|
|
|
|
from open_webui.constants import ERROR_MESSAGES, WEBHOOK_MESSAGES
|
|
|
from open_webui.env import (
|
|
|
WEBUI_AUTH,
|
|
|
WEBUI_AUTH_TRUSTED_EMAIL_HEADER,
|
|
|
WEBUI_AUTH_TRUSTED_NAME_HEADER,
|
|
|
+ WEBUI_AUTH_TRUSTED_GROUPS_HEADER,
|
|
|
WEBUI_AUTH_COOKIE_SAME_SITE,
|
|
|
WEBUI_AUTH_COOKIE_SECURE,
|
|
|
WEBUI_AUTH_SIGNOUT_REDIRECT_URL,
|
|
@@ -299,7 +301,7 @@ async def ldap_auth(request: Request, response: Response, form_data: LdapForm):
|
|
|
500, detail="Internal error occurred during LDAP user creation."
|
|
|
)
|
|
|
|
|
|
- user = Auths.authenticate_user_by_trusted_header(email)
|
|
|
+ user = Auths.authenticate_user_by_email(email)
|
|
|
|
|
|
if user:
|
|
|
expires_delta = parse_duration(request.app.state.config.JWT_EXPIRES_IN)
|
|
@@ -363,21 +365,29 @@ async def signin(request: Request, response: Response, form_data: SigninForm):
|
|
|
if WEBUI_AUTH_TRUSTED_EMAIL_HEADER not in request.headers:
|
|
|
raise HTTPException(400, detail=ERROR_MESSAGES.INVALID_TRUSTED_HEADER)
|
|
|
|
|
|
- trusted_email = request.headers[WEBUI_AUTH_TRUSTED_EMAIL_HEADER].lower()
|
|
|
- trusted_name = trusted_email
|
|
|
+ email = request.headers[WEBUI_AUTH_TRUSTED_EMAIL_HEADER].lower()
|
|
|
+ name = email
|
|
|
+
|
|
|
if WEBUI_AUTH_TRUSTED_NAME_HEADER:
|
|
|
- trusted_name = request.headers.get(
|
|
|
- WEBUI_AUTH_TRUSTED_NAME_HEADER, trusted_email
|
|
|
- )
|
|
|
- if not Users.get_user_by_email(trusted_email.lower()):
|
|
|
+ name = request.headers.get(WEBUI_AUTH_TRUSTED_NAME_HEADER, email)
|
|
|
+
|
|
|
+ if not Users.get_user_by_email(email.lower()):
|
|
|
await signup(
|
|
|
request,
|
|
|
response,
|
|
|
- SignupForm(
|
|
|
- email=trusted_email, password=str(uuid.uuid4()), name=trusted_name
|
|
|
- ),
|
|
|
+ SignupForm(email=email, password=str(uuid.uuid4()), name=name),
|
|
|
)
|
|
|
- user = Auths.authenticate_user_by_trusted_header(trusted_email)
|
|
|
+
|
|
|
+ user = Auths.authenticate_user_by_email(email)
|
|
|
+ if WEBUI_AUTH_TRUSTED_GROUPS_HEADER and user and user.role != "admin":
|
|
|
+ group_names = request.headers.get(
|
|
|
+ WEBUI_AUTH_TRUSTED_GROUPS_HEADER, ""
|
|
|
+ ).split(",")
|
|
|
+ group_names = [name.strip() for name in group_names if name.strip()]
|
|
|
+
|
|
|
+ if group_names:
|
|
|
+ Groups.sync_user_groups_by_group_names(user.id, group_names)
|
|
|
+
|
|
|
elif WEBUI_AUTH == False:
|
|
|
admin_email = "admin@localhost"
|
|
|
admin_password = "admin"
|