From 335e81a26ca3e355375bbc75539f0e9bf4ee2feb Mon Sep 17 00:00:00 2001 From: Lu Liu <2w6f8c@gmail.com> Date: Tue, 16 Jun 2020 10:08:36 +0800 Subject: [PATCH 1/5] OAuth support for the Wikidata extension (#2661) Closes #1612 Merges @afkbrb work to finish @wetneb protype, including: * adding support for OAuth in addition to basic auth * supporting registration of single user Wikidata OAuth consumers. * adding extensive tests * cleaning up the login dialog This depends on the next release of the Wikidata Toolkit, but we're currently publishing our own snapshot that includes the necessary changes (thanks @wetneb!) Co-authored-by: Antonin Delpeuch --- .../wikidata/module/MOD-INF/controller.js | 2 +- .../wikidata/module/images/wikidata.png | Bin 2522 -> 24431 bytes .../wikidata/module/langs/translation-bn.json | 2 - .../wikidata/module/langs/translation-en.json | 20 +- .../module/langs/translation-en_GB.json | 34 +- .../wikidata/module/langs/translation-fr.json | 3 - .../wikidata/module/langs/translation-it.json | 3 - .../wikidata/module/langs/translation-jp.json | 3 - .../wikidata/module/langs/translation-ko.json | 3 - .../module/langs/translation-nb_NO.json | 3 - .../wikidata/module/langs/translation-nl.json | 3 - .../wikidata/module/langs/translation-sv.json | 3 - .../scripts/dialogs/import-schema-dialog.html | 2 +- .../scripts/dialogs/logged-in-dialog.html | 25 ++ .../dialogs/manage-account-dialog.html | 45 -- .../scripts/dialogs/manage-account-dialog.js | 274 +++++++---- .../owner-only-consumer-login-dialog.html | 53 +++ .../dialogs/password-login-dialog.html | 46 ++ .../scripts/dialogs/perform-edits-dialog.html | 4 +- .../styles/dialogs/import-schema-dialog.less | 5 +- .../styles/dialogs/manage-account-dialog.less | 44 +- extensions/wikidata/module/styles/theme.less | 34 ++ extensions/wikidata/pom.xml | 6 +- .../wikidata/commands/CommandUtilities.java | 1 + .../wikidata/commands/ConnectionManager.java | 219 +++++++++ .../wikidata/commands/LoginCommand.java | 219 +++++++-- .../wikidata/editing/ConnectionManager.java | 171 ------- .../PerformWikibaseEditsOperation.java | 2 +- .../wikidata/commands/LoginCommandTest.java | 425 +++++++++++++++++- pom.xml | 16 +- 30 files changed, 1244 insertions(+), 426 deletions(-) create mode 100644 extensions/wikidata/module/scripts/dialogs/logged-in-dialog.html delete mode 100644 extensions/wikidata/module/scripts/dialogs/manage-account-dialog.html create mode 100644 extensions/wikidata/module/scripts/dialogs/owner-only-consumer-login-dialog.html create mode 100644 extensions/wikidata/module/scripts/dialogs/password-login-dialog.html create mode 100644 extensions/wikidata/module/styles/theme.less create mode 100644 extensions/wikidata/src/org/openrefine/wikidata/commands/ConnectionManager.java delete mode 100644 extensions/wikidata/src/org/openrefine/wikidata/editing/ConnectionManager.java diff --git a/extensions/wikidata/module/MOD-INF/controller.js b/extensions/wikidata/module/MOD-INF/controller.js index b2e9858dc..d2f306b0a 100644 --- a/extensions/wikidata/module/MOD-INF/controller.js +++ b/extensions/wikidata/module/MOD-INF/controller.js @@ -48,7 +48,7 @@ function init() { RefineServlet.registerCommand(module, "preview-wikibase-schema", new PreviewWikibaseSchemaCommand()); RefineServlet.registerCommand(module, "perform-wikibase-edits", new PerformWikibaseEditsCommand()); RefineServlet.registerCommand(module, "login", new LoginCommand()); - + /* * Resources */ diff --git a/extensions/wikidata/module/images/wikidata.png b/extensions/wikidata/module/images/wikidata.png index d0aa6d80265fc61d6b2cf62911b1e3ec8ef81078..58d5d8a8f3c775b7c49aa40a15351108ae4101c8 100644 GIT binary patch literal 24431 zcmeHvc|6qnAMRAAJvmcJ5jx}7BB8~;O^c-nku7Vb5VDPRFjJ?4iO^yx29+keAv73_ zEGaUwhhZ|(SYon{WtjV(e)o@i|G0nMzwYZE=XK7Ub7bcG{e0ic^M0P^?ZIVZeW7h) z+YktZ(8UWnW(dSa_}2{&wrqlzbJ1}F@bZVtS);QEL{Z#!-gUuu4?0~iGeRJ+hY^Uo z{~!>{@W1YkA`t#35Qy<>2!#4G1VYrCSYfIO-`I4+P+teZ7yR|2D)TA)pUr+3jdV8; zZP~U(O=Us0PyvB(z+BWhYaY}$IS@>|X=Sgn#>t*a+vu$K?vHqTosFiCUu-3Od3G_- z!o+!BqO-8O@&aPp@+ik;qApH%-Nn0S*8jEj`cvnv&o5b7xV#!(f2rmyQnGi?t=$)E zpL{-3kx8B4tzDS?_~h29v8j-W&XrZ{(k`EhDQ+63H6Mfa=V&3}qW(YsQc<|Q-ZLMA zq7w+4yIvFVXgQY2M7JJWPg7B!IORGfrN+|A)b|^|+&m$zJgCe%P}OebSdgxv#Io?u z8GG-gHF>)#p3?m~teVO%!8n>za3Q~XTbD?KU)rU*MpdyRYaR5}&^uzI``JwSZVC0~ zEgaeO2N;u;=st5ypDka}w<2)TW{gTftG$uJXYDN|V(IS)L4Tj8#LbDhH1?bHTJ_At zsTGFc(_=-7`0*V#eK3ESHJPhSIDIeo$ZekF~tA>qa%(76%Al z9iB#$Omu`c)DX%{bco+Ck4ed}I!vD;e!W9Z96+xg(&ydjJdXG*Bb79cIS_Ul8kewbXs{OKppIk7psqI-SypOH1n>KlSN0 ziAd~2n)V|KAJ0f&mDJxPVq?Y#i)=CaYM@@dLU-l?^jh&Y_6Eor_!`-TSPw5}-v4nI zUJ#d0tUD-p-E#@CMew?D_rKqUWBB)2{tX8RgMYJR-9b2pf2+g4RZ$QI|5n9+t0IKK zzg2PFK{$qgtKz>^Q4j|IR>gm-B80)eRdL-xIEH_#;=ff<5C;EN#s6QbVuaEFQZdmnUV%*Hcb8dV-HK3m(^>At4W&hCX+^s~kRW8;S>-Cx^TziMY!Ir_F)euaG2t=}@Y zR2xOl;(aH!uQ)q9SNr}4uc53QzD$c!#3gBu?2CUq1FMt2()2Eot z!jhra$Jk>I(`JM>o1RKZNl)irrY}h<9c5R!?_ZOP3ztx1 zv#m;Kjs${|5P~+F%3(O)y!pM$v@G82I}tyQXA`ASuX;V``t>S_e739_+e@duN18Qz z{`~oLkw3ey(3j$*Sr`3tZr{E=_8xiiYU6_Xcvgnq&I78y-1O;ZKChr9kqMjcZr*v| z>s};&tqya?=)l)<4BOE$bh?3wd0lhej_JNWw)6An&uG1ReOY-YS9mA2`<+uQ&a)24 z>3@`xy@{II+PKJdR75bYOX+ny{Whh4mVSz1gTY|DvM(-j=iwo<$B^A0mkEnYgvC@s zkek8Shzv>PO}zZXJeKL9oMNSv(xL^iL*56^+Gk~9GO+z-ms_cgzHYsfn{{7C65IYv zeYR5G?O7g=_o-sj&N##)+e7S7OTh;krxA$^)iW(?PpqlbKo#Bk8oLscOP3CaBWYKC z_DAj&6=jb9tj+K8P)-*^n&dTF>EeD&4Nz&hR#^`;bnB;ONN6`jG3wsEdkf%F`0XCb zj!gLMeu@_@=CIA|)B4k_v$gvK-V$>Au zMCl*Mu*xdhgQSTe73gZM$B!Skg9}A}bt_GK>p#(*-lpk3-IZjV?Gx7OS!!eJxBGrx z&qV5hp3SV%r&oq4E|@M>tDk^H>-4VsH0LMn*~~7LSmnS@uy4?>YOU1^>co^fcuGq47JBsidjN z%ZIeh?e#FOsJrR^FfL9i9aHTUW5{@dSs?ti!F`Eg#dTk|omF%FPlRtSWEw@cUiet` z$IzO^#YIj$gYM+yL@|=Fm{IjK7&}CAT>MTni5{0i_w`H$poj8m^QWid@H}DEjgn2I zGiq@3FI_J zNn!SVzU2gEelJ6D-9d^Cln`T`%G^!6KZ@?rKC7*U%BdJF<1WunNIAOo%bSdwkk87v zY-DWPy?eK?v5XODOX!r;)B&>9(T@YtEDLFAX-9YE6!ycIm;u|T4E07SJTF!HhKp1@ zmMkQ$tZ5T>@`dr_Q+3C@+;4BTBCaBvqwkql9p+`&=64Smcrcw})tq0qxmLbz5;HSU zh@N0RH7AZ-T(y^#9~QT=_wU+FG*UGa9LnT8mJ>yIEEZqv<>@)qg$+M<=ON*Wc+3aU z4~>nj{qOGdx4J)(K7H!cOkOgv_@C|G8xmW+j?8_UA2nt>mEB%{#!?4v6^-->Zn(9B zi>>M~^k8PhX)j+?V~3dAeIUodmne3N6^`plU;4Sa!c|aB@ve6qjrlNvVkNm3e-ExjVek05R~e5TWb^+oc=Cm_eWLR*nR1Ev6v4_O3z<7rebh<=6r4ItUfO`5v`=Hz1Hrn z@=Zv6=%3vtDA81?bF8Y+RO+Jo(xW(ncFO{SlX^#SV>&5m(W+ zRHzjS<-4u7Y(JD_=X;PHiW4#jKD%|YcVd36FqRzyADc86(r+v%8n1T7Nu`c_e*gHZ z;F`<~@D5KuEocA)C~>%#?#ui2>sKZOGG70RotLk#Z&sTtkB6FYpaT?S0yE%QWld8(f3(e4^-;AVoasm~9_ER|Z zgsf#PZO7iq;MqfTF@{;=0nF!*?d|R1$fBZ6BcWkIL5n-8)~jIu3S-B&J5p@&liXtn z?giy<5-`>J>D;mXaNp)npFV{g7z@K`VSj%8`t|($VV)`+dqKw-&qe2FLD|E{4Gj&| zxOG3jeEHJsrm5E>EG$gRY8CEkVh%ku!*)o2yH9%-eao0q>iger<$Xy^povoJY=hW{usdT3=$@mwXWQQ)(Q#HJL;wD3Cw;o}rpp3K19!kw&s{&PR zy$xd^!HnrkBqbU4e5$bv+2LN@!rxF#hoy*uUP#b@1~#>KKGoPtB7x!&^fa=t#fMov;gL->Gdp*yr~%Knlt&OA1=bBI@Z zPO_rXT6~Yw(rPWKve?fRO2|g6$XX=gk;PL?L8#At2Xar~k<~l>?*_El4AHnofDWS+ z>b`)VUyIaGX_oW9_DM?OGK&A8bizgTB7L}G@xEC-6I%Y9!72=PW9-N2?c28xjBsAx zJE5+wPBg;?TwE#P-Iv>w0UdI0Smk1)kX^23f6l-!G-PnHob9_x4OBtF;%mG|aWAh0 z=SFcLa~Xuu=$dDR62P)m|v)ttgg&eh2q*|MVY}dI(VH zOL@uhvu#Ex%2k%+ny64IOjNjl zEhi&J+yS7viHV7+YoPWXlOLXjzN61QA99CLHvJswlcYWIBOM*|>s!Xk%P-T@)A?%b z%}`NA|+ZB)Lz9bj6oW8Vve%dUkfU zHHvV$$2Y@qZ6--H4gfG_rLbyhH?q-6)g{cu;C4alht?cC$N17Eo*O{_Ni!M|`gbgW zyOQku1^RsS?y2W$>?4+TAI1bV$9;jrq+RX_P>16iPCTN!I;sKyfFn;{vomZClpbme#vwLR zII`BsV>=Mg&pD-nZdZgK=V9E2s6loRwHGowmdXa5AHhBNPX>fILfGr*@GQe`G3G}z z;&7LAcos3VAjfX@?#QIZ`9OT9zwa86ID5I_j^CP~3)Eb_S9cP|w0=U_(E{2;wwu)g zw(82(6XT4n({?>`Qm) zei6|pUm&=Eb2^$?t<>PWF1J-ZiS4!yU3udoHP{%vVI%sc0}G;l8PgSnMG{a5O+SDB zOu&X$^waSCb8z=TfRlzjDJ$YKB&q^>d45T|H{3{#&5enT^*lOi7tnY208ZiL`Z4|J z=xCEmG6SB7fcds&lRw^nb8vKB-(A~f<)|frm)!G_(0`v-ij$L5~k_;RJvep9TizNr4FoNsROw4nH}YL`ck0u4Rw@T6~V}0 z?4G!aCog(e9}V!w5q72jnVl4-q?8n2E+ZD#F)?o}@yK2xmLNLrv*|hFkx~&a?Fpsx zMZ9Qd{++{z4@({psos7o+(-bj&IwImJ%!{)>3)a5c>`>fNHxo8jvnAU0g6!QmfdqO zkUBsc^HYz5qAX09xL>opH)VDfdb8mcx^c|kRw~u^I9RsfauXnSa%Oz2#0z`v;EC>h zbOw9B`T8^6zGi;LI_4GQmh`2If+uw)wU5*@QI+??Q!=OjI|Uv`0Db9MRNQJS90JW} z@3&t≪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 bY(oQg<=X|lT-alw3j;VK+~6-y`=|UD^d80_ diff --git a/extensions/wikidata/module/langs/translation-bn.json b/extensions/wikidata/module/langs/translation-bn.json index fa50d4cc2..c02cf7a1e 100644 --- a/extensions/wikidata/module/langs/translation-bn.json +++ b/extensions/wikidata/module/langs/translation-bn.json @@ -43,9 +43,7 @@ "wikidata-account/dialog-header": "উইকিউপাত্ত অ্যাকাউন্ট", "wikidata-account/explain-log-in": "উইকিউপাত্তে প্রবেশ করলে সরাসরি ওপেনরিফাইন থেকে আপনাকে সম্পাদনা আপলোড করতে দেওয়া হবে।", "wikidata-account/username-label": "ব্যবহারকারী নাম:", - "wikidata-account/username-placeholder": "আপনার ব্যবহারকারী নাম অন্তর্ভুক্ত করুন", "wikidata-account/password-label": "পাসওয়ার্ড:", - "wikidata-account/password-placeholder": "আপনার পাসওয়ার্ড অন্তর্ভুক্ত করুন", "wikidata-account/close": "বন্ধ করুন", "wikidata-account/log-in": "প্রবেশ করুন", "wikidata-account/log-out": "প্রস্থান করুন" diff --git a/extensions/wikidata/module/langs/translation-en.json b/extensions/wikidata/module/langs/translation-en.json index 753f7c21b..7c8a8a59c 100644 --- a/extensions/wikidata/module/langs/translation-en.json +++ b/extensions/wikidata/module/langs/translation-en.json @@ -65,11 +65,25 @@ "wikidata-preview/new-id": "new item", "wikidata-account/dialog-header": "Wikidata account", "wikidata-account/explain-log-in": "Logging in to Wikidata lets you to upload edits directly from OpenRefine.", + "wikidata-account/explain-owner-only-consumer-wiki": "See this wiki to get your owner-only consumer if you don't have one.", + "wikidata-account/explain-password-login": "You can also login with your username/password.", + "wikidata-account/explain-owner-only-consumer-login": "You can also login with your owner-only consumer.", + "wikidata-account/invalid-credentials": "Invalid credentials", "wikidata-account/username-label": "Username:", - "wikidata-account/username-placeholder": "Enter your username", + "wikidata-account/username-placeholder": "username", "wikidata-account/password-label": "Password:", - "wikidata-account/password-placeholder": "Enter your password", - "wikidata-account/remember-credentials-label": "Remember credentials (stored unencrypted in OpenRefine's preferences)", + "wikidata-account/password-placeholder": "password", + "wikidata-account/consumer-token-label": "Consumer token:", + "wikidata-account/consumer-token-placeholder": "consumer token", + "wikidata-account/consumer-secret-label": "Consumer secret:", + "wikidata-account/consumer-secret-placeholder": "consumer secret", + "wikidata-account/access-token-label": "Access token:", + "wikidata-account/access-token-placeholder": "access token", + "wikidata-account/access-secret-label": "Access secret:", + "wikidata-account/access-secret-placeholder": "access secret", + "wikidata-account/remember-me": "Remember me", + "wikidata-account/password-remember-me-title": "Your password won't be stored.", + "wikidata-account/owner-only-consumer-remember-me-title": "Consumer credentials are stored encrypted in cookies.", "wikidata-account/close": "Close", "wikidata-account/log-in": "Log in", "wikidata-account/logged-in-as": "You are logged in as:", diff --git a/extensions/wikidata/module/langs/translation-en_GB.json b/extensions/wikidata/module/langs/translation-en_GB.json index 7ebae0b16..7088f3d2b 100644 --- a/extensions/wikidata/module/langs/translation-en_GB.json +++ b/extensions/wikidata/module/langs/translation-en_GB.json @@ -95,17 +95,31 @@ "perform-wikidata-edits/review-your-edits": "You are about to upload {nb_edits} edits to Wikidata. Please check them carefully. Large edit batches should be submitted for bot review first.", "perform-wikidata-edits/dialog-header": "Upload edits to Wikidata", "wikidata-account/connecting-to-wikidata": "Connecting to Wikidata…", - "wikidata-account/log-out": "Log out", - "wikidata-account/logged-in-as": "You are logged in as:", - "wikidata-account/log-in": "Log in", - "wikidata-account/close": "Close", - "wikidata-account/remember-credentials-label": "Remember credentials (stored unencrypted in OpenRefine's preferences)", - "wikidata-account/password-placeholder": "Enter your password", - "wikidata-account/password-label": "Password:", - "wikidata-account/username-placeholder": "Enter your username", - "wikidata-account/username-label": "Username:", - "wikidata-account/explain-log-in": "Logging in to Wikidata lets you to upload edits directly from OpenRefine.", "wikidata-account/dialog-header": "Wikidata account", + "wikidata-account/explain-log-in": "Logging in to Wikidata lets you to upload edits directly from OpenRefine.", + "wikidata-account/explain-owner-only-consumer-wiki": "See this wiki to get your owner-only consumer if you don't have one.", + "wikidata-account/explain-password-login": "You can also login with your username/password.", + "wikidata-account/explain-owner-only-consumer-login": "You can also login with your owner-only consumer.", + "wikidata-account/invalid-credentials": "Invalid credentials", + "wikidata-account/username-label": "Username:", + "wikidata-account/username-placeholder": "username", + "wikidata-account/password-label": "Password:", + "wikidata-account/password-placeholder": "password", + "wikidata-account/consumer-token-label": "Consumer token:", + "wikidata-account/consumer-token-placeholder": "consumer token", + "wikidata-account/consumer-secret-label": "Consumer secret:", + "wikidata-account/consumer-secret-placeholder": "consumer secret", + "wikidata-account/access-token-label": "Access token:", + "wikidata-account/access-token-placeholder": "access token", + "wikidata-account/access-secret-label": "Access secret:", + "wikidata-account/access-secret-placeholder": "access secret", + "wikidata-account/remember-me": "Remember me", + "wikidata-account/password-remember-me-title": "Your password won't be stored.", + "wikidata-account/owner-only-consumer-remember-me-title": "Consumer credentials are stored encrypted in cookies.", + "wikidata-account/close": "Close", + "wikidata-account/log-in": "Log in", + "wikidata-account/logged-in-as": "You are logged in as:", + "wikidata-account/log-out": "Log out", "wikidata-preview/new-id": "new item", "wikidata-schema/unsaved-warning": "You have made unsaved changes to your Wikidata schema. Close anyway?", "wikidata-schema/incomplete-schema-could-not-be-saved": "Your schema is incomplete so it cannot be saved yet.", diff --git a/extensions/wikidata/module/langs/translation-fr.json b/extensions/wikidata/module/langs/translation-fr.json index e49561278..0ee14f082 100644 --- a/extensions/wikidata/module/langs/translation-fr.json +++ b/extensions/wikidata/module/langs/translation-fr.json @@ -59,10 +59,7 @@ "wikidata-account/dialog-header": "compte Wikidata", "wikidata-account/explain-log-in": "Se connecter à Wikidata vous permet de publier vos données sur Wikidata depuis OpenRefine.", "wikidata-account/username-label": "Nom d'utilisateur :", - "wikidata-account/username-placeholder": "Entrez votre nom d'utilisateur", "wikidata-account/password-label": "Mot de passe :", - "wikidata-account/password-placeholder": "Entrez votre mot de passe", - "wikidata-account/remember-credentials-label": "Se souvenir des identifiants (enregistrés sans chiffrement dans les préférences)", "wikidata-account/close": "Fermer", "wikidata-account/log-in": "Se connecter", "wikidata-account/logged-in-as": "Vous êtes connecté·e en tant que :", diff --git a/extensions/wikidata/module/langs/translation-it.json b/extensions/wikidata/module/langs/translation-it.json index 7657c6d31..b05f1697f 100644 --- a/extensions/wikidata/module/langs/translation-it.json +++ b/extensions/wikidata/module/langs/translation-it.json @@ -52,10 +52,7 @@ "wikidata-account/dialog-header": "account su Wikidata", "wikidata-account/explain-log-in": "Accedere a Wikidata ti permette di caricare i tuoi edit direttamente tramite OpenRefine.", "wikidata-account/username-label": "Nome utente:", - "wikidata-account/username-placeholder": "Inserisci il tuo nome utente", "wikidata-account/password-label": "Password:", - "wikidata-account/password-placeholder": "Inserisci la tua password", - "wikidata-account/remember-credentials-label": "Ricorda questi dati (verranno mantenuti in forma criptata nelle preferenze di OpenRefine", "wikidata-account/close": "Chiudi", "wikidata-account/log-in": "Entra", "wikidata-account/logged-in-as": "Sei registrato come:", diff --git a/extensions/wikidata/module/langs/translation-jp.json b/extensions/wikidata/module/langs/translation-jp.json index 1c0fefec7..f4137023f 100644 --- a/extensions/wikidata/module/langs/translation-jp.json +++ b/extensions/wikidata/module/langs/translation-jp.json @@ -56,10 +56,7 @@ "wikidata-account/dialog-header": "Wikidataアカウント", "wikidata-account/explain-log-in": "OpenRefineから直接データをアップロードするため、Wikidataにログインする.", "wikidata-account/username-label": "ユーザー名:", - "wikidata-account/username-placeholder": "ユーザー名を入力", "wikidata-account/password-label": "パスワード:", - "wikidata-account/password-placeholder": "パスワードを入力", - "wikidata-account/remember-credentials-label": "credentialsをOpenRefineの設定に保存する", "wikidata-account/close": "閉じる", "wikidata-account/log-in": "ログイン", "wikidata-account/logged-in-as": "ログイン名:", diff --git a/extensions/wikidata/module/langs/translation-ko.json b/extensions/wikidata/module/langs/translation-ko.json index fd457dc7c..935080c29 100644 --- a/extensions/wikidata/module/langs/translation-ko.json +++ b/extensions/wikidata/module/langs/translation-ko.json @@ -54,10 +54,7 @@ "wikidata-account/dialog-header": "Wikidata 계정", "wikidata-account/explain-log-in": "Wikidata 로그인하세요. OpenRefine 에서 직접 편집을 업로드할 수 있습니다.", "wikidata-account/username-label": "사용자이름:", - "wikidata-account/username-placeholder": "사용자이름을 입력하세요", "wikidata-account/password-label": "비밀번호:", - "wikidata-account/password-placeholder": "비밀번호를 입력하세요", - "wikidata-account/remember-credentials-label": "credentials을 기억하세요 (OpenRefine의 Preferences에 암호화되지 않고 저장됩니다)", "wikidata-account/close": "닫기", "wikidata-account/log-in": "로그인", "wikidata-account/logged-in-as": "다음으로 로그인 됨:", diff --git a/extensions/wikidata/module/langs/translation-nb_NO.json b/extensions/wikidata/module/langs/translation-nb_NO.json index b6b5bc6ac..8ace62f0c 100644 --- a/extensions/wikidata/module/langs/translation-nb_NO.json +++ b/extensions/wikidata/module/langs/translation-nb_NO.json @@ -54,10 +54,7 @@ "wikidata-account/dialog-header": "Wikidata-konto", "wikidata-account/explain-log-in": "Hvis du logger inn på Wikidata kan du laste opp redigeringer direkte fra OpenRefine.", "wikidata-account/username-label": "Brukernavn:", - "wikidata-account/username-placeholder": "Skriv inn brukernavnet ditt", "wikidata-account/password-label": "Passord:", - "wikidata-account/password-placeholder": "Skriv inn passordet ditt", - "wikidata-account/remember-credentials-label": "Husk meg (lagres ukryptert i OpenRefines innstillinger)", "wikidata-account/close": "Lukk", "wikidata-account/log-in": "Logg inn", "wikidata-account/logged-in-as": "Du er innlogget som:", diff --git a/extensions/wikidata/module/langs/translation-nl.json b/extensions/wikidata/module/langs/translation-nl.json index 3f9671854..9a7ec5d22 100644 --- a/extensions/wikidata/module/langs/translation-nl.json +++ b/extensions/wikidata/module/langs/translation-nl.json @@ -53,10 +53,7 @@ "wikidata-account/dialog-header": "Wikidata-account", "wikidata-account/explain-log-in": "Aanmelden bij Wikidata laat u direct bewerkingen vanuit OpenRefine uploaden.", "wikidata-account/username-label": "Gebruikersnaam:", - "wikidata-account/username-placeholder": "Vul uw gebruikersnaam in", "wikidata-account/password-label": "Wachtwoord:", - "wikidata-account/password-placeholder": "Voer uw wachtwoord in", - "wikidata-account/remember-credentials-label": "Gegevens onthouden (ongecodeerd opgeslagen in de voorkeuren van OpenRefine)", "wikidata-account/close": "Sluiten", "wikidata-account/log-in": "Aanmelden", "wikidata-account/logged-in-as": "U bent aangemeld als:", diff --git a/extensions/wikidata/module/langs/translation-sv.json b/extensions/wikidata/module/langs/translation-sv.json index da487eecf..434ce0401 100644 --- a/extensions/wikidata/module/langs/translation-sv.json +++ b/extensions/wikidata/module/langs/translation-sv.json @@ -59,10 +59,7 @@ "wikidata-preview/new-id": "nytt objekt", "wikidata-account/explain-log-in": "Logga in på Wikidata så att du kan ladda upp redigeringar direkt från OpenRefine.", "wikidata-account/username-label": "Användarnamn:", - "wikidata-account/username-placeholder": "Skriv in ditt användarnamn", "wikidata-account/password-label": "Lösenord:", - "wikidata-account/password-placeholder": "Skriv in ditt lösenord", - "wikidata-account/remember-credentials-label": "Kom ihåg inloggningsuppgifter (lagras okrypterade i OpenRefines inställningar)", "wikidata-account/connecting-to-wikidata": "Anslut till Wikidata…", "perform-wikidata-edits/dialog-header": "Överför redigeringar till Wikidata", "perform-wikidata-edits/review-your-edits": "Du håller på att ladda upp {nb_edits} redigeringar till Wikidata. Kontrollera dem noggrant. Stora antal av ändringar bör skickas till botgranskning först.", diff --git a/extensions/wikidata/module/scripts/dialogs/import-schema-dialog.html b/extensions/wikidata/module/scripts/dialogs/import-schema-dialog.html index 0885460db..50d01f699 100644 --- a/extensions/wikidata/module/scripts/dialogs/import-schema-dialog.html +++ b/extensions/wikidata/module/scripts/dialogs/import-schema-dialog.html @@ -5,7 +5,7 @@

-
-

.

+

.

- -
diff --git a/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.js b/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.js index 8b9977648..486b865f4 100644 --- a/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.js +++ b/extensions/wikidata/module/scripts/dialogs/manage-account-dialog.js @@ -2,35 +2,42 @@ var ManageAccountDialog = {}; ManageAccountDialog.firstLogin = true; -ManageAccountDialog.display = function (logged_in_username, callback) { - +/** + * Displays the logged in page if the user is logged in, + * displays the login page otherwise. + */ +ManageAccountDialog.display = function (logged_in_username, onSuccess) { if (logged_in_username == null) { - logged_in_username = ManageAccountDialog.tryLoginWithCookies(callback); - } - - if (logged_in_username != null) { - ManageAccountDialog.displayLoggedIn(logged_in_username, callback); + if (ManageAccountDialog.firstLogin) { + ManageAccountDialog.firstLogin = false; + ManageAccountDialog.tryLoginWithCookies(onSuccess); + } else { + ManageAccountDialog.displayPasswordLogin(onSuccess); + } } else { - ManageAccountDialog.displayPasswordLogin(callback); + ManageAccountDialog.displayLoggedIn(logged_in_username); } }; -ManageAccountDialog.tryLoginWithCookies = function (callback) { - var logged_user_name = null; - $.ajaxSetup({async: false}); + +ManageAccountDialog.tryLoginWithCookies = function (onSuccess) { + // In the first login, we try logging in with cookies, + // the backend may take a while to tell if the cookies are valid or not. + // So we need to call DialogSystem.showBusy to inform the user that + // OpenRefine is trying connecting to Wikidata. + const discardWaiter = DialogSystem.showBusy($.i18n('wikidata-account/connecting-to-wikidata')); Refine.postCSRF( "command/wikidata/login", {}, function (data) { + discardWaiter(); if (data.logged_in) { - callback(data.username); - logged_user_name = data.username; + onSuccess(data.username); + ManageAccountDialog.displayLoggedIn(data.username); } else { - logged_user_name = null; + ManageAccountDialog.displayPasswordLogin(onSuccess); } }); - $.ajaxSetup({async: true}); - return logged_user_name; }; ManageAccountDialog.initCommon = function (elmts) { @@ -39,7 +46,7 @@ ManageAccountDialog.initCommon = function (elmts) { elmts.cancelButton.text($.i18n('wikidata-account/close')); }; -ManageAccountDialog.displayLoggedIn = function (logged_in_username, callback) { +ManageAccountDialog.displayLoggedIn = function (logged_in_username) { var frame = $(DOM.loadHTML("wikidata", "scripts/dialogs/logged-in-dialog.html")); var elmts = DOM.bind(frame); ManageAccountDialog.initCommon(elmts); @@ -57,7 +64,6 @@ ManageAccountDialog.displayLoggedIn = function (logged_in_username, callback) { elmts.cancelButton.click(function (e) { dismiss(); - callback(null); }); elmts.logoutButton.click(function () { @@ -69,13 +75,12 @@ ManageAccountDialog.displayLoggedIn = function (logged_in_username, callback) { frame.show(); if (!data.logged_in) { dismiss(); - callback(null); } }); }); }; -ManageAccountDialog.displayPasswordLogin = function (callback) { +ManageAccountDialog.displayPasswordLogin = function (onSuccess) { const frame = $(DOM.loadHTML("wikidata", "scripts/dialogs/password-login-dialog.html")); const elmts = DOM.bind(frame); ManageAccountDialog.initCommon(elmts); @@ -98,12 +103,11 @@ ManageAccountDialog.displayPasswordLogin = function (callback) { elmts.cancelButton.click(function (e) { dismiss(); - callback(null); }); elmts.explainOwnerOnlyConsumerLogin.click(function (e) { dismiss(); - ManageAccountDialog.displayOwnerOnlyConsumerLogin(callback); + ManageAccountDialog.displayOwnerOnlyConsumerLogin(onSuccess); }); elmts.loginForm.submit(function (e) { @@ -114,7 +118,7 @@ ManageAccountDialog.displayPasswordLogin = function (callback) { function (data) { if (data.logged_in) { dismiss(); - callback(data.username); + onSuccess(data.username); } else { frame.show(); elmts.invalidCredentials.show(); @@ -124,7 +128,7 @@ ManageAccountDialog.displayPasswordLogin = function (callback) { }); }; -ManageAccountDialog.displayOwnerOnlyConsumerLogin = function (callback) { +ManageAccountDialog.displayOwnerOnlyConsumerLogin = function (onSuccess) { var frame = $(DOM.loadHTML("wikidata", "scripts/dialogs/owner-only-consumer-login-dialog.html")); var elmts = DOM.bind(frame); ManageAccountDialog.initCommon(elmts); @@ -152,12 +156,11 @@ ManageAccountDialog.displayOwnerOnlyConsumerLogin = function (callback) { elmts.cancelButton.click(function (e) { dismiss(); - callback(null); }); elmts.explainPasswordLogin.click(function (e) { dismiss(); - ManageAccountDialog.displayPasswordLogin(callback); + ManageAccountDialog.displayPasswordLogin(onSuccess); }); elmts.loginForm.submit(function (e) { @@ -168,7 +171,7 @@ ManageAccountDialog.displayOwnerOnlyConsumerLogin = function (callback) { function (data) { if (data.logged_in) { dismiss(); - callback(data.username); + onSuccess(data.username); } else { frame.show(); elmts.invalidCredentials.show(); @@ -178,27 +181,28 @@ ManageAccountDialog.displayOwnerOnlyConsumerLogin = function (callback) { }); }; +/** + * Checks if the user is logged in or not. + * + * The callback needs to react to both cases. + */ ManageAccountDialog.isLoggedIn = function (callback) { - var discardWaiter = function () { - }; - if (ManageAccountDialog.firstLogin) { - discardWaiter = DialogSystem.showBusy($.i18n('wikidata-account/connecting-to-wikidata')); - } $.get( "command/wikidata/login", function (data) { - discardWaiter(); - ManageAccountDialog.firstLogin = false; callback(data.username); }); }; -ManageAccountDialog.ensureLoggedIn = function (callback) { +/** + * The onSuccess callback is called if and only if the user is logged in. + */ +ManageAccountDialog.ensureLoggedIn = function (onSuccess) { ManageAccountDialog.isLoggedIn(function (logged_in_username) { if (logged_in_username == null) { - ManageAccountDialog.display(null, callback); + ManageAccountDialog.display(null, onSuccess); } else { - callback(logged_in_username); + onSuccess(logged_in_username); } }); }; diff --git a/extensions/wikidata/module/scripts/dialogs/perform-edits-dialog.js b/extensions/wikidata/module/scripts/dialogs/perform-edits-dialog.js index eed847bf6..283747b3f 100644 --- a/extensions/wikidata/module/scripts/dialogs/perform-edits-dialog.js +++ b/extensions/wikidata/module/scripts/dialogs/perform-edits-dialog.js @@ -42,7 +42,7 @@ PerformEditsDialog.launch = function(logged_in_username, max_severity) { { onDone: function() { dismiss(); } } ); } - } + }; elmts.loggedInUsername .text(logged_in_username) @@ -72,7 +72,7 @@ PerformEditsDialog.updateEditCount = function(edit_count) { this._elmts.reviewYourEdits.html( $.i18n('perform-wikidata-edits/review-your-edits') .replace('{nb_edits}', edit_count)); -} +}; PerformEditsDialog._updateWarnings = function(data) { var warnings = data.warnings; @@ -87,7 +87,7 @@ PerformEditsDialog._updateWarnings = function(data) { var rendered = WarningsRenderer._renderWarning(warnings[i]); rendered.appendTo(table); } -} +}; PerformEditsDialog.checkAndLaunch = function () { var self = this; @@ -95,26 +95,24 @@ PerformEditsDialog.checkAndLaunch = function () { this._elmts = DOM.bind(this.frame); this.missingSchema = false; - var onSaved = function() { - ManageAccountDialog.ensureLoggedIn(function(logged_in_username) { - if (logged_in_username) { - var discardWaiter = DialogSystem.showBusy($.i18n('perform-wikidata-edits/analyzing-edits')); - Refine.postCSRF( - "command/wikidata/preview-wikibase-schema?" + $.param({ project: theProject.id }), - { engine: JSON.stringify(ui.browsingEngine.getJSON()) }, - function(data) { - discardWaiter(); - if(data['code'] != 'error') { - PerformEditsDialog._updateWarnings(data); - PerformEditsDialog.launch(logged_in_username, data['max_severity']); - } else { - SchemaAlignmentDialog.launch( - PerformEditsDialog.checkAndLaunch); - } - }, - "json" - ); - } + var onSaved = function () { + ManageAccountDialog.ensureLoggedIn(function (logged_in_username) { + var discardWaiter = DialogSystem.showBusy($.i18n('perform-wikidata-edits/analyzing-edits')); + Refine.postCSRF( + "command/wikidata/preview-wikibase-schema?" + $.param({project: theProject.id}), + {engine: JSON.stringify(ui.browsingEngine.getJSON())}, + function (data) { + discardWaiter(); + if (data['code'] != 'error') { + PerformEditsDialog._updateWarnings(data); + PerformEditsDialog.launch(logged_in_username, data['max_severity']); + } else { + SchemaAlignmentDialog.launch( + PerformEditsDialog.checkAndLaunch); + } + }, + "json" + ); }); }; diff --git a/extensions/wikidata/module/styles/dialogs/manage-account-dialog.less b/extensions/wikidata/module/styles/dialogs/manage-account-dialog.less index 17346603a..33449f52c 100644 --- a/extensions/wikidata/module/styles/dialogs/manage-account-dialog.less +++ b/extensions/wikidata/module/styles/dialogs/manage-account-dialog.less @@ -91,4 +91,4 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. .wikibase-login-dialog-footer span { cursor: pointer; -} \ No newline at end of file +} From 4fb0ac808254f92cf0bfb88ddf54c6c56ef617f2 Mon Sep 17 00:00:00 2001 From: Antonin Delpeuch Date: Mon, 15 Jun 2020 14:32:48 +0200 Subject: [PATCH 3/5] Fix bad conflict resolution from rebase --- extensions/wikidata/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/wikidata/pom.xml b/extensions/wikidata/pom.xml index 6ee8a37fb..fab5d4837 100644 --- a/extensions/wikidata/pom.xml +++ b/extensions/wikidata/pom.xml @@ -16,7 +16,7 @@ 2.0.7 - 0.11.1 + 0.12.0-SNAPSHOT From 7b237b4d83cd9100602935e493966e586d327429 Mon Sep 17 00:00:00 2001 From: afkbrb <2w6f8c@gmail.com> Date: Fri, 19 Jun 2020 14:38:35 +0800 Subject: [PATCH 4/5] call setSecure explicitly & fix HTTP response splitting --- .../wikidata/commands/LoginCommand.java | 22 +++++++-- .../wikidata/commands/LoginCommandTest.java | 48 ++++++++++++++++++- 2 files changed, 64 insertions(+), 6 deletions(-) diff --git a/extensions/wikidata/src/org/openrefine/wikidata/commands/LoginCommand.java b/extensions/wikidata/src/org/openrefine/wikidata/commands/LoginCommand.java index 95739ab47..172e3f24c 100644 --- a/extensions/wikidata/src/org/openrefine/wikidata/commands/LoginCommand.java +++ b/extensions/wikidata/src/org/openrefine/wikidata/commands/LoginCommand.java @@ -32,7 +32,10 @@ import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; +import java.io.UnsupportedEncodingException; import java.net.HttpCookie; +import java.net.URLDecoder; +import java.net.URLEncoder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -97,7 +100,7 @@ public class LoginCommand extends Command { Cookie[] cookies = request.getCookies(); for (Cookie cookie : cookies) { - String value = cookie.getValue(); + String value = getCookieValue(cookie); switch (cookie.getName()) { case CONSUMER_TOKEN: consumerToken = value; @@ -123,10 +126,10 @@ public class LoginCommand extends Command { for (Cookie cookie : cookies) { if (cookie.getName().startsWith(WIKIDATA_COOKIE_PREFIX)) { String cookieName = cookie.getName().substring(WIKIDATA_COOKIE_PREFIX.length()); - Cookie newCookie = new Cookie(cookieName, cookie.getValue()); + Cookie newCookie = new Cookie(cookieName, getCookieValue(cookie)); cookieList.add(newCookie); } else if (cookie.getName().equals(WIKIBASE_USERNAME_COOKIE_KEY)) { - username1 = cookie.getValue(); + username1 = getCookieValue(cookie); } } @@ -206,10 +209,18 @@ public class LoginCommand extends Command { removeCookie(response, ACCESS_SECRET); } - private static void setCookie(HttpServletResponse response, String key, String value) { - Cookie cookie = new Cookie(key, value); + static String getCookieValue(Cookie cookie) throws UnsupportedEncodingException { + return URLDecoder.decode(cookie.getValue(), "utf-8"); + } + + private static void setCookie(HttpServletResponse response, String key, String value) throws UnsupportedEncodingException { + String encodedValue = URLEncoder.encode(value, "utf-8"); + Cookie cookie = new Cookie(key, encodedValue); cookie.setMaxAge(60 * 60 * 24 * 365); // a year cookie.setPath("/"); + // set to false because OpenRefine doesn't require HTTPS + // though false is the default value, we set it explicitly here to bypass lgtm-bot alerts + cookie.setSecure(false); response.addCookie(cookie); } @@ -217,6 +228,7 @@ public class LoginCommand extends Command { Cookie cookie = new Cookie(key, ""); cookie.setMaxAge(0); // 0 causes the cookie to be deleted cookie.setPath("/"); + cookie.setSecure(false); response.addCookie(cookie); } } diff --git a/extensions/wikidata/tests/src/org/openrefine/wikidata/commands/LoginCommandTest.java b/extensions/wikidata/tests/src/org/openrefine/wikidata/commands/LoginCommandTest.java index f156dd9c1..070772864 100644 --- a/extensions/wikidata/tests/src/org/openrefine/wikidata/commands/LoginCommandTest.java +++ b/extensions/wikidata/tests/src/org/openrefine/wikidata/commands/LoginCommandTest.java @@ -20,6 +20,7 @@ import javax.servlet.http.Cookie; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; +import java.io.UnsupportedEncodingException; import java.lang.reflect.Constructor; import java.net.HttpCookie; import java.util.ArrayList; @@ -251,6 +252,26 @@ public class LoginCommandTest extends CommandTest { assertCookieEquals(cookies.get(ACCESS_SECRET), accessSecret, ONE_YEAR); } + @Test + public void testCookieEncoding() throws Exception { + OAuthApiConnection connection = mock(OAuthApiConnection.class); + whenNew(OAuthApiConnection.class).withAnyArguments().thenReturn(connection); + + when(request.getParameter("csrf_token")).thenReturn(Command.csrfFactory.getFreshToken()); + when(request.getParameter("remember-credentials")).thenReturn("on"); + when(request.getParameter(CONSUMER_TOKEN)).thenReturn("malformed consumer token \r\n %?"); + when(request.getParameter(CONSUMER_SECRET)).thenReturn(consumerSecret); + when(request.getParameter(ACCESS_TOKEN)).thenReturn(accessToken); + when(request.getParameter(ACCESS_SECRET)).thenReturn(accessSecret); + when(request.getCookies()).thenReturn(makeRequestCookies()); + + command.doPost(request, response); + + Map cookies = getCookieMap(cookieCaptor.getAllValues()); + assertNotEquals(cookies.get(CONSUMER_TOKEN).getValue(), "malformed consumer token \r\n %?"); + assertEquals(cookies.get(CONSUMER_TOKEN).getValue(), "malformed+consumer+token+%0D%0A+%25%3F"); + } + @Test public void testOwnerOnlyConsumerLoginWithCookies() throws Exception { OAuthApiConnection connection = mock(OAuthApiConnection.class); @@ -277,6 +298,27 @@ public class LoginCommandTest extends CommandTest { assertCookieEquals(cookies.get(ACCESS_SECRET), accessSecret, ONE_YEAR); } + @Test + public void testCookieDecoding() throws Exception { + ConnectionManager manager = mock(ConnectionManager.class); + given(ConnectionManager.getInstance()).willReturn(manager); + + OAuthApiConnection connection = mock(OAuthApiConnection.class); + whenNew(OAuthApiConnection.class).withAnyArguments().thenReturn(connection); + when(connection.getCurrentUser()).thenReturn(username); + + when(request.getParameter("csrf_token")).thenReturn(Command.csrfFactory.getFreshToken()); + Cookie consumerTokenCookie = new Cookie(CONSUMER_TOKEN, "malformed+consumer+token+%0D%0A+%25%3F"); + Cookie consumerSecretCookie = new Cookie(CONSUMER_SECRET, consumerSecret); + Cookie accessTokenCookie = new Cookie(ACCESS_TOKEN, accessToken); + Cookie accessSecretCookie = new Cookie(ACCESS_SECRET, accessSecret); + when(request.getCookies()).thenReturn(new Cookie[]{consumerTokenCookie, consumerSecretCookie, accessTokenCookie, accessSecretCookie}); + + command.doPost(request, response); + + verify(manager).login("malformed consumer token \r\n %?", consumerSecret, accessToken, accessSecret); + } + @Test public void testLogout() throws Exception { BasicApiConnection connection = mock(BasicApiConnection.class); @@ -407,7 +449,11 @@ public class LoginCommandTest extends CommandTest { } private static void assertCookieEquals(Cookie cookie, String expectedValue, int expectedMaxAge) { - assertEquals(cookie.getValue(), expectedValue); + try { + assertEquals(getCookieValue(cookie), expectedValue); + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } assertEquals(cookie.getMaxAge(), expectedMaxAge); assertEquals(cookie.getPath(), "/"); } From ffd92663d7f44c08c8689af6d944efa0be9c86c4 Mon Sep 17 00:00:00 2001 From: afkbrb <2w6f8c@gmail.com> Date: Fri, 19 Jun 2020 15:09:23 +0800 Subject: [PATCH 5/5] delete outdated comment --- .../src/org/openrefine/wikidata/commands/LoginCommand.java | 1 - 1 file changed, 1 deletion(-) diff --git a/extensions/wikidata/src/org/openrefine/wikidata/commands/LoginCommand.java b/extensions/wikidata/src/org/openrefine/wikidata/commands/LoginCommand.java index 172e3f24c..04ef78ba8 100644 --- a/extensions/wikidata/src/org/openrefine/wikidata/commands/LoginCommand.java +++ b/extensions/wikidata/src/org/openrefine/wikidata/commands/LoginCommand.java @@ -219,7 +219,6 @@ public class LoginCommand extends Command { cookie.setMaxAge(60 * 60 * 24 * 365); // a year cookie.setPath("/"); // set to false because OpenRefine doesn't require HTTPS - // though false is the default value, we set it explicitly here to bypass lgtm-bot alerts cookie.setSecure(false); response.addCookie(cookie); }