From 2a2e3ca0af54a9114f307b397ccdb241809ac2bf Mon Sep 17 00:00:00 2001 From: Roland Date: Tue, 25 Sep 2018 12:05:46 +0200 Subject: [PATCH] fairlogin social ID provider (#6096) * fairlogin adding fairlogin provider * fairlogin add fairlogin provider * fairlogin * fairlogin * fairlogin userid fairlogin userid corrected to preferred_username * removed trailing white space * removed trailing white space removing white space mourned by automated code review --- .../social_login_key/social_login_key.json | 6 +++--- .../social_login_key/social_login_key.py | 18 ++++++++++++++++++ frappe/integrations/oauth2_logins.py | 4 ++++ frappe/utils/oauth.py | 4 ++++ 4 files changed, 29 insertions(+), 3 deletions(-) diff --git a/frappe/integrations/doctype/social_login_key/social_login_key.json b/frappe/integrations/doctype/social_login_key/social_login_key.json index 57451d7f77..8e415e6c20 100644 --- a/frappe/integrations/doctype/social_login_key/social_login_key.json +++ b/frappe/integrations/doctype/social_login_key/social_login_key.json @@ -93,7 +93,7 @@ "label": "Social Login Provider", "length": 0, "no_copy": 0, - "options": "Custom\nFacebook\nFrappe\nGitHub\nGoogle\nOffice 365\nSalesforce", + "options": "Custom\nFacebook\nFrappe\nGitHub\nGoogle\nOffice 365\nSalesforce\nfairlogin", "permlevel": 0, "precision": "", "print_hide": 0, @@ -660,7 +660,7 @@ "issingle": 0, "istable": 0, "max_attachments": 0, - "modified": "2018-01-13 21:19:37.800121", + "modified": "2018-09-15 09:00:00.000000", "modified_by": "Administrator", "module": "Integrations", "name": "Social Login Key", @@ -697,4 +697,4 @@ "title_field": "provider_name", "track_changes": 1, "track_seen": 0 -} \ No newline at end of file +} diff --git a/frappe/integrations/doctype/social_login_key/social_login_key.py b/frappe/integrations/doctype/social_login_key/social_login_key.py index bc9b7be137..81df3cca97 100644 --- a/frappe/integrations/doctype/social_login_key/social_login_key.py +++ b/frappe/integrations/doctype/social_login_key/social_login_key.py @@ -137,6 +137,24 @@ class SocialLoginKey(Document): }) } + providers["fairlogin"] = { + "provider_name": "fairlogin", + "enable_social_login": 1, + "base_url": "https://id.fairkom.net/auth/realms/fairlogin/", + "custom_base_url": 0, + "icon":"fa fa-key", + "redirect_url": "/api/method/frappe.integrations.oauth2_logins.login_via_fairlogin", + "api_endpoint": "https://id.fairkom.net/auth/realms/fairlogin/protocol/openid-connect/userinfo", + "api_endpoint_args":None, + "authorize_url": "https://id.fairkom.net/auth/realms/fairlogin/protocol/openid-connect/auth", + "access_token_url": "https://id.fairkom.net/auth/realms/fairlogin/protocol/openid-connect/token", + "auth_url_data": json.dumps({ + "response_type": "code", + "scope": "openid" + }) + } + + # Initialize the doc and return, used in patch # Or can be used for creating key from controller if initialize and provider: diff --git a/frappe/integrations/oauth2_logins.py b/frappe/integrations/oauth2_logins.py index f02573934c..86a90078c6 100644 --- a/frappe/integrations/oauth2_logins.py +++ b/frappe/integrations/oauth2_logins.py @@ -30,3 +30,7 @@ def login_via_office365(code, state): @frappe.whitelist(allow_guest=True) def login_via_salesforce(code, state): login_via_oauth2("salesforce", code, state, decoder=json.loads) + +@frappe.whitelist(allow_guest=True) +def login_via_fairlogin(code, state): + login_via_oauth2("fairlogin", code, state, decoder=json.loads) diff --git a/frappe/utils/oauth.py b/frappe/utils/oauth.py index 080378a2bf..c688bdbb5c 100644 --- a/frappe/utils/oauth.py +++ b/frappe/utils/oauth.py @@ -267,6 +267,10 @@ def update_oauth_user(user, data, provider): save = True user.set_social_login_userid(provider, userid="/".join(data["sub"].split("/")[-2:])) + elif provider=="fairlogin" and not user.get_social_login_userid(provider): + save = True + user.set_social_login_userid(provider, userid=data["preferred_username"]) + if save: user.flags.ignore_permissions = True user.flags.no_welcome_mail = True