summaryrefslogtreecommitdiff
path: root/addons/auth_oauth
diff options
context:
space:
mode:
Diffstat (limited to 'addons/auth_oauth')
-rw-r--r--addons/auth_oauth/__init__.py1
-rw-r--r--addons/auth_oauth/__openerp__.py7
-rw-r--r--addons/auth_oauth/auth_oauth.py14
-rw-r--r--addons/auth_oauth/auth_oauth_data.xml16
-rw-r--r--addons/auth_oauth/auth_oauth_view.xml6
-rw-r--r--addons/auth_oauth/controllers/main.py2
-rw-r--r--addons/auth_oauth/res_config.py63
-rw-r--r--addons/auth_oauth/res_config.xml50
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>