[WIP] auth_signup
bzr revid: fme@openerp.com-20140117141806-r6f1dejdcg7ii1e0
This commit is contained in:
parent
f41243acd3
commit
c3f7ab7ddd
|
@ -34,11 +34,13 @@ Allow users to sign up and reset their password
|
|||
'depends': [
|
||||
'base_setup',
|
||||
'email_template',
|
||||
'web',
|
||||
],
|
||||
'data': [
|
||||
'auth_signup_data.xml',
|
||||
'res_config.xml',
|
||||
'res_users_view.xml',
|
||||
'views/auth_signup_login.xml',
|
||||
],
|
||||
'js': ['static/src/js/auth_signup.js'],
|
||||
'qweb': ['static/src/xml/auth_signup.xml'],
|
||||
|
|
|
@ -22,16 +22,27 @@ import logging
|
|||
|
||||
import openerp
|
||||
from openerp import http
|
||||
from openerp.http import request
|
||||
from openerp.http import request, LazyResponse
|
||||
from openerp.modules.registry import RegistryManager
|
||||
from ..res_users import SignupError
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class Controller(http.Controller):
|
||||
class Home(openerp.addons.web.controllers.main.Home):
|
||||
|
||||
@http.route('/auth_signup/get_config', type='json', auth="none")
|
||||
def get_config(self, dbname):
|
||||
@http.route('/web/login', type='http', auth="none")
|
||||
def web_login(self, *args, **kw):
|
||||
response = super(Home, self).web_login(*args, **kw)
|
||||
if isinstance(response, LazyResponse):
|
||||
config = self.get_auth_signup_config(request.session.db)
|
||||
response.params['values'].update(config)
|
||||
if request.params.get('signup', None) and config['signup']:
|
||||
response.params['template'] = 'auth_signup.signup'
|
||||
if request.params.get('reset', None) and config['signup']:
|
||||
response.params['template'] = 'auth_signup.reset'
|
||||
return response
|
||||
|
||||
def get_auth_signup_config(self, dbname):
|
||||
""" retrieve the module config (which features are enabled) for the login page """
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
|
@ -42,6 +53,8 @@ class Controller(http.Controller):
|
|||
}
|
||||
return config
|
||||
|
||||
class Controller(http.Controller):
|
||||
|
||||
@http.route('/auth_signup/retrieve', type='json', auth="none")
|
||||
def retrieve(self, dbname, token):
|
||||
""" retrieve the user info (name, login or email) corresponding to a signup token """
|
||||
|
|
|
@ -66,19 +66,19 @@ class res_partner(osv.Model):
|
|||
self.signup_prepare(cr, uid, [partner.id], context=context)
|
||||
partner.refresh()
|
||||
|
||||
# the parameters to encode for the query and fragment part of url
|
||||
query = {'db': cr.dbname}
|
||||
# the parameters to encode for the query
|
||||
query = dict(db=cr.dbname)
|
||||
signup_type = context.get('signup_force_type_in_url', partner.signup_type or '')
|
||||
fragment = {'action': action, 'type': signup_type}
|
||||
query[signup_type] = 1
|
||||
|
||||
if partner.signup_token and signup_type:
|
||||
fragment['token'] = partner.signup_token
|
||||
query['token'] = partner.signup_token
|
||||
elif partner.user_ids:
|
||||
fragment['db'] = cr.dbname
|
||||
fragment['login'] = partner.user_ids[0].login
|
||||
query['login'] = partner.user_ids[0].login
|
||||
else:
|
||||
continue # no signup token, no user, thus no signup url!
|
||||
|
||||
fragment = dict()
|
||||
if view_type:
|
||||
fragment['view_type'] = view_type
|
||||
if menu_id:
|
||||
|
@ -88,7 +88,7 @@ class res_partner(osv.Model):
|
|||
if res_id:
|
||||
fragment['id'] = res_id
|
||||
|
||||
res[partner.id] = urljoin(base_url, "?%s#%s" % (urlencode(query), urlencode(fragment)))
|
||||
res[partner.id] = urljoin(base_url, "/web/login?%s#%s" % (urlencode(query), urlencode(fragment)))
|
||||
|
||||
return res
|
||||
|
||||
|
|
|
@ -2,7 +2,8 @@ openerp.auth_signup = function(instance) {
|
|||
instance.auth_signup = instance.auth_signup || {};
|
||||
var _t = instance.web._t;
|
||||
|
||||
/* TODO: make this a server side controller
|
||||
return;
|
||||
|
||||
instance.web.Login.include({
|
||||
start: function() {
|
||||
var self = this;
|
||||
|
@ -184,5 +185,4 @@ openerp.auth_signup = function(instance) {
|
|||
});
|
||||
},
|
||||
});
|
||||
*/
|
||||
};
|
||||
|
|
|
@ -0,0 +1,72 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- vim:fdn=3:
|
||||
-->
|
||||
<openerp>
|
||||
<data>
|
||||
<template id="auth_signup.login" inherit_id="web.login" name="Login (overloaded by auth_signup)">
|
||||
<xpath expr="//button[@type='submit']" position="before">
|
||||
<a t-if="signup" href="/web/login?signup=1" class="btn btn-default pull-left">Sign up</a>
|
||||
<a t-if="reset_password" href="/web/login?reset=1" class="btn btn-default pull-left">Reset Password</a>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
<template id="auth_signup.signup" name="Sinup">
|
||||
<t t-call="web.login_layout">
|
||||
<t t-set="head">
|
||||
<t t-foreach="css" t-as="css_file">
|
||||
<link rel="stylesheet" t-att-href="css_file"/>
|
||||
</t>
|
||||
<t t-foreach="js" t-as="js_file">
|
||||
<script type="text/javascript" t-att-src="js_file"></script>
|
||||
</t>
|
||||
</t>
|
||||
|
||||
<form class="oe_signup_form" role="form" t-attf-action="/web/login{{ '?debug' if debug else '' }}" method="post">
|
||||
<div class="form-group field-name">
|
||||
<label for="name" class="control-label">Name</label>
|
||||
<input type="text" name="name" t-att-value="name" id="name" class="form-control" placeholder="Enter your name" required="required" autofocus="autofocus"/>
|
||||
</div>
|
||||
|
||||
<div class="form-group field-login">
|
||||
<label for="login" class="control-label">Username (email)</label>
|
||||
<input type="text" name="login" t-att-value="login" id="login" class="form-control" placeholder="Enter login" required="required"/>
|
||||
</div>
|
||||
|
||||
<div class="form-group field-password">
|
||||
<label for="password" class="control-label">Password</label>
|
||||
<input type="password" name="password" id="password" class="form-control" placeholder="Password" required="required"/>
|
||||
</div>
|
||||
|
||||
<div class="form-group field-confirm_password">
|
||||
<label for="confirm_password" class="control-label">Confirm Password</label>
|
||||
<input type="password" name="confirm_password" id="confirm_password" class="form-control" placeholder="Confirm your password" required="required"/>
|
||||
</div>
|
||||
|
||||
<div class="oe_login_messages">
|
||||
<p class="alert alert-danger" t-if="authentication_failed">
|
||||
Wrong login/password
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
<input type="hidden" name="redirect" t-att-value="redirect"/>
|
||||
<input type="hidden" name="signup" value="1"/>
|
||||
<div class="clearfix oe_login_buttons">
|
||||
<a href="/web/login" class="btn btn-default pull-left">Back to Login</a>
|
||||
<button type="submit" class="btn btn-primary pull-right">Signup</button>
|
||||
</div>
|
||||
|
||||
</form>
|
||||
<div class="oe_single_form_footer" t-if="not disable_footer">
|
||||
<t t-if="not disable_database_manager">
|
||||
<a class="oe_login_manage_db" t-attf-href="/web/database/manager{{ '?debug' if debug else '' }}">Manage Databases</a>
|
||||
<span class="oe_footer_seperator"> | </span>
|
||||
</t>
|
||||
<a href="http://www.openerp.com" target="_blank">Powered by <span>OpenERP</span></a>
|
||||
</div>
|
||||
|
||||
</t>
|
||||
</template>
|
||||
|
||||
</data>
|
||||
</openerp>
|
Loading…
Reference in New Issue