diff options
Diffstat (limited to 'mailnews/base/util/OAuth2Providers.jsm')
-rw-r--r-- | mailnews/base/util/OAuth2Providers.jsm | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/mailnews/base/util/OAuth2Providers.jsm b/mailnews/base/util/OAuth2Providers.jsm new file mode 100644 index 000000000..37a750f46 --- /dev/null +++ b/mailnews/base/util/OAuth2Providers.jsm @@ -0,0 +1,77 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/** + * Details of supported OAuth2 Providers. + */ +var EXPORTED_SYMBOLS = ["OAuth2Providers"]; + +var {classes: Cc, interfaces: Ci, results: Cr, utils: Cu} = Components; + +// map of hostnames to [issuer, scope] +var kHostnames = new Map([ + ["imap.googlemail.com", ["accounts.google.com", "https://mail.google.com/"]], + ["smtp.googlemail.com", ["accounts.google.com", "https://mail.google.com/"]], + ["imap.gmail.com", ["accounts.google.com", "https://mail.google.com/"]], + ["smtp.gmail.com", ["accounts.google.com", "https://mail.google.com/"]], + + ["imap.mail.ru", ["o2.mail.ru", "mail.imap"]], + ["smtp.mail.ru", ["o2.mail.ru", "mail.imap"]], +]); + +// map of issuers to appKey, appSecret, authURI, tokenURI + +// For the moment, these details are hard-coded, since Google does not +// provide dynamic client registration. Don't copy these values for your +// own application--register it yourself. This code (and possibly even the +// registration itself) will disappear when this is switched to dynamic +// client registration. +var kIssuers = new Map ([ + ["accounts.google.com", [ + '406964657835-aq8lmia8j95dhl1a2bvharmfk3t1hgqj.apps.googleusercontent.com', + 'kSmqreRr0qwBWJgbf5Y-PjSU', + 'https://accounts.google.com/o/oauth2/auth', + 'https://www.googleapis.com/oauth2/v3/token' + ]], + ["o2.mail.ru", [ + 'thunderbird', + 'I0dCAXrcaNFujaaY', + 'https://o2.mail.ru/login', + 'https://o2.mail.ru/token' + ]], +]); + +/** + * OAuth2Providers: Methods to lookup OAuth2 parameters for supported + * email providers. + */ +var OAuth2Providers = { + + /** + * Map a hostname to the relevant issuer and scope. + * + * @param aHostname String representing the url for an imap or smtp + * server (example "imap.googlemail.com"). + * + * @returns Array with [issuer, scope] for the hostname if found, + * else undefined. issuer is a string representing the + * organization, scope is an oauth parameter describing\ + * the required access level. + */ + getHostnameDetails: function (aHostname) { return kHostnames.get(aHostname);}, + + /** + * Map an issuer to OAuth2 account details. + * + * @param aIssuer The organization issuing oauth2 parameters, example + * "accounts.google.com". + * + * @return Array containing [appKey, appSecret, authURI, tokenURI] + * where appKey and appDetails are strings representing the + * account registered for Thunderbird with the organization, + * authURI and tokenURI are url strings representing + * endpoints to access OAuth2 authentication. + */ + getIssuerDetails: function (aIssuer) { return kIssuers.get(aIssuer);} +} |