{"action":"created","comment":{"url":"https://api.github.com/repos/privacyidea/privacyidea/pulls/comments/153413707","pull_request_review_id":79412518,"id":153413707,"diff_hunk":"@@ -54,10 +54,18 @@ Smartphone Apps\n \n .. index:: Software Tokens\n \n+.. _privacyidea_authenticator:\n+\n+**privacyIDEA Authenticator**. Our own privacyIDEA Authentictor is based","path":"doc/configuration/supported_tokens.rst","position":6,"original_position":6,"commit_id":"fb4821af54ea90d7d78fb8bbe85674f1621fa441","original_commit_id":"f8a43751e60036a76e5629b2d9a47c436349f5e2","user":{"login":"fredreichbier","id":28243,"avatar_url":"https://avatars2.githubusercontent.com/u/28243?v=4","gravatar_id":"","url":"https://api.github.com/users/fredreichbier","html_url":"https://github.com/fredreichbier","followers_url":"https://api.github.com/users/fredreichbier/followers","following_url":"https://api.github.com/users/fredreichbier/following{/other_user}","gists_url":"https://api.github.com/users/fredreichbier/gists{/gist_id}","starred_url":"https://api.github.com/users/fredreichbier/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fredreichbier/subscriptions","organizations_url":"https://api.github.com/users/fredreichbier/orgs","repos_url":"https://api.github.com/users/fredreichbier/repos","events_url":"https://api.github.com/users/fredreichbier/events{/privacy}","received_events_url":"https://api.github.com/users/fredreichbier/received_events","type":"User","site_admin":false},"body":"*Authenticator","created_at":"2017-11-28T07:43:24Z","updated_at":"2017-11-28T07:50:19Z","html_url":"https://github.com/privacyidea/privacyidea/pull/857#discussion_r153413707","pull_request_url":"https://api.github.com/repos/privacyidea/privacyidea/pulls/857","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/privacyidea/privacyidea/pulls/comments/153413707"},"html":{"href":"https://github.com/privacyidea/privacyidea/pull/857#discussion_r153413707"},"pull_request":{"href":"https://api.github.com/repos/privacyidea/privacyidea/pulls/857"}}},"pull_request":{"url":"https://api.github.com/repos/privacyidea/privacyidea/pulls/857","id":154917689,"html_url":"https://github.com/privacyidea/privacyidea/pull/857","diff_url":"https://github.com/privacyidea/privacyidea/pull/857.diff","patch_url":"https://github.com/privacyidea/privacyidea/pull/857.patch","issue_url":"https://api.github.com/repos/privacyidea/privacyidea/issues/857","number":857,"state":"open","locked":false,"title":"Implement two-step enrollment of HOTP tokens","user":{"login":"fredreichbier","id":28243,"avatar_url":"https://avatars2.githubusercontent.com/u/28243?v=4","gravatar_id":"","url":"https://api.github.com/users/fredreichbier","html_url":"https://github.com/fredreichbier","followers_url":"https://api.github.com/users/fredreichbier/followers","following_url":"https://api.github.com/users/fredreichbier/following{/other_user}","gists_url":"https://api.github.com/users/fredreichbier/gists{/gist_id}","starred_url":"https://api.github.com/users/fredreichbier/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/fredreichbier/subscriptions","organizations_url":"https://api.github.com/users/fredreichbier/orgs","repos_url":"https://api.github.com/users/fredreichbier/repos","events_url":"https://api.github.com/users/fredreichbier/events{/privacy}","received_events_url":"https://api.github.com/users/fredreichbier/received_events","type":"User","site_admin":false},"body":"These are the changes from #853, but squashed to one commit and rebased to the current master.\r\n\r\nI think the open questions from #853 are:\r\n\r\n* the ``TWOSTEP_DEFAULT_*`` constants are now in hotptoken.py. Is that the right place?\r\n* Is the structure of ``HotpTokenClass.get_init_detail`` more readable now?\r\n\r\nI'll do a follow-up PR with the remaining WebUI changes and documentation.\n<a href='#crh-start'></a><a href='#crh-data-%7B%22processed%22%3A%20%5B%22https%3A//github.com/privacyidea/privacyidea/pull/857%23issuecomment-347329709%22%2C%20%22https%3A//github.com/privacyidea/privacyidea/pull/857%23discussion_r153401813%22%2C%20%22https%3A//github.com/privacyidea/privacyidea/pull/857%23discussion_r153402171%22%2C%20%22https%3A//github.com/privacyidea/privacyidea/pull/857%23discussion_r153402836%22%2C%20%22https%3A//github.com/privacyidea/privacyidea/pull/857%23discussion_r153402885%22%2C%20%22https%3A//github.com/privacyidea/privacyidea/pull/857%23issuecomment-347437128%22%2C%20%22https%3A//github.com/privacyidea/privacyidea/commit/388172bc2719158274ed0bb2d23712f2c0b2a3c9%23commitcomment-25890704%22%2C%20%22https%3A//github.com/privacyidea/privacyidea/pull/857%23issuecomment-347439379%22%5D%2C%20%22comments%22%3A%20%7B%22General%20Comment%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/privacyidea/privacyidea/pull/857%23issuecomment-347329709%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22%23%20%5BCodecov%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dh1%29%20Report%5Cn%3E%20Merging%20%5B%23857%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Ddesc%29%20into%20%5Bmaster%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/commit/403e86c7fcb24fff2ddabb50a10282f18a1c4e02%3Fsrc%3Dpr%26el%3Ddesc%29%20will%20%2A%2Aincrease%2A%2A%20coverage%20by%20%600.01%25%60.%5Cn%3E%20The%20diff%20coverage%20is%20%6098.5%25%60.%5Cn%5Cn%5B%21%5BImpacted%20file%20tree%20graph%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857/graphs/tree.svg%3Fheight%3D150%26src%3Dpr%26token%3D7nHLZki60B%26width%3D650%29%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dtree%29%5Cn%5Cn%60%60%60diff%5Cn%40%40%20%20%20%20%20%20%20%20%20%20%20%20Coverage%20Diff%20%20%20%20%20%20%20%20%20%20%20%20%20%40%40%5Cn%23%23%20%20%20%20%20%20%20%20%20%20%20master%20%20%20%20%20%23857%20%20%20%20%20%20%2B/-%20%20%20%23%23%5Cn%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%5Cn%2B%20Coverage%20%20%2095.32%25%20%20%2095.34%25%20%20%20%2B0.01%25%20%20%20%20%20%5Cn%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%5Cn%20%20Files%20%20%20%20%20%20%20%20%20126%20%20%20%20%20%20126%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cn%20%20Lines%20%20%20%20%20%20%2015565%20%20%20%2015693%20%20%20%20%20%2B128%20%20%20%20%20%5Cn%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%5Cn%2B%20Hits%20%20%20%20%20%20%20%2014837%20%20%20%2014962%20%20%20%20%20%2B125%20%20%20%20%20%5Cn-%20Misses%20%20%20%20%20%20%20%20728%20%20%20%20%20%20731%20%20%20%20%20%20%20%2B3%5Cn%60%60%60%5Cn%5Cn%5Cn%7C%20%5BImpacted%20Files%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dtree%29%20%7C%20Coverage%20%5Cu0394%20%7C%20%7C%5Cn%7C---%7C---%7C---%7C%5Cn%7C%20%5Bprivacyidea/api/token.py%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dtree%23diff-cHJpdmFjeWlkZWEvYXBpL3Rva2VuLnB5%29%20%7C%20%6098.14%25%20%3C100%25%3E%20%28%5Cu00f8%29%60%20%7C%20%3Aarrow_up%3A%20%7C%5Cn%7C%20%5Bprivacyidea/lib/policy.py%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dtree%23diff-cHJpdmFjeWlkZWEvbGliL3BvbGljeS5weQ%3D%3D%29%20%7C%20%6099.34%25%20%3C100%25%3E%20%28%2B0.22%25%29%60%20%7C%20%3Aarrow_up%3A%20%7C%5Cn%7C%20%5Bprivacyidea/lib/tokenclass.py%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dtree%23diff-cHJpdmFjeWlkZWEvbGliL3Rva2VuY2xhc3MucHk%3D%29%20%7C%20%6098.94%25%20%3C100%25%3E%20%28%2B0.02%25%29%60%20%7C%20%3Aarrow_up%3A%20%7C%5Cn%7C%20%5Bprivacyidea/lib/apps.py%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dtree%23diff-cHJpdmFjeWlkZWEvbGliL2FwcHMucHk%3D%29%20%7C%20%60100%25%20%3C100%25%3E%20%28%5Cu00f8%29%60%20%7C%20%3Aarrow_up%3A%20%7C%5Cn%7C%20%5Bprivacyidea/lib/tokens/hotptoken.py%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dtree%23diff-cHJpdmFjeWlkZWEvbGliL3Rva2Vucy9ob3RwdG9rZW4ucHk%3D%29%20%7C%20%60100%25%20%3C100%25%3E%20%28%5Cu00f8%29%60%20%7C%20%3Aarrow_up%3A%20%7C%5Cn%7C%20%5Bprivacyidea/lib/utils.py%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dtree%23diff-cHJpdmFjeWlkZWEvbGliL3V0aWxzLnB5%29%20%7C%20%6096.65%25%20%3C94.44%25%3E%20%28-0.1%25%29%60%20%7C%20%3Aarrow_down%3A%20%7C%5Cn%7C%20%5Bprivacyidea/api/lib/prepolicy.py%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dtree%23diff-cHJpdmFjeWlkZWEvYXBpL2xpYi9wcmVwb2xpY3kucHk%3D%29%20%7C%20%6096.39%25%20%3C98.21%25%3E%20%28%2B0.24%25%29%60%20%7C%20%3Aarrow_up%3A%20%7C%5Cn%7C%20%5Bprivacyidea/lib/tokens/u2f.py%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dtree%23diff-cHJpdmFjeWlkZWEvbGliL3Rva2Vucy91MmYucHk%3D%29%20%7C%20%6094.11%25%20%3C0%25%3E%20%28-1.69%25%29%60%20%7C%20%3Aarrow_down%3A%20%7C%5Cn%5Cn------%5Cn%5Cn%5BContinue%20to%20review%20full%20report%20at%20Codecov%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dcontinue%29.%5Cn%3E%20%2A%2ALegend%2A%2A%20-%20%5BClick%20here%20to%20learn%20more%5D%28https%3A//docs.codecov.io/docs/codecov-delta%29%5Cn%3E%20%60%5Cu0394%20%3D%20absolute%20%3Crelative%3E%20%28impact%29%60%2C%20%60%5Cu00f8%20%3D%20not%20affected%60%2C%20%60%3F%20%3D%20missing%20data%60%5Cn%3E%20Powered%20by%20%5BCodecov%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dfooter%29.%20Last%20update%20%5B403e86c...e63054f%5D%28https%3A//codecov.io/gh/privacyidea/privacyidea/pull/857%3Fsrc%3Dpr%26el%3Dlastupdated%29.%20Read%20the%20%5Bcomment%20docs%5D%28https%3A//docs.codecov.io/docs/pull-request-comments%29.%5Cn%22%2C%20%22created_at%22%3A%20%222017-11-27T21%3A13%3A01Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars0.githubusercontent.com/u/8655789%3Fv%3D4%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/codecov-io%22%7D%7D%2C%20%7B%22body%22%3A%20%22Thanks%20for%20the%20review%21%20I%20changed%20the%20comment%20in%20%60%60twostep_activation%60%60.%20So%20I%20guess%20we%20can%20now%20merge%20this%3F%20%3A%29%22%2C%20%22created_at%22%3A%20%222017-11-28T07%3A29%3A56Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars2.githubusercontent.com/u/28243%3Fv%3D4%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/fredreichbier%22%7D%7D%2C%20%7B%22body%22%3A%20%22In%20added%20some%20documentation.%20Hm%2C%20no%20automatic%20rebase%3F%20How%20is%20this.%5Cr%5Cn%5Cr%5CnPlease%20take%20a%20look%2C%20if%20the%20docs%20look%20good...%20%3A-%29%5Cr%5Cn%22%2C%20%22created_at%22%3A%20%222017-11-28T07%3A41%3A40Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars1.githubusercontent.com/u/1908620%3Fv%3D4%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/cornelinux%22%7D%7D%5D%2C%20%22title%22%3A%20%22General%20Comment%22%7D%2C%20%22Pull%20e63054f1942afc54c646f4bfe6d1ea383bcdcc4e%20privacyidea/api/lib/prepolicy.py%2068%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/privacyidea/privacyidea/pull/857%23discussion_r153401813%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22...the%20user%20is%20not%20allowed%20to%20pass%202stepinit...%22%2C%20%22created_at%22%3A%20%222017-11-28T06%3A05%3A39Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars1.githubusercontent.com/u/1908620%3Fv%3D4%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/cornelinux%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20privacyidea/api/lib/prepolicy.py%3AL466-582%22%7D%2C%20%22Pull%20e63054f1942afc54c646f4bfe6d1ea383bcdcc4e%20privacyidea/lib/tokens/hotptoken.py%20127%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/privacyidea/privacyidea/pull/857%23discussion_r153402885%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22the%20TOTP%20token%20has%20its%20own%20%60%60update%60%60%20method.%20So%20we%20simply%20need%20to%20add%20this%20block.%22%2C%20%22created_at%22%3A%20%222017-11-28T06%3A15%3A28Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars1.githubusercontent.com/u/1908620%3Fv%3D4%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/cornelinux%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20privacyidea/lib/tokens/hotptoken.py%3AL277-295%22%7D%2C%20%22Pull%20e63054f1942afc54c646f4bfe6d1ea383bcdcc4e%20privacyidea/api/token.py%2015%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/privacyidea/privacyidea/pull/857%23discussion_r153402171%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22The%20order%20of%20the%20two%20decorators%20has%20to%20be%20vice%20versa.%20Otherwise%5Cr%5Cn%5Cr%5Cn%20%20%20%20if%20is_true%28getParam%28request.all_data%2C%20%5C%222stepinit%5C%22%2C%20optional%29%29%3A%5Cr%5Cn%5Cr%5Cnin%20enroll_parameters%20will%20not%20work%20as%20expected.%22%2C%20%22created_at%22%3A%20%222017-11-28T06%3A08%3A40Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars1.githubusercontent.com/u/1908620%3Fv%3D4%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/cornelinux%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20privacyidea/api/token.py%3AL114-122%22%7D%2C%20%22Pull%20e63054f1942afc54c646f4bfe6d1ea383bcdcc4e%20privacyidea/lib/tokens/hotptoken.py%2078%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/privacyidea/privacyidea/pull/857%23discussion_r153402836%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22the%20%60%60get_init_detail%60%60%20is%20also%20inherited%20to%20the%20TOTP%20token.%20Nice.%20No%20need%20to%20change%20anything%20for%20TOTP.%22%2C%20%22created_at%22%3A%20%222017-11-28T06%3A15%3A00Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars1.githubusercontent.com/u/1908620%3Fv%3D4%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/cornelinux%22%7D%7D%5D%2C%20%22title%22%3A%20%22File%3A%20privacyidea/lib/tokens/hotptoken.py%3AL201-213%22%7D%2C%20%22Commit%20388172bc2719158274ed0bb2d23712f2c0b2a3c9%22%3A%20%7B%22html_url%22%3A%20%22https%3A//github.com/privacyidea/privacyidea/commit/388172bc2719158274ed0bb2d23712f2c0b2a3c9%23commitcomment-25890704%22%2C%20%22comments%22%3A%20%5B%7B%22body%22%3A%20%22Thanks%20%3A-%29%5Cr%5CnI%20am%20just%20locally%20addind%20some%20enhancements.%20Will%20try%20to%20merge%20an%20push%20in%20the%20PR...%22%2C%20%22created_at%22%3A%20%222017-11-28T07%3A30%3A49Z%22%2C%20%22user%22%3A%20%7B%22avatar_url%22%3A%20%22https%3A//avatars1.githubusercontent.com/u/1908620%3Fv%3D4%22%2C%20%22html_url%22%3A%20%22https%3A//github.com/cornelinux%22%7D%7D%5D%2C%20%22title%22%3A%20%22Commit%20388172b%20comments%22%7D%7D%7D'></a>\n<a href='https://www.codereviewhub.com/'><img src='http://www.codereviewhub.com/site/github-bar.png' height=40></a>\n- [ ] <a href='#crh-comment-General Comment'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/privacyidea/privacyidea/pull/857#issuecomment-347329709'>General Comment</a></b>\n- <a href='https://github.com/codecov-io'><img border=0 src='https://avatars0.githubusercontent.com/u/8655789?v=4' height=16 width=16></a> # [Codecov](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=h1) Report\n> Merging [#857](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=desc) into [master](https://codecov.io/gh/privacyidea/privacyidea/commit/403e86c7fcb24fff2ddabb50a10282f18a1c4e02?src=pr&el=desc) will **increase** coverage by `0.01%`.\n> The diff coverage is `98.5%`.\n[![Impacted file tree graph](https://codecov.io/gh/privacyidea/privacyidea/pull/857/graphs/tree.svg?height=150&src=pr&token=7nHLZki60B&width=650)](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=tree)\n```diff\n@@            Coverage Diff             @@\n##           master     #857      +/-   ##\n==========================================\n+ Coverage   95.32%   95.34%   +0.01%\n==========================================\nFiles         126      126\nLines       15565    15693     +128\n==========================================\n+ Hits        14837    14962     +125\n- Misses        728      731       +3\n```\n| [Impacted Files](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=tree) | Coverage Δ | |\n|---|---|---|\n| [privacyidea/api/token.py](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=tree#diff-cHJpdmFjeWlkZWEvYXBpL3Rva2VuLnB5) | `98.14% <100%> (ø)` | :arrow_up: |\n| [privacyidea/lib/policy.py](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=tree#diff-cHJpdmFjeWlkZWEvbGliL3BvbGljeS5weQ==) | `99.34% <100%> (+0.22%)` | :arrow_up: |\n| [privacyidea/lib/tokenclass.py](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=tree#diff-cHJpdmFjeWlkZWEvbGliL3Rva2VuY2xhc3MucHk=) | `98.94% <100%> (+0.02%)` | :arrow_up: |\n| [privacyidea/lib/apps.py](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=tree#diff-cHJpdmFjeWlkZWEvbGliL2FwcHMucHk=) | `100% <100%> (ø)` | :arrow_up: |\n| [privacyidea/lib/tokens/hotptoken.py](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=tree#diff-cHJpdmFjeWlkZWEvbGliL3Rva2Vucy9ob3RwdG9rZW4ucHk=) | `100% <100%> (ø)` | :arrow_up: |\n| [privacyidea/lib/utils.py](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=tree#diff-cHJpdmFjeWlkZWEvbGliL3V0aWxzLnB5) | `96.65% <94.44%> (-0.1%)` | :arrow_down: |\n| [privacyidea/api/lib/prepolicy.py](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=tree#diff-cHJpdmFjeWlkZWEvYXBpL2xpYi9wcmVwb2xpY3kucHk=) | `96.39% <98.21%> (+0.24%)` | :arrow_up: |\n| [privacyidea/lib/tokens/u2f.py](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=tree#diff-cHJpdmFjeWlkZWEvbGliL3Rva2Vucy91MmYucHk=) | `94.11% <0%> (-1.69%)` | :arrow_down: |\n------\n[Continue to review full report at Codecov](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=continue).\n> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)\n> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`\n> Powered by [Codecov](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=footer). Last update [403e86c...e63054f](https://codecov.io/gh/privacyidea/privacyidea/pull/857?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).\n- <a href='https://github.com/fredreichbier'><img border=0 src='https://avatars2.githubusercontent.com/u/28243?v=4' height=16 width=16></a> Thanks for the review! I changed the comment in ``twostep_activation``. So I guess we can now merge this? :)\n- <a href='https://github.com/cornelinux'><img border=0 src='https://avatars1.githubusercontent.com/u/1908620?v=4' height=16 width=16></a> In added some documentation. Hm, no automatic rebase? How is this.\nPlease take a look, if the docs look good... :-)\n- [ ] <a href='#crh-comment-Pull e63054f1942afc54c646f4bfe6d1ea383bcdcc4e privacyidea/api/lib/prepolicy.py 68'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/privacyidea/privacyidea/pull/857#discussion_r153401813'>File: privacyidea/api/lib/prepolicy.py:L466-582</a></b>\n- <a href='https://github.com/cornelinux'><img border=0 src='https://avatars1.githubusercontent.com/u/1908620?v=4' height=16 width=16></a> ...the user is not allowed to pass 2stepinit...\n- [ ] <a href='#crh-comment-Pull e63054f1942afc54c646f4bfe6d1ea383bcdcc4e privacyidea/api/token.py 15'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/privacyidea/privacyidea/pull/857#discussion_r153402171'>File: privacyidea/api/token.py:L114-122</a></b>\n- <a href='https://github.com/cornelinux'><img border=0 src='https://avatars1.githubusercontent.com/u/1908620?v=4' height=16 width=16></a> The order of the two decorators has to be vice versa. Otherwise\nif is_true(getParam(request.all_data, \"2stepinit\", optional)):\nin enroll_parameters will not work as expected.\n- [ ] <a href='#crh-comment-Pull e63054f1942afc54c646f4bfe6d1ea383bcdcc4e privacyidea/lib/tokens/hotptoken.py 78'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/privacyidea/privacyidea/pull/857#discussion_r153402836'>File: privacyidea/lib/tokens/hotptoken.py:L201-213</a></b>\n- <a href='https://github.com/cornelinux'><img border=0 src='https://avatars1.githubusercontent.com/u/1908620?v=4' height=16 width=16></a> the ``get_init_detail`` is also inherited to the TOTP token. Nice. No need to change anything for TOTP.\n- [ ] <a href='#crh-comment-Pull e63054f1942afc54c646f4bfe6d1ea383bcdcc4e privacyidea/lib/tokens/hotptoken.py 127'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/privacyidea/privacyidea/pull/857#discussion_r153402885'>File: privacyidea/lib/tokens/hotptoken.py:L277-295</a></b>\n- <a href='https://github.com/cornelinux'><img border=0 src='https://avatars1.githubusercontent.com/u/1908620?v=4' height=16 width=16></a> the TOTP token has its own ``update`` method. So we simply need to add this block.\n- [ ] <a href='#crh-comment-Commit 388172bc2719158274ed0bb2d23712f2c0b2a3c9'></a> <img src='http://www.codereviewhub.com/site/github-remaining.png' height=16 width=60>&nbsp;<b><a href='https://github.com/privacyidea/privacyidea/commit/388172bc2719158274ed0bb2d23712f2c0b2a3c9#commitcomment-25890704'>Commit 388172b comments</a></b>\n- <a href='https://github.com/cornelinux'><img border=0 src='https://avatars1.githubusercontent.com/u/1908620?v=4' height=16 width=16></a> Thanks :-)\nI am just locally addind some enhancements. Will try to merge an push in the PR...\n\n\n<a href='https://www.codereviewhub.com/privacyidea/privacyidea/pull/857?mark_as_completed=1'><img src='http://www.codereviewhub.com/site/github-mark-as-completed.png' height=26></a>&nbsp;<a href='https://www.codereviewhub.com/privacyidea/privacyidea/pull/857?approve=1'><img src='http://www.codereviewhub.com/site/github-approve.png' height=26></a>&nbsp;<a href='https://github.com/privacyidea/privacyidea/pull/857'><img src='http://www.codereviewhub.com/site/github-refresh.png' height=26></a>\n<a href='#crh-end'></a>","created_at":"2017-11-27T21:12:50Z","updated_at":"2017-11-28T07:50:19Z","closed_at":null,"merged_at":null,"merge_commit_sha":"ba7d7c3519ee7e2918c030efd51b8ec1f59a6d92","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/privacyidea/privacyidea/pulls/857/commits","review_comments_url":"https://api.github.com/repos/privacyidea/privacyidea/pulls/857/comments","review_comment_url":"https://api.github.com/repos/privacyidea/privacyidea/pulls/comments{/number}","comments_url":"https://api.github.com/repos/privacyidea/privacyidea/issues/857/comments","statuses_url":"https://api.github.com/repos/privacyidea/privacyidea/statuses/fb4821af54ea90d7d78fb8bbe85674f1621fa441","head":{"label":"privacyidea:797/2step-rebased","ref":"797/2step-rebased","sha":"fb4821af54ea90d7d78fb8bbe85674f1621fa441","user":{"login":"privacyidea","id":7519615,"avatar_url":"https://avatars3.githubusercontent.com/u/7519615?v=4","gravatar_id":"","url":"https://api.github.com/users/privacyidea","html_url":"https://github.com/privacyidea","followers_url":"https://api.github.com/users/privacyidea/followers","following_url":"https://api.github.com/users/privacyidea/following{/other_user}","gists_url":"https://api.github.com/users/privacyidea/gists{/gist_id}","starred_url":"https://api.github.com/users/privacyidea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privacyidea/subscriptions","organizations_url":"https://api.github.com/users/privacyidea/orgs","repos_url":"https://api.github.com/users/privacyidea/repos","events_url":"https://api.github.com/users/privacyidea/events{/privacy}","received_events_url":"https://api.github.com/users/privacyidea/received_events","type":"Organization","site_admin":false},"repo":{"id":20446681,"name":"privacyidea","full_name":"privacyidea/privacyidea","owner":{"login":"privacyidea","id":7519615,"avatar_url":"https://avatars3.githubusercontent.com/u/7519615?v=4","gravatar_id":"","url":"https://api.github.com/users/privacyidea","html_url":"https://github.com/privacyidea","followers_url":"https://api.github.com/users/privacyidea/followers","following_url":"https://api.github.com/users/privacyidea/following{/other_user}","gists_url":"https://api.github.com/users/privacyidea/gists{/gist_id}","starred_url":"https://api.github.com/users/privacyidea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privacyidea/subscriptions","organizations_url":"https://api.github.com/users/privacyidea/orgs","repos_url":"https://api.github.com/users/privacyidea/repos","events_url":"https://api.github.com/users/privacyidea/events{/privacy}","received_events_url":"https://api.github.com/users/privacyidea/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/privacyidea/privacyidea","description":":closed_lock_with_key: multi factor authentication system (2FA, MFA, OTP Server)","fork":false,"url":"https://api.github.com/repos/privacyidea/privacyidea","forks_url":"https://api.github.com/repos/privacyidea/privacyidea/forks","keys_url":"https://api.github.com/repos/privacyidea/privacyidea/keys{/key_id}","collaborators_url":"https://api.github.com/repos/privacyidea/privacyidea/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/privacyidea/privacyidea/teams","hooks_url":"https://api.github.com/repos/privacyidea/privacyidea/hooks","issue_events_url":"https://api.github.com/repos/privacyidea/privacyidea/issues/events{/number}","events_url":"https://api.github.com/repos/privacyidea/privacyidea/events","assignees_url":"https://api.github.com/repos/privacyidea/privacyidea/assignees{/user}","branches_url":"https://api.github.com/repos/privacyidea/privacyidea/branches{/branch}","tags_url":"https://api.github.com/repos/privacyidea/privacyidea/tags","blobs_url":"https://api.github.com/repos/privacyidea/privacyidea/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/privacyidea/privacyidea/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/privacyidea/privacyidea/git/refs{/sha}","trees_url":"https://api.github.com/repos/privacyidea/privacyidea/git/trees{/sha}","statuses_url":"https://api.github.com/repos/privacyidea/privacyidea/statuses/{sha}","languages_url":"https://api.github.com/repos/privacyidea/privacyidea/languages","stargazers_url":"https://api.github.com/repos/privacyidea/privacyidea/stargazers","contributors_url":"https://api.github.com/repos/privacyidea/privacyidea/contributors","subscribers_url":"https://api.github.com/repos/privacyidea/privacyidea/subscribers","subscription_url":"https://api.github.com/repos/privacyidea/privacyidea/subscription","commits_url":"https://api.github.com/repos/privacyidea/privacyidea/commits{/sha}","git_commits_url":"https://api.github.com/repos/privacyidea/privacyidea/git/commits{/sha}","comments_url":"https://api.github.com/repos/privacyidea/privacyidea/comments{/number}","issue_comment_url":"https://api.github.com/repos/privacyidea/privacyidea/issues/comments{/number}","contents_url":"https://api.github.com/repos/privacyidea/privacyidea/contents/{+path}","compare_url":"https://api.github.com/repos/privacyidea/privacyidea/compare/{base}...{head}","merges_url":"https://api.github.com/repos/privacyidea/privacyidea/merges","archive_url":"https://api.github.com/repos/privacyidea/privacyidea/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/privacyidea/privacyidea/downloads","issues_url":"https://api.github.com/repos/privacyidea/privacyidea/issues{/number}","pulls_url":"https://api.github.com/repos/privacyidea/privacyidea/pulls{/number}","milestones_url":"https://api.github.com/repos/privacyidea/privacyidea/milestones{/number}","notifications_url":"https://api.github.com/repos/privacyidea/privacyidea/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/privacyidea/privacyidea/labels{/name}","releases_url":"https://api.github.com/repos/privacyidea/privacyidea/releases{/id}","deployments_url":"https://api.github.com/repos/privacyidea/privacyidea/deployments","created_at":"2014-06-03T14:47:02Z","updated_at":"2017-11-27T09:04:44Z","pushed_at":"2017-11-28T07:45:17Z","git_url":"git://github.com/privacyidea/privacyidea.git","ssh_url":"git@github.com:privacyidea/privacyidea.git","clone_url":"https://github.com/privacyidea/privacyidea.git","svn_url":"https://github.com/privacyidea/privacyidea","homepage":"http://www.privacyidea.org","size":25654,"stargazers_count":314,"watchers_count":314,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":96,"mirror_url":null,"archived":false,"open_issues_count":55,"forks":96,"open_issues":55,"watchers":314,"default_branch":"master"}},"base":{"label":"privacyidea:master","ref":"master","sha":"403e86c7fcb24fff2ddabb50a10282f18a1c4e02","user":{"login":"privacyidea","id":7519615,"avatar_url":"https://avatars3.githubusercontent.com/u/7519615?v=4","gravatar_id":"","url":"https://api.github.com/users/privacyidea","html_url":"https://github.com/privacyidea","followers_url":"https://api.github.com/users/privacyidea/followers","following_url":"https://api.github.com/users/privacyidea/following{/other_user}","gists_url":"https://api.github.com/users/privacyidea/gists{/gist_id}","starred_url":"https://api.github.com/users/privacyidea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privacyidea/subscriptions","organizations_url":"https://api.github.com/users/privacyidea/orgs","repos_url":"https://api.github.com/users/privacyidea/repos","events_url":"https://api.github.com/users/privacyidea/events{/privacy}","received_events_url":"https://api.github.com/users/privacyidea/received_events","type":"Organization","site_admin":false},"repo":{"id":20446681,"name":"privacyidea","full_name":"privacyidea/privacyidea","owner":{"login":"privacyidea","id":7519615,"avatar_url":"https://avatars3.githubusercontent.com/u/7519615?v=4","gravatar_id":"","url":"https://api.github.com/users/privacyidea","html_url":"https://github.com/privacyidea","followers_url":"https://api.github.com/users/privacyidea/followers","following_url":"https://api.github.com/users/privacyidea/following{/other_user}","gists_url":"https://api.github.com/users/privacyidea/gists{/gist_id}","starred_url":"https://api.github.com/users/privacyidea/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/privacyidea/subscriptions","organizations_url":"https://api.github.com/users/privacyidea/orgs","repos_url":"https://api.github.com/users/privacyidea/repos","events_url":"https://api.github.com/users/privacyidea/events{/privacy}","received_events_url":"https://api.github.com/users/privacyidea/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/privacyidea/privacyidea","description":":closed_lock_with_key: multi factor authentication system (2FA, MFA, OTP Server)","fork":false,"url":"https://api.github.com/repos/privacyidea/privacyidea","forks_url":"https://api.github.com/repos/privacyidea/privacyidea/forks","keys_url":"https://api.github.com/repos/privacyidea/privacyidea/keys{/key_id}","collaborators_url":"https://api.github.com/repos/privacyidea/privacyidea/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/privacyidea/privacyidea/teams","hooks_url":"https://api.github.com/repos/privacyidea/privacyidea/hooks","issue_events_url":"https://api.github.com/repos/privacyidea/privacyidea/issues/events{/number}","events_url":"https://api.github.com/repos/privacyidea/privacyidea/events","assignees_url":"https://api.github.com/repos/privacyidea/privacyidea/assignees{/user}","branches_url":"https://api.github.com/repos/privacyidea/privacyidea/branches{/branch}","tags_url":"https://api.github.com/repos/privacyidea/privacyidea/tags","blobs_url":"https://api.github.com/repos/privacyidea/privacyidea/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/privacyidea/privacyidea/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/privacyidea/privacyidea/git/refs{/sha}","trees_url":"https://api.github.com/repos/privacyidea/privacyidea/git/trees{/sha}","statuses_url":"https://api.github.com/repos/privacyidea/privacyidea/statuses/{sha}","languages_url":"https://api.github.com/repos/privacyidea/privacyidea/languages","stargazers_url":"https://api.github.com/repos/privacyidea/privacyidea/stargazers","contributors_url":"https://api.github.com/repos/privacyidea/privacyidea/contributors","subscribers_url":"https://api.github.com/repos/privacyidea/privacyidea/subscribers","subscription_url":"https://api.github.com/repos/privacyidea/privacyidea/subscription","commits_url":"https://api.github.com/repos/privacyidea/privacyidea/commits{/sha}","git_commits_url":"https://api.github.com/repos/privacyidea/privacyidea/git/commits{/sha}","comments_url":"https://api.github.com/repos/privacyidea/privacyidea/comments{/number}","issue_comment_url":"https://api.github.com/repos/privacyidea/privacyidea/issues/comments{/number}","contents_url":"https://api.github.com/repos/privacyidea/privacyidea/contents/{+path}","compare_url":"https://api.github.com/repos/privacyidea/privacyidea/compare/{base}...{head}","merges_url":"https://api.github.com/repos/privacyidea/privacyidea/merges","archive_url":"https://api.github.com/repos/privacyidea/privacyidea/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/privacyidea/privacyidea/downloads","issues_url":"https://api.github.com/repos/privacyidea/privacyidea/issues{/number}","pulls_url":"https://api.github.com/repos/privacyidea/privacyidea/pulls{/number}","milestones_url":"https://api.github.com/repos/privacyidea/privacyidea/milestones{/number}","notifications_url":"https://api.github.com/repos/privacyidea/privacyidea/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/privacyidea/privacyidea/labels{/name}","releases_url":"https://api.github.com/repos/privacyidea/privacyidea/releases{/id}","deployments_url":"https://api.github.com/repos/privacyidea/privacyidea/deployments","created_at":"2014-06-03T14:47:02Z","updated_at":"2017-11-27T09:04:44Z","pushed_at":"2017-11-28T07:45:17Z","git_url":"git://github.com/privacyidea/privacyidea.git","ssh_url":"git@github.com:privacyidea/privacyidea.git","clone_url":"https://github.com/privacyidea/privacyidea.git","svn_url":"https://github.com/privacyidea/privacyidea","homepage":"http://www.privacyidea.org","size":25654,"stargazers_count":314,"watchers_count":314,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":96,"mirror_url":null,"archived":false,"open_issues_count":55,"forks":96,"open_issues":55,"watchers":314,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/privacyidea/privacyidea/pulls/857"},"html":{"href":"https://github.com/privacyidea/privacyidea/pull/857"},"issue":{"href":"https://api.github.com/repos/privacyidea/privacyidea/issues/857"},"comments":{"href":"https://api.github.com/repos/privacyidea/privacyidea/issues/857/comments"},"review_comments":{"href":"https://api.github.com/repos/privacyidea/privacyidea/pulls/857/comments"},"review_comment":{"href":"https://api.github.com/repos/privacyidea/privacyidea/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/privacyidea/privacyidea/pulls/857/commits"},"statuses":{"href":"https://api.github.com/repos/privacyidea/privacyidea/statuses/fb4821af54ea90d7d78fb8bbe85674f1621fa441"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"fredreichbier"}}