oauth config wizard

bzr revid: al@openerp.com-20120818130411-auxfh3lc0r801kym
This commit is contained in:
Antony Lesuisse 2012-08-18 15:04:11 +02:00
parent 200a0fd5dd
commit 01c56cbb92
7 changed files with 48 additions and 61 deletions

View File

@ -17,7 +17,6 @@ class auth_oauth_provider(osv.osv):
'enabled' : fields.boolean('Allowed'), 'enabled' : fields.boolean('Allowed'),
'css_class' : fields.char('CSS class'), 'css_class' : fields.char('CSS class'),
'body' : fields.char('Body'), 'body' : fields.char('Body'),
'active' : fields.boolean('Active'),
'sequence' : fields.integer(), 'sequence' : fields.integer(),
} }
_defaults = { _defaults = {

View File

@ -28,51 +28,36 @@ class base_config_settings(osv.TransientModel):
_inherit = 'base.config.settings' _inherit = 'base.config.settings'
_columns = { _columns = {
'auth_oauth_google_enabled' : fields.boolean('Allow users to login with Google'), 'auth_oauth_google_enabled' : fields.boolean('Allow users to sign in with Google'),
'auth_oauth_google_client_id' : fields.char('Client ID'), 'auth_oauth_google_client_id' : fields.char('Client ID'),
'auth_oauth_facebook_enabled' : fields.boolean('Allow users to login with Facebook'), 'auth_oauth_facebook_enabled' : fields.boolean('Allow users to sign in with Facebook'),
'auth_oauth_facebook_client_id' : fields.char('Client ID'), 'auth_oauth_facebook_client_id' : fields.char('Client ID'),
} }
def get_default_allow(self, cr, uid, fields, context=None): 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] google_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'auth_oauth', 'provider_google')[1]
rg = self.pool.get('auth.oauth.provider').read(cr, uid, [google_id], ['enabled'], context=context)
facebook_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'auth_oauth', 'provider_facebook')[1] facebook_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'auth_oauth', 'provider_facebook')[1]
rf = self.pool.get('auth.oauth.provider').read(cr, uid, [facebook_id], ['enabled'], context=context) 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 { return {
'auth_oauth_google_enabled': rg[0]['enabled'], 'auth_oauth_google_enabled': rg[0]['enabled'],
'auth_oauth_facebook_enabled': rf[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_allow(self, cr, uid, ids, context=None): 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] 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] 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) config = self.browse(cr, uid, ids[0], context=context)
self.pool.get('auth.oauth.provider').write(cr, uid, [google_id], {'enabled':config.auth_oauth_google_enabled}) rg = {
self.pool.get('auth.oauth.provider').write(cr, uid, [facebook_id], {'enabled':config.auth_oauth_facebook_enabled}) '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)
# def get_default_client_ids(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]
# return {
# 'auth_oauth_google_client_id': icp.get_param(cr, uid, 'auth.auth_oauth_google_client_id', "Set by the user") or False
# }
# def set_client_ids(self, cr, uid, ids, context=None):
# provider_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'auth_oauth', 'provider_goole')
# config = self.browse(cr, uid, ids[0], context=context)
# icp = self.pool.get('ir.config_parameter')
# icp.set_param(cr, uid, 'auth.google_client_id', config.google_client_id)
# def get_default_facebook_client_id(self, cr, uid, fields, context=None):
# icp = self.pool.get('ir.config_parameter')
# return {
# 'facebook_client_id': icp.get_param(cr, uid, 'auth.facebook_client_id', "Set by the user") or False
# }
# def set_facebook_client_id(self, cr, uid, ids, context=None):
# config = self.browse(cr, uid, ids[0], context=context)
# icp = self.pool.get('ir.config_parameter')
# icp.set_param(cr, uid, 'auth.facebook_client_id', config.facebook_client_id)

View File

@ -1,7 +1,6 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<openerp> <openerp>
<data> <data>
<record model="ir.ui.view" id="view_general_configuration"> <record model="ir.ui.view" id="view_general_configuration">
<field name="name">base.config.settings.oauth</field> <field name="name">base.config.settings.oauth</field>
<field name="model">base.config.settings</field> <field name="model">base.config.settings</field>
@ -12,35 +11,34 @@
<div name="google"> <div name="google">
<div> <div>
<field name="auth_oauth_google_enabled" class="oe_inline"/> <field name="auth_oauth_google_enabled" class="oe_inline"/>
<label for="auth_oauth_google_enabled"/> <label for="auth_oauth_google_enabled"/>
</div> </div>
<div attrs="{'invisible':[('auth_oauth_google_enabled','=',False)]}"> <div attrs="{'invisible':[('auth_oauth_google_enabled','=',False)]}">
<div> <blockquote>
<p>To setup the signin process with Google, first you have to perform the following steps:</p> To setup the signin process with Google, first you have to perform the following steps:<br/>
<br/> <br/>
1. Register your application through the Google's APIs console. The result of this registration is a set of values that are known to both Google and you application: 'client_id' and 'redirect_uri'. - 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/> <br/>
2. Fill the following field with the values assigned by Google. 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"/>
</div> </blockquote>
<div>
<label for="auth_oauth_google_client_id" placeholder="Your CLIENT_ID"/>
<field name="auth_oauth_google_client_id" class="oe_inline"/>
</div>
</div> </div>
</div> </div>
<div name="facebook"> <div name="facebook">
<div> <div>
<field name="auth_oauth_facebook_enabled" class="oe_inline"/> <field name="auth_oauth_facebook_enabled" class="oe_inline"/>
<label for="auth_oauth_facebook_enabled"/> <label for="auth_oauth_facebook_enabled"/>
</div> </div>
<div attrs="{'invisible':[('auth_oauth_facebook_enabled','=',False)]}"> <div attrs="{'invisible':[('auth_oauth_facebook_enabled','=',False)]}">
<div> <blockquote>
<label string="Here goes the explanation"/> To setup the signin process with Google, first you have to perform the following steps:<br/>
</div> <br/>
<div> 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"/>
<label for="auth_oauth_facebook_client_id" placeholder="Your CLIENT_ID"/> </blockquote>
<field name="auth_oauth_facebook_client_id" class="oe_inline"/>
</div>
</div> </div>
</div> </div>
</div> </div>
@ -49,4 +47,4 @@
</record> </record>
</data> </data>
</openerp> </openerp>

View File

@ -25,7 +25,8 @@ class base_config_settings(osv.TransientModel):
_inherit = 'base.config.settings' _inherit = 'base.config.settings'
_columns = { _columns = {
'auth_signup_template_user_id': fields.many2one('res.users', 'Template user for new users created through signup') 'auth_signup_uninvited': fields.boolean('Allow uninvited users to sign up'),
'auth_signup_template_user_id': fields.many2one('res.users', 'Template user for new users created through signup'),
} }
def get_default_signup(self, cr, uid, fields, context=None): def get_default_signup(self, cr, uid, fields, context=None):

View File

@ -8,6 +8,10 @@
<field name="inherit_id" ref="base_setup.view_general_configuration"/> <field name="inherit_id" ref="base_setup.view_general_configuration"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='module_auth_anonymous']/.." position="after"> <xpath expr="//field[@name='module_auth_anonymous']/.." position="after">
<div>
<field name="auth_signup_uninvited" class="oe_inline"/>
<label for="auth_signup_uninvited"/>
</div>
<div> <div>
<label for="auth_signup_template_user_id"/> <label for="auth_signup_template_user_id"/>
<field name="auth_signup_template_user_id" class="oe_inline"/> <field name="auth_signup_template_user_id" class="oe_inline"/>

View File

@ -30,9 +30,9 @@ class base_config_settings(osv.osv_memory):
This installs the module multi_company."""), This installs the module multi_company."""),
'module_share': fields.boolean('allow documents sharing', 'module_share': fields.boolean('allow documents sharing',
help="""Share or embbed any screen of openerp."""), help="""Share or embbed any screen of openerp."""),
'module_portal': fields.boolean('activate customer portal', 'module_portal': fields.boolean('activate the customer/supplier portal',
help="""Give access your customers and suppliers to their documents."""), help="""Give access your customers and suppliers to their documents."""),
'module_auth_anonymous': fields.boolean('public website', 'module_auth_anonymous': fields.boolean('activete the public portal',
help="""Enable the public part of openerp, the public part of openerp are browsable like a website."""), help="""Enable the public part of openerp, the public part of openerp are browsable like a website."""),
'module_auth_oauth': fields.boolean('use external authentication providers, sign in with google, facebook, ...'), 'module_auth_oauth': fields.boolean('use external authentication providers, sign in with google, facebook, ...'),
} }

View File

@ -22,7 +22,7 @@
{ {
'name' : "Portal", 'name' : "Portal",
'version' : "1.0", 'version' : "1.0",
'depends' : ["base", "share", "auth_anonymous"], 'depends' : ["base", "share", "auth_signup" "auth_anonymous"],
'author' : "OpenERP SA", 'author' : "OpenERP SA",
'category': 'Portal', 'category': 'Portal',
'description': """ 'description': """