diff options
Diffstat (limited to 'addons/auth_oauth')
| -rw-r--r-- | addons/auth_oauth/__init__.py | 1 | ||||
| -rw-r--r-- | addons/auth_oauth/__openerp__.py | 7 | ||||
| -rw-r--r-- | addons/auth_oauth/auth_oauth.py | 14 | ||||
| -rw-r--r-- | addons/auth_oauth/auth_oauth_data.xml | 16 | ||||
| -rw-r--r-- | addons/auth_oauth/auth_oauth_view.xml | 6 | ||||
| -rw-r--r-- | addons/auth_oauth/controllers/main.py | 2 | ||||
| -rw-r--r-- | addons/auth_oauth/res_config.py | 63 | ||||
| -rw-r--r-- | addons/auth_oauth/res_config.xml | 50 |
8 files changed, 136 insertions, 23 deletions
diff --git a/addons/auth_oauth/__init__.py b/addons/auth_oauth/__init__.py index c9acce48a16..a56db75633b 100644 --- a/addons/auth_oauth/__init__.py +++ b/addons/auth_oauth/__init__.py @@ -1,3 +1,4 @@ import controllers import auth_oauth import res_users +import res_config diff --git a/addons/auth_oauth/__openerp__.py b/addons/auth_oauth/__openerp__.py index 6c79bba2151..585dc48e11e 100644 --- a/addons/auth_oauth/__openerp__.py +++ b/addons/auth_oauth/__openerp__.py @@ -28,12 +28,13 @@ 'author': 'Victor Tabuenca', 'maintainer': 'OpenERP s.a.', 'website': 'http://www.openerp.com', - 'depends': ['base', 'web'], + 'depends': ['base', 'web', 'base_setup'], 'data': [ - 'auth_oauth_data.xml' + 'auth_oauth_data.xml', ], 'update_xml': [ - 'auth_oauth_view.xml' + 'auth_oauth_view.xml', + 'res_config.xml', ], 'js': [ 'static/src/js/auth_oauth.js', diff --git a/addons/auth_oauth/auth_oauth.py b/addons/auth_oauth/auth_oauth.py index e258505868d..34b6aa44936 100644 --- a/addons/auth_oauth/auth_oauth.py +++ b/addons/auth_oauth/auth_oauth.py @@ -1,6 +1,6 @@ from openerp.osv import osv, fields -class auth_oauth_providers(osv.osv): +class auth_oauth_provider(osv.osv): """Class defining the configuration values of an OAuth2 provider""" _name = 'auth.oauth.provider' @@ -8,15 +8,17 @@ class auth_oauth_providers(osv.osv): _order = 'name' _columns = { - 'name' : fields.char('Provider name', required=True), # Name of the OAuth2 entity, Google, LinkedIn, etc - 'client_id' : fields.char('Client ID', required=True), # Our identifier - 'auth_endpoint' : fields.char('Authentication URL', required=True), # OAuth provider URL to authenticate users + 'name' : fields.char('Provider name'), # Name of the OAuth2 entity, Google, LinkedIn, etc + 'client_id' : fields.char('Client ID'), # Our identifier + 'auth_endpoint' : fields.char('Authentication URL'), # OAuth provider URL to authenticate users 'scope' : fields.char('Scope'), # OAUth user data desired to access 'validation_endpoint' : fields.char('Validation URL'), # OAuth provider URL to validate tokens 'data_endpoint' : fields.char('Data URL'), + 'enabled' : fields.boolean('Allowed'), 'css_class' : fields.char('CSS class'), 'body' : fields.char('Body'), - 'active' : fields.boolean('Active'), 'sequence' : fields.integer(), } - + _defaults = { + 'enabled' : False, + } diff --git a/addons/auth_oauth/auth_oauth_data.xml b/addons/auth_oauth/auth_oauth_data.xml index 021a03b2742..7bb95192e5d 100644 --- a/addons/auth_oauth/auth_oauth_data.xml +++ b/addons/auth_oauth/auth_oauth_data.xml @@ -1,38 +1,34 @@ <?xml version="1.0"?> <openerp> - <data noupdate="1"> + <data> + <record id="provider_facebook" model="auth.oauth.provider"> <field name="name">Facebook Graph</field> - <field name="client_id">facebook_client_id</field> <field name="auth_endpoint">https://www.facebook.com/dialog/oauth</field> <field name="scope"></field> <field name="validation_endpoint">https://graph.facebook.com/me/permissions</field> <field name="data_endpoint"></field> <field name="css_class">zocial facebook</field> <field name="body">Sign in with facebook</field> - <field name="active">True</field> </record> <record id="provider_google" model="auth.oauth.provider"> <field name="name">Google OAuth2</field> - <field name="client_id">108010644258-duuhmp6pu7li4tsmnqg7j9rvdeklg0ki.apps.googleusercontent.com</field> <field name="auth_endpoint">https://accounts.google.com/o/oauth2/auth</field> <field name="scope">https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/userinfo.profile</field> <field name="validation_endpoint">https://www.googleapis.com/oauth2/v1/tokeninfo</field> <field name="data_endpoint">https://www.googleapis.com/oauth2/v1/userinfo</field> <field name="css_class">zocial google</field> <field name="body">Sign in with google</field> - <field name="active">True</field> </record> - <record id="provider_twitter" model="auth.oauth.provider"> - <field name="name">Twitter OAuth2</field> - <field name="client_id">108010644258-duuhmp6pu7li4tsmnqg7j9rvdeklg0ki.apps.twitterusercontent.com</field> + <!-- <record id="provider_twitter" model="auth.oauth.provider"> + <field name="name">Twitter OAuth</field> <field name="auth_endpoint">https://api.twitter.com/oauth/request_token</field> <field name="scope"></field> <field name="validation_endpoint">https://api.twitter.com/oauth/authorize</field> <field name="data_endpoint"></field> <field name="css_class">zocial twitter</field> <field name="body">Sign in with twitter</field> - <field name="active">True</field> - </record> + </record> --> + </data> </openerp> diff --git a/addons/auth_oauth/auth_oauth_view.xml b/addons/auth_oauth/auth_oauth_view.xml index 678c347c84d..475720af9fd 100644 --- a/addons/auth_oauth/auth_oauth_view.xml +++ b/addons/auth_oauth/auth_oauth_view.xml @@ -11,7 +11,7 @@ <group> <field name="name" /> <field name="client_id" /> - <field name="active" /> + <field name="enabled" /> </group> <group> <field name="auth_endpoint" /> @@ -22,7 +22,7 @@ </sheet> </form> </field> - </record> + </record> <record model="ir.ui.view" id="view_oauth_provider_list"> <field name="name">auth.oauth.provider.list</field> <field name="model">auth.oauth.provider</field> @@ -31,7 +31,7 @@ <tree string="arch" version="7.0"> <field name="name" /> <field name="client_id" /> - <field name="active" /> + <field name="enabled" /> </tree> </field> </record> diff --git a/addons/auth_oauth/controllers/main.py b/addons/auth_oauth/controllers/main.py index 28f550b4bda..2959fa45db1 100644 --- a/addons/auth_oauth/controllers/main.py +++ b/addons/auth_oauth/controllers/main.py @@ -18,7 +18,7 @@ class OAuthController(openerpweb.Controller): registry = openerp.modules.registry.RegistryManager.get(dbname) with registry.cursor() as cr: providers = registry.get('auth.oauth.provider') - l = providers.read(cr, 1, providers.search(cr, 1, [])) + l = providers.read(cr, 1, providers.search(cr, 1, [('enabled','=',True)])) return l @openerpweb.httprequest diff --git a/addons/auth_oauth/res_config.py b/addons/auth_oauth/res_config.py new file mode 100644 index 00000000000..82d79c767f5 --- /dev/null +++ b/addons/auth_oauth/res_config.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2012-Today OpenERP SA (<http://www.openerp.com>) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/> +# +############################################################################## + +from openerp.osv import osv, fields + +import logging +_logger = logging.getLogger(__name__) + +class base_config_settings(osv.TransientModel): + _inherit = 'base.config.settings' + + _columns = { + 'auth_oauth_google_enabled' : fields.boolean('Allow users to sign in with Google'), + 'auth_oauth_google_client_id' : fields.char('Client ID'), + 'auth_oauth_facebook_enabled' : fields.boolean('Allow users to sign in with Facebook'), + 'auth_oauth_facebook_client_id' : fields.char('Client ID'), + } + + def get_oauth_providers(self, cr, uid, fields, context=None): + google_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'auth_oauth', 'provider_google')[1] + facebook_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'auth_oauth', 'provider_facebook')[1] + rg = self.pool.get('auth.oauth.provider').read(cr, uid, [google_id], ['enabled','client_id'], context=context) + rf = self.pool.get('auth.oauth.provider').read(cr, uid, [facebook_id], ['enabled','client_id'], context=context) + return { + 'auth_oauth_google_enabled': rg[0]['enabled'], + 'auth_oauth_google_client_id': rg[0]['client_id'], + 'auth_oauth_facebook_enabled': rf[0]['enabled'], + 'auth_oauth_facebook_client_id': rf[0]['client_id'], + } + + def set_oauth_providers(self, cr, uid, ids, context=None): + google_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'auth_oauth', 'provider_google')[1] + facebook_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'auth_oauth', 'provider_facebook')[1] + config = self.browse(cr, uid, ids[0], context=context) + rg = { + 'enabled':config.auth_oauth_google_enabled, + 'client_id':config.auth_oauth_google_client_id, + } + rf = { + 'enabled':config.auth_oauth_facebook_enabled, + 'client_id':config.auth_oauth_facebook_client_id, + } + self.pool.get('auth.oauth.provider').write(cr, uid, [google_id], rg) + self.pool.get('auth.oauth.provider').write(cr, uid, [facebook_id], rf) + diff --git a/addons/auth_oauth/res_config.xml b/addons/auth_oauth/res_config.xml new file mode 100644 index 00000000000..2b06e05327a --- /dev/null +++ b/addons/auth_oauth/res_config.xml @@ -0,0 +1,50 @@ +<?xml version="1.0"?> +<openerp> + <data> + <record model="ir.ui.view" id="view_general_configuration"> + <field name="name">base.config.settings.oauth</field> + <field name="model">base.config.settings</field> + <field name="inherit_id" ref="base_setup.view_general_configuration"/> + <field name="arch" type="xml"> + <xpath expr="//field[@name='module_auth_oauth']/.." position="after"> + <div attrs="{'invisible':[('module_auth_oauth','=',False)]}"> + <div name="google"> + <div> + <field name="auth_oauth_google_enabled" class="oe_inline"/> + <label for="auth_oauth_google_enabled"/> + </div> + <div attrs="{'invisible':[('auth_oauth_google_enabled','=',False)]}"> + <blockquote> + To setup the signin process with Google, first you have to perform the following steps:<br/> + <br/> + - Go to the <a href="https://code.google.com/apis/console/">Google APIs console</a><br/> + - Ceate a new project<br/> + - Go to Api Access<br/> + - Create an oauth client_id<br/> + - Edit settings and set both Authorized Redirect URIs and Authorized JavaScript Origins to your hostname.<br/> + <br/> + Now copy paste the client_id here: <field name="auth_oauth_google_client_id" class="oe_inline" placeholder="e.g. 1234-xyz.apps.googleusercontent.com"/> + </blockquote> + </div> + </div> + <div name="facebook"> + <div> + <field name="auth_oauth_facebook_enabled" class="oe_inline"/> + <label for="auth_oauth_facebook_enabled"/> + </div> + <div attrs="{'invisible':[('auth_oauth_facebook_enabled','=',False)]}"> + <blockquote> + To setup the signin process with Google, first you have to perform the following steps:<br/> + <br/> + Now copy paste the client_id here: <field name="auth_oauth_facebook_client_id" class="oe_inline" placeholder="e.g. 1234-xyz.apps.googleusercontent.com"/> + </blockquote> + + </div> + </div> + </div> + </xpath> + </field> + </record> + + </data> +</openerp> |
