因企业微信模块不依赖于主题,故扫码登录的界面需要在各自项目中继承引入,此代码适用于layui_theme_odoo12主题
python代码
xxxxxxxxxx
36
1
# !user/bin/env python3
2
# -*- coding: utf-8 -*-
3
# Author: Artorias
4
from odoo import http
5
from odoo.http import request
6
7
from addons.web.controllers.main import Home, ensure_db
8
9
10
class WechatHome(Home):
11
route('/web/login', type='http', auth='public', csrf=False) .
12
def web_login(self, redirect=None, **kw):
13
'''
14
企业微信扫码登录odoo后台
15
说明:redirect_url,配置后扫码登录后会通过该应用的允许跳转到以这个域名为开头的url;
16
app_id:为企业微信的crop;
17
agent_id:为企业微信应用的agent;
18
使用:需要先同步企业微信,否则无法使用扫码登录;
19
需要在后台配置好企业信息以及应用信息;
20
如果扫码的用户不在odoo的user表里(通过wx_userid对应),则会登录失败;
21
:return:
22
'''
23
apps = request.env['funenc.wechat.apps'].sudo().search([('is_login_app', '=', True)], limit=1)
24
can_user_qr_code = "True"
25
redirect_url = apps.app_redirect_url or ''
26
app_id = apps.account_id.corp or ''
27
agent_id = apps.app_agent or ''
28
if len(apps) != 0 and redirect_url != '' and app_id != '' and agent_id != '':
29
code_values = {
30
'redirect_url': 'http://' + redirect_url + '/funenc_wechat/success_login_by_wechat',
31
'appid': app_id,
32
'agentid': agent_id,
33
'can_user_qr_code': can_user_qr_code
34
}
35
request.params = {**request.params, **code_values}
36
return super().web_login(redirect, **kw)
已复制
xml视图代码
xxxxxxxxxx
70
1
2
<odoo>
3
<template id="layui_theme_odoo12_wechat_qr_code_login" inherit_id="layui_theme_odoo12.layui_theme_login">
4
5
<xpath expr="//div[@class='layadmin-user-login-main']/form[@class='layui-form layadmin-user-login-box layadmin-user-login-body']"
6
position="attributes">
7
<attribute name="id">login_form</attribute>
8
<!--<attribute name="class">layui-btn layui-btn-fluid layui-hide</attribute>-->
9
</xpath>
10
11
<xpath expr="//form[@id='login_form']/div[@class='layui-form-item'][1]"
12
position="attributes">
13
<attribute name="id">div_username</attribute>
14
<!--<attribute name="class">layui-btn layui-btn-fluid layui-hide</attribute>-->
15
</xpath>
16
17
<xpath expr="//form[@id='login_form']/div[@class='layui-form-item'][2]"
18
position="attributes">
19
<attribute name="id">div_password</attribute>
20
<!--<attribute name="class">layui-btn layui-btn-fluid layui-hide</attribute>-->
21
</xpath>
22
23
<xpath expr="//form[@id='login_form']/div[@t-attf-class='clearfix text-center layui-form-item']"
24
position="attributes">
25
<attribute name="id">div_to_login</attribute>
26
<!--<attribute name="class">layui-btn layui-btn-fluid layui-hide</attribute>-->
27
</xpath>
28
29
<xpath expr="//div[@id='div_to_login']" position="before">
30
<t t-if="can_user_qr_code == 'True'">
31
<div class="layui-form-item" id="div_to_qr_code" style="text-align: center;">
32
<button class="layui-btn layui-btn-fluid" style="width: 100%;" id="button_switch_qr_code">
33
切换企业微信扫码登陆
34
</button>
35
</div>
36
37
<div class="layui-form-item layui-hide" id="div_to_switch" style="text-align: center;">
38
<div id="to_login_image" style="text-align: center;display: flex;justify-content: center;margin-bottom: 0"/>
39
40
<button class="layui-btn layui-btn-fluid" style="width: 100%;" id="button_switch_password">
41
切换账号登录
42
</button>
43
</div>
44
</t>
45
</xpath>
46
47
<xpath expr="//div[@class='layadmin-user-login-main']" position="after">
48
<t t-if="can_user_qr_code == 'True'">
49
<script type="text/javascript"
50
src="http://rescdn.qqmail.com/node/ww/wwopenmng/js/sso/wwLogin-1.0.0.js"/>
51
<script>
52
$('#button_switch_qr_code, #button_switch_password').on('click', function(){
53
window.event.returnValue = false;
54
$('#div_to_switch, #button_switch_qr_code, #div_username, #div_password, #div_to_login').toggleClass('layui-hide')
55
})
56
</script>
57
<script>
58
window.WwLogin({
59
"id" : "to_login_image",
60
"appid" : "<t t-esc="appid"/>",
61
"agentid" : "<t t-esc="agentid"/>",
62
"redirect_uri" : "<t t-esc="redirect_url"/>",
63
"state" : "",
64
"href" : "",
65
});
66
</script>
67
</t>
68
</xpath>
69
</template>
70
</odoo>
已复制