39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
import frappe
|
|
from frappe.utils import cint, md_to_html
|
|
from frappe.utils.oauth import get_oauth2_authorize_url, get_oauth_keys
|
|
|
|
|
|
@frappe.whitelist(allow_guest=True) # nosemgrep: frappe-semgrep-rules.rules.security.guest-whitelisted-method
|
|
def get_login_context(redirect_to: str | None = None):
|
|
context = {
|
|
"disable_signup": frappe.get_website_settings("disable_signup"),
|
|
"disable_user_pass_login": frappe.get_system_settings("disable_user_pass_login"),
|
|
"login_with_email_link": frappe.get_system_settings("login_with_email_link"),
|
|
"login_banner": md_to_html(raw_banner)
|
|
if (raw_banner := frappe.db.get_single_value("Pohodex Event Manager Settings", "login_banner"))
|
|
else None,
|
|
"provider_logins": [],
|
|
}
|
|
|
|
if not redirect_to:
|
|
redirect_to = frappe.utils.get_url("/dashboard")
|
|
|
|
social_login_keys = frappe.get_all(
|
|
"Social Login Key",
|
|
filters={"enable_social_login": 1},
|
|
fields=["name", "provider_name", "icon", "client_id", "base_url"],
|
|
)
|
|
|
|
for provider in social_login_keys:
|
|
if provider.client_id and provider.base_url and get_oauth_keys(provider.name):
|
|
context["provider_logins"].append(
|
|
{
|
|
"name": provider.name,
|
|
"provider_name": provider.provider_name,
|
|
"icon": provider.icon or "",
|
|
"auth_url": get_oauth2_authorize_url(provider.name, redirect_to),
|
|
}
|
|
)
|
|
|
|
return context
|