From f73fe1f31530c78ec768e3c43ab577d2a7f79996 Mon Sep 17 00:00:00 2001 From: BaiJiangjie Date: Thu, 19 Apr 2018 17:20:53 +0800 Subject: [PATCH] =?UTF-8?q?[Bugfix]=20=E4=BF=AE=E5=A4=8D=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E7=99=BB=E5=BD=95=E7=BC=93=E5=AD=98=E8=AE=BE=E7=BD=AE=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/i18n/zh/LC_MESSAGES/django.mo | Bin 31646 -> 31654 bytes apps/i18n/zh/LC_MESSAGES/django.po | 50 +++++++++++----------- apps/users/templates/users/login_otp.html | 4 +- apps/users/utils.py | 28 ++++++++---- apps/users/views/login.py | 8 ++-- apps/users/views/user.py | 36 ++++------------ 6 files changed, 58 insertions(+), 68 deletions(-) diff --git a/apps/i18n/zh/LC_MESSAGES/django.mo b/apps/i18n/zh/LC_MESSAGES/django.mo index 21cce3fc3140daf1c93525e482b6fa13ff0683f0..543ddd9078423aa0c291e01b4c00e82aed1fb24b 100644 GIT binary patch delta 7753 zcmXxodz{Zz9>?+TFot2wFdFyE%pmvseaNL6BMm9Ek0vq1G9s6hOYx(|id>=_VaXON zyPykk5~HzH>mVqGWl-bG+v?br_)d(&k*GYAPbM?if##^4wM8ZFjLFy&HE)#rC!h+RYG>PpsH=G!HGe(o zq<3Hf?_ZG5gBCc08h8QnMAYJn4|g07(Q z-9Y8}9kotO2XeB0P>u&JR0)e1FZ zL!D$N)Vy?5Ax~pO4^w#1(ab>I{cEU#R-+Q-q3&*nBuG^9GR{2fRro5@I`2n#(97}xs-pc^8Be0#h3lw7enm};>Kqmlhj$Vuqh7)ctc_Wy zLZ+hH=b%nzIV#UuR6(1uC`NYjppLz$37?@VJB=#nJJbnXM@{@4l`y7D_%bD--ko&R zr=mA%-V>;eJ%_0{*RDsM=;v64^@DTa1K*9|!c}c5YQegw6KRGjFcWLx0Mr%aqQ=d% z3s40uMqSNn)CM=A7T$&$e*j}yKRC*Rj`kZ5xQxw-Z=!b4_?~c~&Zuv?bkq@N*`cTt z8;82{NmvncQ423coya?=jch`lXg?{G_McEkeajZ_8eTye)CQ8fa{gMd2@N{x)~JQMp+0VXQ48d_eZ1RqQH3o; z7529KH={PR7j*^ukV6R0A}?D|CnJ1G??L5#G=uZk9p%uVipJQfsF!6P>PVNleFLhn zJ*b_1iKFlv9D}{Oh52@)`uAfoJc26tIM%`MQ14vn$bDhO6)}c}YFHd=p$ck=Ag!pMHMs=_3q3;-R)mc3+_Ul>;Zckbz)ahFJ&aUdwAqYs0pd4m!~l{z(E*` zbL~RZ#1*Kk%0nIHPSj2hq6+-neuX;8^QdvxQS+nkFU%VWl6X)>HBgl{$7H-0wc{bE z--6+&MAPhi)cChB74uM6brfsjWgLeInc+8OE;c4!gF4X@g>wHzdxUq=5cy|a&MQjPERAb19=D;!eTFLNIO=51q4NCVIOc)yD$AozraLO{08GHK7*S=< z^Pq`yQ9E94|BAZ%b*K~Af*QXARnVuXogBw_{1G+(7V4WWrdL>C3Tk{q9D-?XU*3z) zzY?yYK?ydaUcQe}Z}o2;82@1S(o{kfS|4=<9WVj=qVfzu6+8yD;IpW_Gu^%rbpk6; z1#Wzh^DoQ8AsV#cS=8Hm9rZTfM(wcJLt&ySsP_7(yKIWuaU1t{Lgnd+$}iNrtl;o2~#ZxDP$`xRV-@Be{Q zq&@SIaHrAyVALS4fEm~Zt77E;F5y8H{R0zmr{g2`1nNl7pmuWE?Kd3XMx9XHqhWul zZGyU*4vsS&KjJtCSvL|q6Fvl!ZLWO@wcrA~3{~LY><(06hf$yBQ>cv;>&G867>AnQ z0Lx)p)H{)h8kbcl_dn1L!%!1O+2`y`)J|S^ywY(Vs(?LiKVVPT3-%Wq^;r1Q#-lb; zN3lNtX*_7*-tNeD{1mFvsg7qjeifBqvD@E6y-Xjv|0{dWUPk4==J+=1<&5di`Ku#= z2PLeE`dBqVeS>vF?J(0mY_sifRDt8LB|htTo%=VVPHvam^O3*YgJX^p2Ke{C{D3e~ zHCqdxWMBhSVQ-=e{kz?QTKE%t(0<|mQ}!aNfa|D@#AJt-LCvq69SIjmp+O6^L@kuz zxDRULP*nREJH@_)nzzudvD;DO^HBwSjmq-_>igmbsy&DdbVXQL5o%(JZEV}yZm0$O zIv!@9M$LcT@l40Bqu%n>;#fNoHE^n(W8bu^P&?e6BR#Vv+YpqLi>}B*V)aeg0`ayKj`)|sC?hs|G2%# zP|jZ+u|va!%A+P$L+zxgZSVfBsPR2)mK|!xp}xSTVGO?M_$~KuLFNC%{U?TU{z`a; z27M*|;DH4;dRW+B)>cO)Xn^&xBkIQ`2esg2RK8rt^X)>r4E1Zd5;bmX#2x$Ga0qqB zU)c+8ziMxx7Aln!CP=h3P=z%_eM&kx?&bc+?Pxn0H7+uXhuScLE3YF+n)Jt>>b(h~e zj(Q@D%c733K5Bet)Pg;1j@zfB3SHoM5f&c3 z%BUUHLCs6U64(VbzdOcZAFPf89ZyA#pM#qJs@nDWU*!QCJYW|p(LYfqaM;zQ8P43@@#fbN#PU;Xg#FOqXF*f`YEeSQRvQ0r1 zR2TL3x58+=-|dlJJZQpWn23YjF&?$^T*pftzl({q@3BYiMbtw7wXsiyzw_l$?@C8h ze~x`7G!nePLp&WXqpn~Xs-U%Y6Kdi%yWf6k&!NU&b$r7X}=Sm)rB* ze$HOS!q5LL9+arm_;6wsTi3S2di3Azcm!&piH>L6MW{S0QH5@@J5dGixB2$ic>n&N zra=j>pc33heWfN$2oqIAok%L`s_NntY=_$E2lgY>{KJ@rXHj{p@h7tiYKrPlv)w0h z{z)`sxnZ;iPDLf2W#4fB+m1Il-i4Z<@A!f(KrL8&QkbVKs*via0-B+&wo8Nu4NONJ z(F3T3AGVLXeY72q8b8JHi`am89_l6i5H?(?W8B8fFpT?U#&uj{EW(ak7#5X@#}XMz8gi}N>7*$U3b9Hp$yRC^ zGEz!}tu;zbF1eQbwa21_WzoLg^Lzin^Y{5)Ki|vmoWpxJ3N5=)Xx)awk$Zz6nA{== zisE`KhMO=Rw_$Po0q?=XSOiP941#EkN3~D1)vzmZ9V~?-QR7TTjWZk7ej&!<(w0G_ zpkNgRaTKh>(zq4NVLry-8C1t#Q3Kt?DpQ4_aD?PNPt zzs{&cp23J7rt_e!nTb04MW}>Up$1xyI=d~7^BnI-O>i7_#%ElA9ks&3?ZS!UQT-E9 zi6%L&*N**H0;v=vVq4U$?~Ubg2A4Pc3W%&e^Q65&t!>GG(4VB1$Q5}O0VInbDm#_xv5_ZKp*dLWh1XVs4 zwKL06y;&P}CY4|X9#)31oIj97_ zKqa^Xo8v*(m+BI}O;xZF<*8T=Gci(xhv_^-;q$18W};R&50%(b)YiX;THz+U1GUw= z9Url0Tz(m~)pu;suHg~HqZUx3EBmhrn^2&wZh@LO9re2PK~0e5@(C`_MkTfcmDozx zZ$vF<2kHoRBAXDLKrUNQH$A+holxUGoX-C1jItR9#p~yu^ygA-MLbc?qS9iuqXvpu^84uCDag8unlTuk704l zLbV@X3}OJdLp-4#5&Q&n`iA zT!A{O^{B1fidyMzRDyf$QPfVJLAASv>L1mkVBAPhjt6B_9hGS_Ov3w6D;|paE*Op) z=s7zd)&6a)iR)2EwI6HYMSKS1dWN5r+1P~mL)4BQDvLc}U7>hX=hnrFDzCk5)5VbR>P~%*69Q{Cel!>UF>5dwA5XR#;j3~1iJgDP5 z)QXqe_fcoR7PSMLQ0=#%6554Y$w7?6OQ`;LP@i`O+{3q^-)LA7UQuGYMh~{gvX*LoPrv6mdlr*c3=f6!419H z|1vy$Pk|;pfx5ldP`CLmYK28I!htHI%Il-f@*dQRTe`j-YMfrEafYCdYJ{DL>h}UB zWVrejO2iqG1}n>;9^PcZ?vI^JUsp|oKgU_fypdph_z+C9+4g1BgbVC4RD%DsTTqGpfO?;gpcYbOAfF`|gX-S^%VI0k zo#=sT*S|o{f3ORlKy?^xr`lPll`MAruH*Hn1h%{UTYJc!wO4KMNO);uQ46W7Snq#p z9yD==D>5BFg~~MIc&6jmPy;M=`5M$^`por5?J0W^HU6)T@1ibe^dQDoMH~+runOw6 zYJ&O%OGmA+hwW=K?Qm3rPh(@8;&_$o*P?cAlgsmvf4K+wj*Dgb`#&x-94OIN#nCjZ zg-UE8D$#fCdep>Q?bmj<>-X6cs01#d7IN1X9~|~i7#s;Fs6>G#YJ{4oz2ly!j+v

rvi6j3dDeSIojPRJ@AGxB@lN4%g>nY2pJeKX0$OzVKsV`x2;x%G+wFaciS? zx+QAd4w%6G3wpU?FskDSI}X)wl6}!Gw98Q|Ts(+s2e8)ebzNSw*zKm6fuVZ!Q z4-$rk6E#Eq@MwqHfk~*dUh4Was1|Ak86JJiHKqb53oh4G5LicN^G+d6y)cOdSA z5j`yCVHp018YqoGEANbod)t0C6FX8q%<(F_7M0LORN`N|{19rq(#ml+*AK8+c08(GwnBQ3D4f!m}-l zN}v{&zy_#xe{y+8)a~x(cqpp>la8OYFNWojU@i}}Xs{eL&<@lk%152$amP0umv}PV z!kVb|_o623Vu!eVIx5kZ9WTIwt#`ZullA^@<3SBip;mO!{%-Hu;v>Te6HqIvf$Eov z#j!Q2e{4Nw#HeVyw1;iv>AU;~_u8h8V$ z-)_6l9zl(J(q2aOzwJ1F4EtY_f~sS}_r0D?wP_eneK*vO^s|rJk#+(qf#*;YzGN4n zCS2iogWcxx@5cE3KS4n}4KKODUDSXvW5X3DAa7pK(D5R>29?;?sP_4&1P<8K_E&q? z#*7QwRgCzd4yMsD)s96CnB)47F`9TgYR7hBBi!ry;HmJRXtAh%3APd{p(NDpZ;VCo zK9@(j@t_WUF#!jWA3Tp^;!J z4{=n?LLI>pR6_6D98|}T?RNXUJ&J07!SNM)2lXvllK%uyeIwL@nxn?+i3Q*P{dp)& z!APuu(^0S2-?1ic#>RLI^+6LmJ{+h%CJ=W*CEgeH9~F;dH=KrD@GI0EiJ1^4l88#6 zDwfmxU*84o+@J^QtTQkQ`(X?YL=BXMTG3Oei6`6HsD$1?O|aVKn_Qmf@}u?w7QFx0 zdC)*n6T^;WZIW$_^{H>;cqnS3agJZG3sB=MLnWGHKSd?H-R9Z+iT?gSK!FB4jT+zv z>Laz-q;R0ps2!<{I;tdm7Mr0~y3T%q>c0!y;9=CbiTsmU38kRwQ*Eco?0+H!87|0j z!%3)tpSQ2N{w>F=9dAPQ&vSgtUPev$2Wp%WQ^G{bqY|i(I@;C|9@H=mwMFTu4)@yu zF3+-KQ0*r;ehwQFzl6G^xv2gp>?M4i_C5x3rF$SN&dVxDXClG4+`aOPZ|_e zs84Qk?err2bj%%*k{+A8zD0WVqW31HHf_@^_m77bl&pB}?HQLh&pp5Plk+ncoy-0F UT+WJf^Jkt}@OtjrK{u-YAL)IiIRF3v diff --git a/apps/i18n/zh/LC_MESSAGES/django.po b/apps/i18n/zh/LC_MESSAGES/django.po index 5d415863a..7f5586b2b 100644 --- a/apps/i18n/zh/LC_MESSAGES/django.po +++ b/apps/i18n/zh/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Jumpserver 0.3.3\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-18 20:14+0800\n" +"POT-Creation-Date: 2018-04-19 12:44+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: ibuler \n" "Language-Team: Jumpserver team\n" @@ -173,7 +173,7 @@ msgstr "密码或密钥密码" #: users/templates/users/login.html:59 #: users/templates/users/reset_password.html:52 #: users/templates/users/user_create.html:11 -#: users/templates/users/user_password_authentication.html:13 +#: users/templates/users/user_password_authentication.html:14 #: users/templates/users/user_password_update.html:40 #: users/templates/users/user_profile_update.html:40 #: users/templates/users/user_pubkey_update.html:40 @@ -1916,7 +1916,7 @@ msgstr "关闭" #: templates/_nav.html:10 users/views/group.py:28 users/views/group.py:44 #: users/views/group.py:62 users/views/group.py:79 users/views/group.py:95 -#: users/views/login.py:240 users/views/login.py:289 users/views/user.py:64 +#: users/views/login.py:241 users/views/login.py:290 users/views/user.py:64 #: users/views/user.py:79 users/views/user.py:99 users/views/user.py:155 #: users/views/user.py:310 users/views/user.py:357 users/views/user.py:379 msgid "Users" @@ -2417,9 +2417,9 @@ msgstr "上一步" #: users/templates/users/first_login.html:60 #: users/templates/users/login_otp.html:66 #: users/templates/users/user_otp_authentication.html:22 -#: users/templates/users/user_otp_enable_bind.html:25 +#: users/templates/users/user_otp_enable_bind.html:19 #: users/templates/users/user_otp_enable_install_app.html:22 -#: users/templates/users/user_password_authentication.html:21 +#: users/templates/users/user_password_authentication.html:17 msgid "Next" msgstr "下一步" @@ -2462,13 +2462,13 @@ msgstr "" #: users/templates/users/login_otp.html:64 #: users/templates/users/user_otp_authentication.html:19 -#: users/templates/users/user_otp_enable_bind.html:18 +#: users/templates/users/user_otp_enable_bind.html:16 msgid "Six figures" msgstr "6位数字" #: users/templates/users/login_otp.html:69 -msgid "Can't provide security? Please contact the administrator" -msgstr "如果不能提供OTP码,请联系管理员" +msgid "Can't provide security? Please contact the administrator!" +msgstr "如果不能提供OTP验证码,请联系管理员!" #: users/templates/users/reset_password.html:45 #: users/templates/users/user_detail.html:343 users/utils.py:72 @@ -2816,52 +2816,52 @@ msgstr "用户组授权资产" msgid "Please enable cookies and try again." msgstr "设置你的浏览器支持cookie" -#: users/views/login.py:106 users/views/user.py:460 users/views/user.py:485 +#: users/views/login.py:107 users/views/user.py:479 users/views/user.py:507 msgid "Otp code invalid" msgstr "otp码认证失败" -#: users/views/login.py:132 +#: users/views/login.py:133 msgid "Logout success" msgstr "退出登录成功" -#: users/views/login.py:133 +#: users/views/login.py:134 msgid "Logout success, return login page" msgstr "退出登录成功,返回到登录页面" -#: users/views/login.py:149 +#: users/views/login.py:150 msgid "Email address invalid, please input again" msgstr "邮箱地址错误,重新输入" -#: users/views/login.py:162 +#: users/views/login.py:163 msgid "Send reset password message" msgstr "发送重置密码邮件" -#: users/views/login.py:163 +#: users/views/login.py:164 msgid "Send reset password mail success, login your mail box and follow it " msgstr "" "发送重置邮件成功, 请登录邮箱查看, 按照提示操作 (如果没收到,请等待3-5分钟)" -#: users/views/login.py:177 +#: users/views/login.py:178 msgid "Reset password success" msgstr "重置密码成功" -#: users/views/login.py:178 +#: users/views/login.py:179 msgid "Reset password success, return to login page" msgstr "重置密码成功,返回到登录页面" -#: users/views/login.py:195 users/views/login.py:208 +#: users/views/login.py:196 users/views/login.py:209 msgid "Token invalid or expired" msgstr "Token错误或失效" -#: users/views/login.py:204 +#: users/views/login.py:205 msgid "Password not same" msgstr "密码不一致" -#: users/views/login.py:240 +#: users/views/login.py:241 msgid "First login" msgstr "首次登陆" -#: users/views/login.py:290 +#: users/views/login.py:291 msgid "Login log list" msgstr "登录日志" @@ -2889,23 +2889,23 @@ msgstr "密码更新" msgid "Public key update" msgstr "密钥更新" -#: users/views/user.py:419 +#: users/views/user.py:430 msgid "Password invalid" msgstr "用户名或密码无效" -#: users/views/user.py:512 +#: users/views/user.py:535 msgid "OTP enable success" msgstr "OTP 绑定成功" -#: users/views/user.py:513 +#: users/views/user.py:536 msgid "OTP enable success, return login page" msgstr "OTP 绑定成功,返回到登录页面" -#: users/views/user.py:515 +#: users/views/user.py:538 msgid "OTP disable success" msgstr "OTP 解绑成功" -#: users/views/user.py:516 +#: users/views/user.py:539 msgid "OTP disable success, return login page" msgstr "OTP 解绑成功,返回登录页面" diff --git a/apps/users/templates/users/login_otp.html b/apps/users/templates/users/login_otp.html index 80f5dc429..de201ce8c 100644 --- a/apps/users/templates/users/login_otp.html +++ b/apps/users/templates/users/login_otp.html @@ -51,7 +51,7 @@

-

请在手机中打开Google Authenticator应用,输入6位动态码

+

 请打开手机Google Authenticator应用,输入6位动态码

@@ -66,7 +66,7 @@ - {% trans "Can't provide otp code? Please contact the administrator" %} + {% trans "Can't provide security? Please contact the administrator!" %}
diff --git a/apps/users/utils.py b/apps/users/utils.py index 94368e0c7..0ccba92be 100644 --- a/apps/users/utils.py +++ b/apps/users/utils.py @@ -9,6 +9,7 @@ import uuid import requests import ipaddress +from django.http import Http404 from django.conf import settings from django.contrib.auth.mixins import UserPassesTestMixin from django.contrib.auth import authenticate, login as auth_login @@ -224,14 +225,26 @@ def get_ip_city(ip, timeout=10): return city -def get_tmp_user_from_session(request): - user_id = request.session.get('tmp_user_id') - user = get_object_or_none(User, pk=user_id) +def get_user_or_tmp_user(request): + user = request.user + tmp_user = get_tmp_user_from_cache(request) + if user.is_authenticated: + return user + elif tmp_user: + return tmp_user + else: + raise Http404("Not found this user") + + +def get_tmp_user_from_cache(request): + if not request.session.session_key: + return None + user = cache.get(request.session.session_key+'user') return user -def set_tmp_user_to_session(request, user): - request.session['tmp_user_id'] = str(user.id) +def set_tmp_user_to_cache(request, user): + cache.set(request.session.session_key+'user', user, 600) def redirect_user_first_login_or_index(request, redirect_field_name): @@ -243,10 +256,7 @@ def redirect_user_first_login_or_index(request, redirect_field_name): def generate_otp_uri(request, issuer="Jumpserver"): - if request.user.is_authenticated: - user = request.user - else: - user = get_tmp_user_from_session(request) + user = get_user_or_tmp_user(request) otp_secret_key = cache.get(request.session.session_key+'otp_key', '') if not otp_secret_key: otp_secret_key = base64.b32encode(os.urandom(10)).decode('utf-8') diff --git a/apps/users/views/login.py b/apps/users/views/login.py index d7a98e174..376a93139 100644 --- a/apps/users/views/login.py +++ b/apps/users/views/login.py @@ -24,7 +24,7 @@ from common.utils import get_object_or_none from common.mixins import DatetimeSearchMixin, AdminUserRequiredMixin from ..models import User, LoginLog from ..utils import send_reset_password_mail, check_otp_code, get_login_ip, redirect_user_first_login_or_index, \ - get_tmp_user_from_session, set_tmp_user_to_session + get_user_or_tmp_user, set_tmp_user_to_cache from ..tasks import write_login_log_async from .. import forms @@ -55,11 +55,11 @@ class UserLoginView(FormView): if not self.request.session.test_cookie_worked(): return HttpResponse(_("Please enable cookies and try again.")) - set_tmp_user_to_session(self.request, form.get_user()) + set_tmp_user_to_cache(self.request, form.get_user()) return redirect(self.get_success_url()) def get_success_url(self): - user = get_tmp_user_from_session(self.request) + user = get_user_or_tmp_user(self.request) if user.otp_enabled and user.otp_secret_key: # 1,2 & T @@ -95,7 +95,7 @@ class UserLoginOtpView(FormView): redirect_field_name = 'next' def form_valid(self, form): - user = get_tmp_user_from_session(self.request) + user = get_user_or_tmp_user(self.request) otp_code = form.cleaned_data.get('otp_code') otp_secret_key = user.otp_secret_key diff --git a/apps/users/views/user.py b/apps/users/views/user.py index 99c45b19c..c6a882705 100644 --- a/apps/users/views/user.py +++ b/apps/users/views/user.py @@ -35,7 +35,7 @@ from common.mixins import JSONResponseMixin from common.utils import get_logger, get_object_or_none, is_uuid, ssh_key_gen from .. import forms from ..models import User, UserGroup -from ..utils import AdminUserRequiredMixin, generate_otp_uri, check_otp_code, get_tmp_user_from_session +from ..utils import AdminUserRequiredMixin, generate_otp_uri, check_otp_code, get_user_or_tmp_user from ..signals import post_user_create from ..tasks import write_login_log_async @@ -400,19 +400,13 @@ class UserOtpEnableAuthenticationView(FormView): form_class = forms.UserCheckPasswordForm def get_form(self, form_class=None): - if self.request.user.is_authenticated: - user = self.request.user - else: - user = get_tmp_user_from_session(self.request) + user = get_user_or_tmp_user(self.request) form = super().get_form(form_class=form_class) form['username'].initial = user.username return form def get_context_data(self, **kwargs): - if self.request.user.is_authenticated: - user = self.request.user - else: - user = get_tmp_user_from_session(self.request) + user = get_user_or_tmp_user(self.request) context = { 'user': user } @@ -420,10 +414,7 @@ class UserOtpEnableAuthenticationView(FormView): return super().get_context_data(**kwargs) def form_valid(self, form): - if self.request.user.is_authenticated: - user = self.request.user - else: - user = get_tmp_user_from_session(self.request) + user = get_user_or_tmp_user(self.request) password = form.cleaned_data.get('password') user = authenticate(username=user.username, password=password) if not user: @@ -439,10 +430,7 @@ class UserOtpEnableInstallAppView(TemplateView): template_name = 'users/user_otp_enable_install_app.html' def get_context_data(self, **kwargs): - if self.request.user.is_authenticated: - user = self.request.user - else: - user = get_tmp_user_from_session(self.request) + user = get_user_or_tmp_user(self.request) context = { 'user': user } @@ -456,10 +444,7 @@ class UserOtpEnableBindView(TemplateView, FormView): success_url = reverse_lazy('users:user-otp-settings-success') def get_context_data(self, **kwargs): - if self.request.user.is_authenticated: - user = self.request.user - else: - user = get_tmp_user_from_session(self.request) + user = get_user_or_tmp_user(self.request) context = { 'otp_uri': generate_otp_uri(self.request), 'user': user @@ -480,10 +465,7 @@ class UserOtpEnableBindView(TemplateView, FormView): return self.form_invalid(form) def save_otp(self, otp_secret_key): - if self.request.user.is_authenticated: - user = self.request.user - else: - user = get_tmp_user_from_session(self.request) + user = get_user_or_tmp_user(self.request) user.enable_otp() user.otp_secret_key = otp_secret_key user.save() @@ -527,11 +509,9 @@ class UserOtpSettingsSuccessView(TemplateView): return super().get_context_data(**kwargs) def get_title_describe(self): + user = get_user_or_tmp_user(self.request) if self.request.user.is_authenticated: - user = self.request.user auth_logout(self.request) - else: - user = get_tmp_user_from_session(self.request) title = _('OTP enable success') describe = _('OTP enable success, return login page') if not user.otp_enabled: