[IMP] auth_signup: on login page, show the links 'Sign Up' and 'Reset Password' only when enabled

bzr revid: rco@openerp.com-20121203154811-1v0f3eu444rkw6cp
This commit is contained in:
Raphael Collet 2012-12-03 16:48:11 +01:00
parent 41ceffd52b
commit 4d200952f7
5 changed files with 41 additions and 6 deletions

View File

@ -32,6 +32,18 @@ _logger = logging.getLogger(__name__)
class Controller(openerp.addons.web.http.Controller):
_cp_path = '/auth_signup'
@openerp.addons.web.http.jsonrequest
def get_config(self, req, dbname):
""" retrieve the module config (which features are enabled) for the login page """
registry = RegistryManager.get(dbname)
with registry.cursor() as cr:
icp = registry.get('ir.config_parameter')
config = {
'signup': icp.get_param(cr, openerp.SUPERUSER_ID, 'auth_signup.allow_uninvited') == 'True',
'reset_password': icp.get_param(cr, openerp.SUPERUSER_ID, 'auth_signup.reset_password') == 'True',
}
return config
@openerp.addons.web.http.jsonrequest
def retrieve(self, req, dbname, token):
""" retrieve the user info (name, login or email) corresponding to a signup token """

View File

@ -26,14 +26,19 @@ class base_config_settings(osv.TransientModel):
_inherit = 'base.config.settings'
_columns = {
'auth_signup_uninvited': fields.boolean('Allow external users to sign up', help="If unchecked, only invited users may sign up"),
'auth_signup_template_user_id': fields.many2one('res.users', 'Template user for new users created through signup'),
'auth_signup_reset_password': fields.boolean('Enable password reset from Login page',
help="This allows users to trigger a password reset from the Login page."),
'auth_signup_uninvited': fields.boolean('Allow external users to sign up',
help="If unchecked, only invited users may sign up."),
'auth_signup_template_user_id': fields.many2one('res.users',
string='Template user for new users created through signup'),
}
def get_default_auth_signup_template_user_id(self, cr, uid, fields, context=None):
icp = self.pool.get('ir.config_parameter')
# we use safe_eval on the result, since the value of the parameter is a nonempty string
return {
'auth_signup_reset_password': safe_eval(icp.get_param(cr, uid, 'auth_signup.reset_password', 'False')),
'auth_signup_uninvited': safe_eval(icp.get_param(cr, uid, 'auth_signup.allow_uninvited', 'False')),
'auth_signup_template_user_id': safe_eval(icp.get_param(cr, uid, 'auth_signup.template_user_id', 'False')),
}
@ -42,5 +47,6 @@ class base_config_settings(osv.TransientModel):
config = self.browse(cr, uid, ids[0], context=context)
icp = self.pool.get('ir.config_parameter')
# we store the repr of the values, since the value of the parameter is a required string
icp.set_param(cr, uid, 'auth_signup.reset_password', repr(config.auth_signup_reset_password))
icp.set_param(cr, uid, 'auth_signup.allow_uninvited', repr(config.auth_signup_uninvited))
icp.set_param(cr, uid, 'auth_signup.template_user_id', repr(config.auth_signup_template_user_id.id))

View File

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

View File

@ -45,7 +45,22 @@ openerp.auth_signup = function(instance) {
}
// bind reset password link
this.$('a.oe_reset_password').click(this.do_reset_password);
this.$('a.oe_signup_reset_password').click(this.do_reset_password);
// make signup link and reset password link visible only when enabled
this.$('a.oe_signup_signup').hide();
this.$('a.oe_signup_reset_password').hide();
if (this.params.db) {
this.rpc("/auth_signup/get_config", {dbname: self.params.db})
.done(function(result) {
if (result.signup) {
self.$('a.oe_signup_signup').show();
}
if (result.reset_password) {
self.$('a.oe_signup_reset_password').show();
}
});
}
return d;
},

View File

@ -22,11 +22,9 @@
<button class="oe_signup_show" name="submit">Sign up</button>
<a class="oe_signup_hide oe_signup_signup" href="#">Sign Up</a>
<a class="oe_signup_show oe_signup_back" href="#">Back to Login</a>
<a class="oe_signup_reset_password" href="#">Reset password</a>
</li>
</t>
<t t-jquery="form ul:first li:last" t-operation="after">
<li><a class="oe_reset_password" href="#">Reset password</a></li>
</t>
</t>
</templates>