38 lines
1.1 KiB
Python
38 lines
1.1 KiB
Python
import jingrow
|
|
|
|
@jingrow.whitelist(allow_guest=True)
|
|
def oauth_providers():
|
|
from jingrow.utils.html_utils import get_icon_html
|
|
from jingrow.utils.password import get_decrypted_password
|
|
from jingrow.utils.oauth import get_oauth2_authorize_url, get_oauth_keys
|
|
|
|
out = []
|
|
providers = jingrow.get_all(
|
|
"Social Login Key",
|
|
filters={"enable_social_login": 1},
|
|
fields=["name", "client_id", "base_url", "provider_name", "icon"],
|
|
order_by="name",
|
|
)
|
|
|
|
for provider in providers:
|
|
client_secret = get_decrypted_password("Social Login Key", provider.name, "client_secret")
|
|
if not client_secret:
|
|
continue
|
|
|
|
icon = None
|
|
if provider.icon:
|
|
if provider.provider_name == "Custom":
|
|
icon = get_icon_html(provider.icon, small=True)
|
|
else:
|
|
icon = f"<img src='{provider.icon}' alt={provider.provider_name}>"
|
|
|
|
if provider.client_id and provider.base_url and get_oauth_keys(provider.name):
|
|
out.append(
|
|
{
|
|
"name": provider.name,
|
|
"provider_name": provider.provider_name,
|
|
"auth_url": get_oauth2_authorize_url(provider.name, "/crm"),
|
|
"icon": icon,
|
|
}
|
|
)
|
|
return out |