In Pyhton3, requests response content is in bytes type. So decoder
have to handle both `str` and `bytes` to make it compatible with
both python 2 and 3
* 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
* Added Salesforce Social Login
* [Docs] Generate client_id client_secret for login providers
* [Fix] salesforce userid
Saleforce sub from openid is https://login.salesforce.com/id/ABC/XYZ
Extracting ABC/XYZ
* Added DocType Social Login Key
WIP for https://github.com/frappe/frappe/issues/4496
added basic fields
after_insert add provider_username and provider_userid fields on User dt
on_trash deletes added fields on User dt
* Added field to store fontawesome icon for provider
* [Patch] Social Login Keys to Social Login Key
* [Patch] Social Login Keys to Social Login Key
* Social Login Key generates boilerplate
* patch fixed for social_login_refactor
* removed patch-not working
* use social login keys to initiate flow
* Login page shows Social Login Key
* show login via if base_url present
* removed boilerplate generator
* Multiple Changes
fix zxcvbn import in password_strength.py
use of child table instead of additional fields on user dt to store username and userid
* Fetched Template on Client JS
* Frappe social login template working
* Added Social Login Key Templates
* Codacy fixes and validate social login key urls
* [Patch] Social Login Keys (untested)
* [Fix] Patch refactor social login keys
* [Fix] Patch refactor_social_login_keys manually tested
* Refactor OAuth 2.0 related changes for Social Login Key
* [Fix] Patch refactor social login keys
* Test - Adding Frappe Social Login Key
* Social Login Key Tests
check added child table entry on user for provider frappe
it also checks if userid is created
* [WIP] Office 365 Social Login Key Template
* [Fix] Social Login - Redirect URL
* [Test] Single sign-on icons for added provider
* [Fix] Codacy Errors
* [Fix] Social Login Key Form JS
* Docs Added for Social Login Key
* [Fix] Patch Refactor Social Login Keys
* Handle different icon types
Handle different icon types (image, icon, emoji) with just icon field
* Move the login methods to a new py file
frappe.integrations.oauth2_logins added
copied whitelisted guest oauth2 redirect endpoints from login.py
removing the functions from login.py will break backward compatibility
* Social Login Key Form Changes
Moved Enable field to top
Fields which are not editable are collapsed
* [Fix] Codacy Errors
* Corrected Docs, sync.py
* [Docs] Adding a social login provider
* [Fix] set frappe userid from User Social Login
* [Fix] frappe userid in oauth.py
* removed icon_type
* Use frappe.utils.is_image
* [fix] remove razorpay from integration service
* [fix] clean-up js side integration service dependancies
* [fix] remove integration service, .py cleanup, move integration request to integration
* [fix] move oauth to integrations and deprecate integration broker
* [fix] mark services enabled and update integrations listing
* [fix] V7.1 and V7.2 integration service related pathch fixes and move payment gateway dotype to core module
* [fix] create payment gateway records if not exists
* [fix] module page for integrations
* [minor][fix] minor checks
* [fix] remove integration broker module only if not allocated to any doctype
* Add field for client_secret in Oauth Client Doctype
* openid_profile endpoint in oauth2.py
* added stub methods for OpenID Connect in RequestValidator
* [Fix] using werkzeug url_fix on uri
* added 3 oidc methods in RequestValidator
* Added Frappe Section in Social Login Keys
Add section in `Social Login Keys` for fields `Frappe Client ID` and `Frappe Client Secret` and additional field Frappe OAuth 2 Server because github, facebook and google have fixed urls, Frappe server URL can change as per the hosting domain/server/company
* [Fix] accept code id_token param for oidc
* generate id_token jwt alg HS256
* Updates to OAuth 2 and OIDC
`OAuth Authorization Code` and `OAuth Bearer Token` DocType made RO
Delete Invalid Codes and Revoked Tokens periodically
generate and send `id_token` only if scope of token is `openid`
* [Fix] Periodically delete revoked tokens
* Social Logins untested
* Enabled Frappe social login
* [Docs] OpenID Connect and Frappe social login
* [Fix] Allow multiple scopes for OAuth 2
* [Docs] Added screenshot steps to configure openid and frappe social login
* saved doctype to solve merge conflict
* [fix] re-added client_secret after resolving merge conlict
* [Fix] frappe_userid and default scope