initial commit master
authormarkusbrunner <markusbrunner@735d13b6-9817-0410-8766-e36946ffe9aa>
Fri, 17 Jan 2014 17:07:20 +0000 (17:07 +0000)
committermarkusbrunner <markusbrunner@735d13b6-9817-0410-8766-e36946ffe9aa>
Fri, 17 Jan 2014 17:07:20 +0000 (17:07 +0000)
mbfrontendlogin version 2.1.1

git-svn-id: https://svn.typo3.org/TYPO3v4/Extensions/mbfrontendlogin/trunk@83266 735d13b6-9817-0410-8766-e36946ffe9aa

24 files changed:
mbfrontendlogin/ChangeLog [new file with mode: 0644]
mbfrontendlogin/README.txt [new file with mode: 0644]
mbfrontendlogin/doc/manual.sxw [new file with mode: 0644]
mbfrontendlogin/doc/wizard_form.dat [new file with mode: 0644]
mbfrontendlogin/doc/wizard_form.html [new file with mode: 0644]
mbfrontendlogin/ext_emconf.php [new file with mode: 0644]
mbfrontendlogin/ext_icon.gif [new file with mode: 0644]
mbfrontendlogin/ext_localconf.php [new file with mode: 0644]
mbfrontendlogin/ext_tables.php [new file with mode: 0644]
mbfrontendlogin/ext_typoscript_constants.txt [new file with mode: 0644]
mbfrontendlogin/ext_typoscript_setup.txt [new file with mode: 0644]
mbfrontendlogin/flexform.xml [new file with mode: 0644]
mbfrontendlogin/locallang.xml [new file with mode: 0644]
mbfrontendlogin/locallang_db.xml [new file with mode: 0644]
mbfrontendlogin/pi1/ce_wiz.gif [new file with mode: 0644]
mbfrontendlogin/pi1/class.tx_mbfrontendlogin_pi1.php [new file with mode: 0644]
mbfrontendlogin/pi1/class.tx_mbfrontendlogin_pi1_wizicon.php [new file with mode: 0644]
mbfrontendlogin/pi1/clear.gif [new file with mode: 0644]
mbfrontendlogin/pi1/locallang.xml [new file with mode: 0644]
mbfrontendlogin/res/js/md5.js [new file with mode: 0644]
mbfrontendlogin/res/smarty/templates/forgot_pw.tpl [new file with mode: 0644]
mbfrontendlogin/res/smarty/templates/forgot_pw_mail.tpl [new file with mode: 0644]
mbfrontendlogin/res/smarty/templates/login.tpl [new file with mode: 0644]
mbfrontendlogin/res/smarty/templates/logout.tpl [new file with mode: 0644]

diff --git a/mbfrontendlogin/ChangeLog b/mbfrontendlogin/ChangeLog
new file mode 100644 (file)
index 0000000..aea9462
--- /dev/null
@@ -0,0 +1,28 @@
+2014-01-17
+
+  * Some minor security refactoring
+
+2013-03-06 Markus Brunner
+
+       * TYPO3 4.6 conform wizicon-include
+       * Overwritable Mail-Configuration via TypoScript Setup see ext_typoscript_setup.txt
+
+2012-02-03 Markus Brunner
+
+       * Now compatible with saltedpasswords
+
+2012-02-02 Markus Brunner
+
+       * TypoScript-Setup Fix - Redirect after logout
+
+2012-01-23 Markus Brunner
+
+       * Forgot_PW View added
+       
+2012-01-19 Markus Brunner
+
+       * Language Array Update for TYPO3 Versions >= 4.6
+
+2012-01-18 Markus Brunner  <mail@markusbrunner-design.de>
+
+       * initial code generated with kickstarter
diff --git a/mbfrontendlogin/README.txt b/mbfrontendlogin/README.txt
new file mode 100644 (file)
index 0000000..f55b021
--- /dev/null
@@ -0,0 +1,2 @@
+\r
+Feel free to add some documentation or simply add a link to the online manual.\r
diff --git a/mbfrontendlogin/doc/manual.sxw b/mbfrontendlogin/doc/manual.sxw
new file mode 100644 (file)
index 0000000..146bf8c
Binary files /dev/null and b/mbfrontendlogin/doc/manual.sxw differ
diff --git a/mbfrontendlogin/doc/wizard_form.dat b/mbfrontendlogin/doc/wizard_form.dat
new file mode 100644 (file)
index 0000000..bc1d756
--- /dev/null
@@ -0,0 +1 @@
+a:4:{s:4:"save";a:3:{s:13:"extension_key";s:15:"mbfrontendlogin";s:18:"print_wop_comments";s:1:"0";s:15:"overwrite_files";a:14:{s:9:"ChangeLog";s:1:"0";s:10:"README.txt";s:1:"0";s:12:"ext_icon.gif";s:1:"0";s:17:"ext_localconf.php";s:1:"0";s:14:"ext_tables.php";s:1:"0";s:13:"locallang.xml";s:1:"0";s:16:"locallang_db.xml";s:1:"0";s:19:"doc/wizard_form.dat";s:1:"1";s:20:"doc/wizard_form.html";s:1:"1";s:14:"pi1/ce_wiz.gif";s:1:"0";s:36:"pi1/class.tx_mbfrontendlogin_pi1.php";s:1:"0";s:44:"pi1/class.tx_mbfrontendlogin_pi1_wizicon.php";s:1:"0";s:13:"pi1/clear.gif";s:1:"0";s:17:"pi1/locallang.xml";s:1:"0";}}s:6:"emconf";a:1:{i:1;a:7:{s:5:"title";s:25:"MB :: Frontend User Login";s:11:"description";s:37:"Login Service for other extensions...";s:8:"category";s:6:"plugin";s:5:"state";s:5:"alpha";s:12:"dependencies";s:6:"smarty";s:6:"author";s:14:"Markus Brunner";s:12:"author_email";s:28:"mail@markusbrunner-design.de";}}s:9:"languages";a:1:{i:1;a:50:{s:2:"sq";s:1:"0";s:2:"ar";s:1:"0";s:2:"my";s:1:"0";s:2:"eu";s:1:"0";s:2:"ba";s:1:"0";s:2:"br";s:1:"0";s:2:"bg";s:1:"0";s:2:"ca";s:1:"0";s:2:"ch";s:1:"0";s:2:"hk";s:1:"0";s:2:"hr";s:1:"0";s:2:"cz";s:1:"0";s:2:"dk";s:1:"0";s:2:"nl";s:1:"0";s:2:"eo";s:1:"0";s:2:"et";s:1:"0";s:2:"fo";s:1:"0";s:2:"fi";s:1:"0";s:2:"fr";s:1:"0";s:2:"qc";s:1:"0";s:2:"ga";s:1:"0";s:2:"ge";s:1:"0";s:2:"de";s:1:"1";s:2:"gr";s:1:"0";s:2:"gl";s:1:"0";s:2:"he";s:1:"0";s:2:"hi";s:1:"0";s:2:"hu";s:1:"0";s:2:"is";s:1:"0";s:2:"it";s:1:"0";s:2:"jp";s:1:"0";s:2:"km";s:1:"0";s:2:"kr";s:1:"0";s:2:"lv";s:1:"0";s:2:"lt";s:1:"0";s:2:"no";s:1:"0";s:2:"fa";s:1:"0";s:2:"pl";s:1:"0";s:2:"pt";s:1:"0";s:2:"ro";s:1:"0";s:2:"ru";s:1:"0";s:2:"sr";s:1:"0";s:2:"sk";s:1:"0";s:2:"si";s:1:"0";s:2:"es";s:1:"0";s:2:"se";s:1:"0";s:2:"th";s:1:"0";s:2:"tr";s:1:"0";s:2:"ua";s:1:"0";s:2:"vn";s:1:"0";}}s:2:"pi";a:1:{i:1;a:10:{s:5:"title";s:25:"MB :: Frontend User Login";s:8:"title_de";s:25:"MB :: Frontend User Login";s:13:"plus_user_obj";s:1:"1";s:23:"plus_not_staticTemplate";s:1:"0";s:7:"addType";s:9:"list_type";s:8:"plus_wiz";s:1:"1";s:20:"plus_wiz_description";s:18:"MB :: Feuser Login";s:23:"plus_wiz_description_de";s:18:"MB :: Feuser Login";s:8:"tag_name";s:0:"";s:12:"plus_user_ex";s:1:"0";}}}
\ No newline at end of file
diff --git a/mbfrontendlogin/doc/wizard_form.html b/mbfrontendlogin/doc/wizard_form.html
new file mode 100644 (file)
index 0000000..6b16de3
--- /dev/null
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\r
+\r
+                       <html>\r
+                       <head>\r
+                               <title>Untitled</title>\r
+                       </head>\r
+\r
+                       <body>\r
+\r
+                               <table border="0" cellpadding="2" cellspacing="2"><tr bgcolor=""><td><strong><span style="font-family:verdana,arial,sans-serif; font-size:10px;">General info</span></strong></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;">Enter general information about the extension here: Title, description, category, author...</span></td></tr><tr><td></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><strong>Title:</strong><br /><a name="260dbfdff6"></a><input type="text" name="kickstarter[wizArray_upd][emconf][1][title]" value="MB :: Frontend User Login" style="width:200px;" onchange="setFormAnchorPoint('260dbfdff6');" title="WOP: [emconf][1][title]"></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><strong>Description:</strong><br /><a name="e9cba6944a"></a><textarea name="kickstarter[wizArray_upd][emconf][1][description]" style="width:600px;" rows="10" wrap="off" onchange="setFormAnchorPoint('e9cba6944a');" title="WOP:[emconf][1][description]" title="WOP: [emconf][1][description]">\r
+Login Service for other extensions...</textarea></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><strong>Category:</strong><br /><a name="b46008f89f"></a><select name="kickstarter[wizArray_upd][emconf][1][category]" onchange="setFormAnchorPoint('b46008f89f');" title="WOP: [emconf][1][category]"><option value=""></option><option value="fe">Frontend</option><option value="plugin" selected="selected">Frontend Plugins</option><option value="be">Backend</option><option value="module">Backend Modules</option><option value="services">Services</option><option value="example">Examples</option><option value="misc">Miscellaneous</option><option value="templates">Templates</option><option value="doc">Documentation</option></select></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><strong>State</strong><br /><a name="dbd328a5a5"></a><select name="kickstarter[wizArray_upd][emconf][1][state]" onchange="setFormAnchorPoint('dbd328a5a5');" title="WOP: [emconf][1][state]"><option value="alpha" selected="selected">Alpha (Very initial development)</option><option value="beta">Beta (Under current development, should work partly)</option><option value="stable">Stable (Stable and used in production)</option><option value="experimental">Experimental (Nobody knows if this is going anywhere yet...)</option><option value="test">Test (Test extension, demonstrates concepts etc.)</option></select></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><strong>Dependencies (comma list of extkeys):</strong><br /><a name="ce30f2d5ba"></a><input type="text" name="kickstarter[wizArray_upd][emconf][1][dependencies]" value="smarty" style="width:200px;" onchange="setFormAnchorPoint('ce30f2d5ba');" title="WOP: [emconf][1][dependencies]"></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><strong>Author Name:</strong><br /><a name="5317cdfcff"></a><input type="text" name="kickstarter[wizArray_upd][emconf][1][author]" value="Markus Brunner" style="width:200px;" onchange="setFormAnchorPoint('5317cdfcff');" title="WOP: [emconf][1][author]"></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><strong>Author email:</strong><br /><a name="58289f4384"></a><input type="text" name="kickstarter[wizArray_upd][emconf][1][author_email]" value="mail@markusbrunner-design.de" style="width:200px;" onchange="setFormAnchorPoint('58289f4384');" title="WOP: [emconf][1][author_email]"></span></td></tr></table><hr /><table border="0" cellpadding="2" cellspacing="2"><tr bgcolor=""><td><strong><span style="font-family:verdana,arial,sans-serif; font-size:10px;">Setup languages</span></strong></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;">Select the system languages you want to use in your extension. English is TYPO3's default language, therefore you don't need to select it anymore.</span></td></tr><tr><td></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><strong>Select which languages to setup:</strong><br /><blockquote><a name="97ce97df07"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][sq]" value="0"><input type="checkbox" class="checkbox" id="field_efcc451924ad860b4b5bd7e0a3425c27" name="kickstarter[wizArray_upd][languages][1][sq]" value="1" onclick="setFormAnchorPoint('97ce97df07');" title="WOP: [languages][1][sq]"><label for="field_efcc451924ad860b4b5bd7e0a3425c27">Albanian</label><br /><a name="7d533a7756"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][ar]" value="0"><input type="checkbox" class="checkbox" id="field_157e807dc1a0cbc6ffb15564528d508c" name="kickstarter[wizArray_upd][languages][1][ar]" value="1" onclick="setFormAnchorPoint('7d533a7756');" title="WOP: [languages][1][ar]"><label for="field_157e807dc1a0cbc6ffb15564528d508c">Arabic</label><br /><a name="78fbe4fcab"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][my]" value="0"><input type="checkbox" class="checkbox" id="field_9f073a60ed93b1a3ebfa27adb3db27b4" name="kickstarter[wizArray_upd][languages][1][my]" value="1" onclick="setFormAnchorPoint('78fbe4fcab');" title="WOP: [languages][1][my]"><label for="field_9f073a60ed93b1a3ebfa27adb3db27b4">Bahasa Malaysia</label><br /><a name="59bb5b03a9"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][eu]" value="0"><input type="checkbox" class="checkbox" id="field_0f4f5151a6bb96e1026ea04c95994385" name="kickstarter[wizArray_upd][languages][1][eu]" value="1" onclick="setFormAnchorPoint('59bb5b03a9');" title="WOP: [languages][1][eu]"><label for="field_0f4f5151a6bb96e1026ea04c95994385">Basque</label><br /><a name="82f6df3fe6"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][ba]" value="0"><input type="checkbox" class="checkbox" id="field_282b5e8094afe40edd256dafbce1f10a" name="kickstarter[wizArray_upd][languages][1][ba]" value="1" onclick="setFormAnchorPoint('82f6df3fe6');" title="WOP: [languages][1][ba]"><label for="field_282b5e8094afe40edd256dafbce1f10a">Bosnian</label><br /><a name="d5fc9e9f4d"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][br]" value="0"><input type="checkbox" class="checkbox" id="field_8c28b01086d841db3ce3d842ef512a7e" name="kickstarter[wizArray_upd][languages][1][br]" value="1" onclick="setFormAnchorPoint('d5fc9e9f4d');" title="WOP: [languages][1][br]"><label for="field_8c28b01086d841db3ce3d842ef512a7e">Brazilian Portuguese</label><br /><a name="9850ab5b73"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][bg]" value="0"><input type="checkbox" class="checkbox" id="field_8db37042c562f30f3c965bca52f1ab08" name="kickstarter[wizArray_upd][languages][1][bg]" value="1" onclick="setFormAnchorPoint('9850ab5b73');" title="WOP: [languages][1][bg]"><label for="field_8db37042c562f30f3c965bca52f1ab08">Bulgarian</label><br /><a name="022f262c2e"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][ca]" value="0"><input type="checkbox" class="checkbox" id="field_3b29fd3bc3675e082870f256c1f6b4e0" name="kickstarter[wizArray_upd][languages][1][ca]" value="1" onclick="setFormAnchorPoint('022f262c2e');" title="WOP: [languages][1][ca]"><label for="field_3b29fd3bc3675e082870f256c1f6b4e0">Catalan</label><br /><a name="0a86ea2302"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][ch]" value="0"><input type="checkbox" class="checkbox" id="field_0d78ee34cc78fddef25e59363dc6c470" name="kickstarter[wizArray_upd][languages][1][ch]" value="1" onclick="setFormAnchorPoint('0a86ea2302');" title="WOP: [languages][1][ch]"><label for="field_0d78ee34cc78fddef25e59363dc6c470">Chinese (Simpl)</label><br /><a name="4c39f3d408"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][hk]" value="0"><input type="checkbox" class="checkbox" id="field_0dab7e309e11dc3ec23f13a62a20e60f" name="kickstarter[wizArray_upd][languages][1][hk]" value="1" onclick="setFormAnchorPoint('4c39f3d408');" title="WOP: [languages][1][hk]"><label for="field_0dab7e309e11dc3ec23f13a62a20e60f">Chinese (Trad)</label><br /><a name="ba0c21b368"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][hr]" value="0"><input type="checkbox" class="checkbox" id="field_6737734fed39aaccdfac6e11a47a508a" name="kickstarter[wizArray_upd][languages][1][hr]" value="1" onclick="setFormAnchorPoint('ba0c21b368');" title="WOP: [languages][1][hr]"><label for="field_6737734fed39aaccdfac6e11a47a508a">Croatian</label><br /><a name="7fcce12c93"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][cz]" value="0"><input type="checkbox" class="checkbox" id="field_a5bbc9382d3faf91864c4308b888beba" name="kickstarter[wizArray_upd][languages][1][cz]" value="1" onclick="setFormAnchorPoint('7fcce12c93');" title="WOP: [languages][1][cz]"><label for="field_a5bbc9382d3faf91864c4308b888beba">Czech</label><br /><a name="b86f1028b2"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][dk]" value="0"><input type="checkbox" class="checkbox" id="field_3a7a6e434e9a4a6f952fe82175ed975a" name="kickstarter[wizArray_upd][languages][1][dk]" value="1" onclick="setFormAnchorPoint('b86f1028b2');" title="WOP: [languages][1][dk]"><label for="field_3a7a6e434e9a4a6f952fe82175ed975a">Danish</label><br /><a name="54b2a05e4d"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][nl]" value="0"><input type="checkbox" class="checkbox" id="field_ff7dffbf53d5d3855b0fdc63a2127633" name="kickstarter[wizArray_upd][languages][1][nl]" value="1" onclick="setFormAnchorPoint('54b2a05e4d');" title="WOP: [languages][1][nl]"><label for="field_ff7dffbf53d5d3855b0fdc63a2127633">Dutch</label><br /><a name="60d4c8e0f1"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][eo]" value="0"><input type="checkbox" class="checkbox" id="field_ebc20b1984a62467bc344ae16bf24996" name="kickstarter[wizArray_upd][languages][1][eo]" value="1" onclick="setFormAnchorPoint('60d4c8e0f1');" title="WOP: [languages][1][eo]"><label for="field_ebc20b1984a62467bc344ae16bf24996">Esperanto</label><br /><a name="d2aeaa8deb"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][et]" value="0"><input type="checkbox" class="checkbox" id="field_01ffe9c25d0a562eb28ac3b1aac92bc6" name="kickstarter[wizArray_upd][languages][1][et]" value="1" onclick="setFormAnchorPoint('d2aeaa8deb');" title="WOP: [languages][1][et]"><label for="field_01ffe9c25d0a562eb28ac3b1aac92bc6">Estonian</label><br /><a name="84b06abc79"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][fo]" value="0"><input type="checkbox" class="checkbox" id="field_3cd0753662c692d514c281fe5aa52dd8" name="kickstarter[wizArray_upd][languages][1][fo]" value="1" onclick="setFormAnchorPoint('84b06abc79');" title="WOP: [languages][1][fo]"><label for="field_3cd0753662c692d514c281fe5aa52dd8">Faroese</label><br /><a name="0bc4ee7821"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][fi]" value="0"><input type="checkbox" class="checkbox" id="field_9ee6ff2993a614ad60fb00a9100cc008" name="kickstarter[wizArray_upd][languages][1][fi]" value="1" onclick="setFormAnchorPoint('0bc4ee7821');" title="WOP: [languages][1][fi]"><label for="field_9ee6ff2993a614ad60fb00a9100cc008">Finnish</label><br /><a name="3dac7ddfab"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][fr]" value="0"><input type="checkbox" class="checkbox" id="field_1709fab423b9ef99d92accde72c1535e" name="kickstarter[wizArray_upd][languages][1][fr]" value="1" onclick="setFormAnchorPoint('3dac7ddfab');" title="WOP: [languages][1][fr]"><label for="field_1709fab423b9ef99d92accde72c1535e">French</label><br /><a name="2896a70a8a"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][qc]" value="0"><input type="checkbox" class="checkbox" id="field_3141f4f92f7ba6418330dc4cdfff45df" name="kickstarter[wizArray_upd][languages][1][qc]" value="1" onclick="setFormAnchorPoint('2896a70a8a');" title="WOP: [languages][1][qc]"><label for="field_3141f4f92f7ba6418330dc4cdfff45df">French (Canada)</label><br /><a name="a160bebe23"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][ga]" value="0"><input type="checkbox" class="checkbox" id="field_3d21b5a90f7053b1dbe10ca4ea9034db" name="kickstarter[wizArray_upd][languages][1][ga]" value="1" onclick="setFormAnchorPoint('a160bebe23');" title="WOP: [languages][1][ga]"><label for="field_3d21b5a90f7053b1dbe10ca4ea9034db">Galician</label><br /><a name="ea4a198241"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][ge]" value="0"><input type="checkbox" class="checkbox" id="field_6b36c4baf6ef2f4d2b146c380df5db7f" name="kickstarter[wizArray_upd][languages][1][ge]" value="1" onclick="setFormAnchorPoint('ea4a198241');" title="WOP: [languages][1][ge]"><label for="field_6b36c4baf6ef2f4d2b146c380df5db7f">Georgian</label><br /><a name="827e867baf"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][de]" value="0"><input type="checkbox" class="checkbox" id="field_ecbbc4e189c9a80e7c7ecb32e25f1ea4" name="kickstarter[wizArray_upd][languages][1][de]" value="1" checked="checked" onclick="setFormAnchorPoint('827e867baf');" title="WOP: [languages][1][de]"><label for="field_ecbbc4e189c9a80e7c7ecb32e25f1ea4">German</label><br /><a name="47346a0a45"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][gr]" value="0"><input type="checkbox" class="checkbox" id="field_7890b498a94aa6f0af6f5dd3e4517dc4" name="kickstarter[wizArray_upd][languages][1][gr]" value="1" onclick="setFormAnchorPoint('47346a0a45');" title="WOP: [languages][1][gr]"><label for="field_7890b498a94aa6f0af6f5dd3e4517dc4">Greek</label><br /><a name="b62d68ce6c"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][gl]" value="0"><input type="checkbox" class="checkbox" id="field_55181c72c8dfeda989b0697001f4aa89" name="kickstarter[wizArray_upd][languages][1][gl]" value="1" onclick="setFormAnchorPoint('b62d68ce6c');" title="WOP: [languages][1][gl]"><label for="field_55181c72c8dfeda989b0697001f4aa89">Greenlandic</label><br /><a name="7083677049"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][he]" value="0"><input type="checkbox" class="checkbox" id="field_34fbd31aa3853c6495939cb314ee006a" name="kickstarter[wizArray_upd][languages][1][he]" value="1" onclick="setFormAnchorPoint('7083677049');" title="WOP: [languages][1][he]"><label for="field_34fbd31aa3853c6495939cb314ee006a">Hebrew</label><br /><a name="8821dba88e"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][hi]" value="0"><input type="checkbox" class="checkbox" id="field_ba9c3fe4715fd02b64f0e0dbe1c3692a" name="kickstarter[wizArray_upd][languages][1][hi]" value="1" onclick="setFormAnchorPoint('8821dba88e');" title="WOP: [languages][1][hi]"><label for="field_ba9c3fe4715fd02b64f0e0dbe1c3692a">Hindi</label><br /><a name="8293f23e10"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][hu]" value="0"><input type="checkbox" class="checkbox" id="field_96bad96849163cd6408293da6d8e01e0" name="kickstarter[wizArray_upd][languages][1][hu]" value="1" onclick="setFormAnchorPoint('8293f23e10');" title="WOP: [languages][1][hu]"><label for="field_96bad96849163cd6408293da6d8e01e0">Hungarian</label><br /><a name="1fbf3d59e1"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][is]" value="0"><input type="checkbox" class="checkbox" id="field_01b5cc08dcee4a5b042ce5c1a3d0a9c7" name="kickstarter[wizArray_upd][languages][1][is]" value="1" onclick="setFormAnchorPoint('1fbf3d59e1');" title="WOP: [languages][1][is]"><label for="field_01b5cc08dcee4a5b042ce5c1a3d0a9c7">Icelandic</label><br /><a name="73e154abd2"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][it]" value="0"><input type="checkbox" class="checkbox" id="field_8d7cddd1fa419d8caa6ac961a39090b8" name="kickstarter[wizArray_upd][languages][1][it]" value="1" onclick="setFormAnchorPoint('73e154abd2');" title="WOP: [languages][1][it]"><label for="field_8d7cddd1fa419d8caa6ac961a39090b8">Italian</label><br /><a name="4be98144d7"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][jp]" value="0"><input type="checkbox" class="checkbox" id="field_16f7613e21d133c612521d4138d2de8e" name="kickstarter[wizArray_upd][languages][1][jp]" value="1" onclick="setFormAnchorPoint('4be98144d7');" title="WOP: [languages][1][jp]"><label for="field_16f7613e21d133c612521d4138d2de8e">Japanese</label><br /><a name="458619687c"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][km]" value="0"><input type="checkbox" class="checkbox" id="field_fbf98b8e85a06e5802ae1c16e38bb382" name="kickstarter[wizArray_upd][languages][1][km]" value="1" onclick="setFormAnchorPoint('458619687c');" title="WOP: [languages][1][km]"><label for="field_fbf98b8e85a06e5802ae1c16e38bb382">Khmer</label><br /><a name="72d3409fc7"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][kr]" value="0"><input type="checkbox" class="checkbox" id="field_effd61702e7b504223470510a56eef64" name="kickstarter[wizArray_upd][languages][1][kr]" value="1" onclick="setFormAnchorPoint('72d3409fc7');" title="WOP: [languages][1][kr]"><label for="field_effd61702e7b504223470510a56eef64">Korean</label><br /><a name="3aecc5e21e"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][lv]" value="0"><input type="checkbox" class="checkbox" id="field_c2d6a38e421d36aa2db9b4e68a32fd1f" name="kickstarter[wizArray_upd][languages][1][lv]" value="1" onclick="setFormAnchorPoint('3aecc5e21e');" title="WOP: [languages][1][lv]"><label for="field_c2d6a38e421d36aa2db9b4e68a32fd1f">Latvian</label><br /><a name="4f9b71ee82"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][lt]" value="0"><input type="checkbox" class="checkbox" id="field_c7cef4931892b7c806ec0454d4f8bcfc" name="kickstarter[wizArray_upd][languages][1][lt]" value="1" onclick="setFormAnchorPoint('4f9b71ee82');" title="WOP: [languages][1][lt]"><label for="field_c7cef4931892b7c806ec0454d4f8bcfc">Lithuanian</label><br /><a name="7f432802c6"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][no]" value="0"><input type="checkbox" class="checkbox" id="field_9e478e5a9fb6e1a73f4eb60c11c53a3d" name="kickstarter[wizArray_upd][languages][1][no]" value="1" onclick="setFormAnchorPoint('7f432802c6');" title="WOP: [languages][1][no]"><label for="field_9e478e5a9fb6e1a73f4eb60c11c53a3d">Norwegian</label><br /><a name="b6208f5c27"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][fa]" value="0"><input type="checkbox" class="checkbox" id="field_2417f96d11b48fa29f0d872b659cffbf" name="kickstarter[wizArray_upd][languages][1][fa]" value="1" onclick="setFormAnchorPoint('b6208f5c27');" title="WOP: [languages][1][fa]"><label for="field_2417f96d11b48fa29f0d872b659cffbf">Persian</label><br /><a name="4cd3612e78"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][pl]" value="0"><input type="checkbox" class="checkbox" id="field_1a4806ffd0ef48e8226853499821b4d9" name="kickstarter[wizArray_upd][languages][1][pl]" value="1" onclick="setFormAnchorPoint('4cd3612e78');" title="WOP: [languages][1][pl]"><label for="field_1a4806ffd0ef48e8226853499821b4d9">Polish</label><br /><a name="63d5243829"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][pt]" value="0"><input type="checkbox" class="checkbox" id="field_84082372e8e4e8f938e7f2cd307bc81a" name="kickstarter[wizArray_upd][languages][1][pt]" value="1" onclick="setFormAnchorPoint('63d5243829');" title="WOP: [languages][1][pt]"><label for="field_84082372e8e4e8f938e7f2cd307bc81a">Portuguese</label><br /><a name="ebc2430d26"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][ro]" value="0"><input type="checkbox" class="checkbox" id="field_a00f0da216424784ee4d65238bb28dc5" name="kickstarter[wizArray_upd][languages][1][ro]" value="1" onclick="setFormAnchorPoint('ebc2430d26');" title="WOP: [languages][1][ro]"><label for="field_a00f0da216424784ee4d65238bb28dc5">Romanian</label><br /><a name="a098cc1f91"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][ru]" value="0"><input type="checkbox" class="checkbox" id="field_481e87b783fec0a0b514e6f9f841e8e9" name="kickstarter[wizArray_upd][languages][1][ru]" value="1" onclick="setFormAnchorPoint('a098cc1f91');" title="WOP: [languages][1][ru]"><label for="field_481e87b783fec0a0b514e6f9f841e8e9">Russian</label><br /><a name="8519524025"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][sr]" value="0"><input type="checkbox" class="checkbox" id="field_df59b628c36c5b6dcbf3753102e3ffce" name="kickstarter[wizArray_upd][languages][1][sr]" value="1" onclick="setFormAnchorPoint('8519524025');" title="WOP: [languages][1][sr]"><label for="field_df59b628c36c5b6dcbf3753102e3ffce">Serbian</label><br /><a name="c8d205aed0"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][sk]" value="0"><input type="checkbox" class="checkbox" id="field_14f91022b98f2abdf60e8239758009d8" name="kickstarter[wizArray_upd][languages][1][sk]" value="1" onclick="setFormAnchorPoint('c8d205aed0');" title="WOP: [languages][1][sk]"><label for="field_14f91022b98f2abdf60e8239758009d8">Slovak</label><br /><a name="6404570bc0"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][si]" value="0"><input type="checkbox" class="checkbox" id="field_84ce6a1562ec5d52e1e39c25a3218b39" name="kickstarter[wizArray_upd][languages][1][si]" value="1" onclick="setFormAnchorPoint('6404570bc0');" title="WOP: [languages][1][si]"><label for="field_84ce6a1562ec5d52e1e39c25a3218b39">Slovenian</label><br /><a name="8be7af8e47"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][es]" value="0"><input type="checkbox" class="checkbox" id="field_756971a4da49a4cf6b9f06d9863583e4" name="kickstarter[wizArray_upd][languages][1][es]" value="1" onclick="setFormAnchorPoint('8be7af8e47');" title="WOP: [languages][1][es]"><label for="field_756971a4da49a4cf6b9f06d9863583e4">Spanish</label><br /><a name="db1a396ac5"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][se]" value="0"><input type="checkbox" class="checkbox" id="field_c0f51b1e72659574f080bf6e8310e9d4" name="kickstarter[wizArray_upd][languages][1][se]" value="1" onclick="setFormAnchorPoint('db1a396ac5');" title="WOP: [languages][1][se]"><label for="field_c0f51b1e72659574f080bf6e8310e9d4">Swedish</label><br /><a name="09b51bc212"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][th]" value="0"><input type="checkbox" class="checkbox" id="field_836d861af4a2f642c1399fc478c40f74" name="kickstarter[wizArray_upd][languages][1][th]" value="1" onclick="setFormAnchorPoint('09b51bc212');" title="WOP: [languages][1][th]"><label for="field_836d861af4a2f642c1399fc478c40f74">Thai</label><br /><a name="04887aadc6"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][tr]" value="0"><input type="checkbox" class="checkbox" id="field_6e89467ae828da562578c0041fb9ac57" name="kickstarter[wizArray_upd][languages][1][tr]" value="1" onclick="setFormAnchorPoint('04887aadc6');" title="WOP: [languages][1][tr]"><label for="field_6e89467ae828da562578c0041fb9ac57">Turkish</label><br /><a name="593a18ebf0"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][ua]" value="0"><input type="checkbox" class="checkbox" id="field_65e575b488757612ec7b610ba0e9c994" name="kickstarter[wizArray_upd][languages][1][ua]" value="1" onclick="setFormAnchorPoint('593a18ebf0');" title="WOP: [languages][1][ua]"><label for="field_65e575b488757612ec7b610ba0e9c994">Ukrainian</label><br /><a name="75226f1caf"></a><input type="hidden" name="kickstarter[wizArray_upd][languages][1][vn]" value="0"><input type="checkbox" class="checkbox" id="field_d9099a5c71962cb17553a9afb234d521" name="kickstarter[wizArray_upd][languages][1][vn]" value="1" onclick="setFormAnchorPoint('75226f1caf');" title="WOP: [languages][1][vn]"><label for="field_d9099a5c71962cb17553a9afb234d521">Vietnamese</label><br /></blockquote></span></td></tr></table><hr /><table border=0 cellpadding=2 cellspacing=2><tr bgcolor=""><td><strong><span style="font-family:verdana,arial,sans-serif; font-size:10px;">Frontend Plugins</span></strong></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;">Create frontend plugins. Plugins are web applications running on the website itself (not in the backend of TYPO3). The default guestbook, message board, shop, rating feature etc. are examples of plugins.</span></td></tr><tr><td></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><strong>Enter a title for the plugin:</strong><br /><a name="c040cc394f"></a><input type="text" name="kickstarter[wizArray_upd][pi][1][title]" value="MB :: Frontend User Login" style="width:200px;" onchange="setFormAnchorPoint('c040cc394f');" title="WOP: [pi][1][title]"> [English]<blockquote><a name="7c6c54025a"></a><input type="text" name="kickstarter[wizArray_upd][pi][1][title_de]" value="MB :: Frontend User Login" style="width:200px;" onchange="setFormAnchorPoint('7c6c54025a');" title="WOP: [pi][1][title_de]"> [German]</blockquote></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><a name="51abb93902"></a><input type="hidden" name="kickstarter[wizArray_upd][pi][1][plus_user_obj]" value="0"><input type="checkbox" class="checkbox" id="field_36ba46fce61be90344cb211b2768d820" name="kickstarter[wizArray_upd][pi][1][plus_user_obj]" value="1" checked="checked" onclick="setFormAnchorPoint('51abb93902');" title="WOP: [pi][1][plus_user_obj]">By default plugins are generated as cachable USER cObjects. Check this checkbox to generate an uncached USER_INT cObject.<br /></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><a name="69574a69dc"></a><input type="hidden" name="kickstarter[wizArray_upd][pi][1][plus_not_staticTemplate]" value="0"><input type="checkbox" class="checkbox" id="field_d4681b37a9edc8a52f24912b84eb7e68" name="kickstarter[wizArray_upd][pi][1][plus_not_staticTemplate]" value="1" onclick="setFormAnchorPoint('69574a69dc');" title="WOP: [pi][1][plus_not_staticTemplate]">Enable this option if you want the TypoScript code to be set by default. Otherwise the code will go into a static template file which must be included in the template record (it's <em>NOT</em> recommended to set this option).<br /></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><a name="15c9a33e8f"></a><input type="radio" name="kickstarter[wizArray_upd][pi][1][addType]" value="list_type" checked="checked" onclick="setFormAnchorPoint('15c9a33e8f');" title="WOP: [pi][1][addType]"><strong>Add to 'Insert Plugin' list in Content Elements'</strong><br /><blockquote>Most frontend plugins should be added to the Plugin list of Content Element type 'Insert Plugin'. This is what happens with most other plugins you know of.<br /><img src="../typo3conf/ext/kickstarter/res/pi_pi.png" width="333" height="293" align="center" vspace="5" border="1" style="border:solid 1px;" /><br /><br /><a name="19e5106d54"></a><input type="hidden" name="kickstarter[wizArray_upd][pi][1][plus_wiz]" value="0"><input type="checkbox" class="checkbox" id="field_48e995418ec6b5982024017b91422b46" name="kickstarter[wizArray_upd][pi][1][plus_wiz]" value="1" checked="checked" onclick="setFormAnchorPoint('19e5106d54');" title="WOP: [pi][1][plus_wiz]">Add icon to 'New Content Element' wizard:<br /><img src="../typo3conf/ext/kickstarter/res/pi_cewiz.png" width="276" height="145" align="center" vspace="5" border="1" style="border:solid 1px;" /><br />Write a description for the entry (if any):<br /><a name="cd406c53b3"></a><input type="text" name="kickstarter[wizArray_upd][pi][1][plus_wiz_description]" value="MB :: Feuser Login" style="width:200px;" onchange="setFormAnchorPoint('cd406c53b3');" title="WOP: [pi][1][plus_wiz_description]"> [English]<blockquote><a name="15be62b1ea"></a><input type="text" name="kickstarter[wizArray_upd][pi][1][plus_wiz_description_de]" value="MB :: Feuser Login" style="width:200px;" onchange="setFormAnchorPoint('15be62b1ea');" title="WOP: [pi][1][plus_wiz_description_de]"> [German]</blockquote></blockquote></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><a name="15c9a33e8f"></a><input type="radio" name="kickstarter[wizArray_upd][pi][1][addType]" value="textbox" onclick="setFormAnchorPoint('15c9a33e8f');" title="WOP: [pi][1][addType]"><strong>Add as a 'Textbox' type</strong><br /><blockquote>The Textbox Content Element is not very common but has a confortable set of fields: Bodytext and image upload.<br /><img src="../typo3conf/ext/kickstarter/res/pi_textbox.png" width="333" height="212" align="center" vspace="5" border="1" style="border:solid 1px;" /><br /></blockquote></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><a name="15c9a33e8f"></a><input type="radio" name="kickstarter[wizArray_upd][pi][1][addType]" value="menu_sitemap" onclick="setFormAnchorPoint('15c9a33e8f');" title="WOP: [pi][1][addType]"><strong>Add as a 'Menu/Sitemap' item</strong><br /><blockquote>Adds the plugin to the Menu/Sitemap list. Use this if your plugin is a list of links to pages or elements on the website. An alternative sitemap? Or some special kind of menu in a special design?<br /><img src="../typo3conf/ext/kickstarter/res/pi_menu_sitemap.png" width="333" height="245" align="center" vspace="5" border="1" style="border:solid 1px;" /><br /></blockquote></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><a name="15c9a33e8f"></a><input type="radio" name="kickstarter[wizArray_upd][pi][1][addType]" value="ce" onclick="setFormAnchorPoint('15c9a33e8f');" title="WOP: [pi][1][addType]"><strong>Add as a totally new Content Element type</strong><br /><blockquote>You can also take the plunge into a whole new content element type! Scarry eh?<br /><img src="../typo3conf/ext/kickstarter/res/pi_ce.png" width="333" height="285" align="center" vspace="5" border="1" style="border:solid 1px;" /><br /></blockquote></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><a name="15c9a33e8f"></a><input type="radio" name="kickstarter[wizArray_upd][pi][1][addType]" value="header" onclick="setFormAnchorPoint('15c9a33e8f');" title="WOP: [pi][1][addType]"><strong>Add as a new header type</strong><br /><blockquote>Finally you might insert a new header type here:<br /><img src="../typo3conf/ext/kickstarter/res/pi_header.png" width="333" height="258" align="center" vspace="5" border="1" style="border:solid 1px;" /><br /></blockquote></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><a name="15c9a33e8f"></a><input type="radio" name="kickstarter[wizArray_upd][pi][1][addType]" value="typotags" onclick="setFormAnchorPoint('15c9a33e8f');" title="WOP: [pi][1][addType]"><strong>Processing of userdefined tag</strong><br /><blockquote>If you wish the plugin to process content from a userdefined tag in Content Element text-fields, enter the tagname here. Eg. if you wish the tags &lt;mytag&gt;This is the content&lt;/mytag&gt; to be your userdefined tags, just enter 'mytag' in this field (lowercase a-z, 0-9 and underscore):<br /><a name="b642236ba9"></a><input type="text" name="kickstarter[wizArray_upd][pi][1][tag_name]" value="" style="width:200px;" onchange="setFormAnchorPoint('b642236ba9');" title="WOP: [pi][1][tag_name]"></blockquote></span></td></tr><tr bgcolor=""><td><span style="font-family:verdana,arial,sans-serif; font-size:10px;"><a name="15c9a33e8f"></a><input type="radio" name="kickstarter[wizArray_upd][pi][1][addType]" value="includeLib" onclick="setFormAnchorPoint('15c9a33e8f');" title="WOP: [pi][1][addType]"><strong>Just include library</strong><br /><blockquote>In this case your library is just included when pages are rendered.<br /><br /><a name="d2fd54b86b"></a><input type="hidden" name="kickstarter[wizArray_upd][pi][1][plus_user_ex]" value="0"><input type="checkbox" class="checkbox" id="field_06dd3d8052d8ed523c3ce9c88c246abb" name="kickstarter[wizArray_upd][pi][1][plus_user_ex]" value="1" onclick="setFormAnchorPoint('d2fd54b86b');" title="WOP: [pi][1][plus_user_ex]">Provide TypoScript example for USER cObject in 'page.1000'<br /></blockquote></span></td></tr></table>\r
+                       </body>\r
+                       </html>
\ No newline at end of file
diff --git a/mbfrontendlogin/ext_emconf.php b/mbfrontendlogin/ext_emconf.php
new file mode 100644 (file)
index 0000000..aae1806
--- /dev/null
@@ -0,0 +1,49 @@
+<?php\r
+\r
+########################################################################\r
+# Extension Manager/Repository config file for ext "mbfrontendlogin".\r
+#\r
+# Auto generated 17-01-2014 17:35\r
+#\r
+# Manual updates:\r
+# Only the data in the array - everything else is removed by next\r
+# writing. "version" and "dependencies" must not be touched!\r
+########################################################################\r
+\r
+$EM_CONF[$_EXTKEY] = array(\r
+       'title' => 'MB :: Frontend User Login',\r
+       'description' => 'Login Service for other extensions...',\r
+       'category' => 'plugin',\r
+       'author' => 'Markus Brunner',\r
+       'author_email' => 'mail@markusbrunner-design.de',\r
+       'shy' => '',\r
+       'dependencies' => 'smarty',\r
+       'conflicts' => '',\r
+       'priority' => '',\r
+       'module' => '',\r
+       'state' => 'beta',\r
+       'internal' => '',\r
+       'uploadfolder' => 0,\r
+       'createDirs' => '',\r
+       'modify_tables' => '',\r
+       'clearCacheOnLoad' => 0,\r
+       'lockType' => '',\r
+       'author_company' => '',\r
+       'version' => '2.1.1',\r
+       'constraints' => array(\r
+               'depends' => array(\r
+                       'smarty' => '',\r
+                       'typo3' => '4.7.0-6.1.7',\r
+               ),\r
+               'conflicts' => array(\r
+               ),\r
+               'suggests' => array(\r
+                       'saltedpasswords' => '',\r
+               ),\r
+       ),\r
+       '_md5_values_when_last_written' => 'a:35:{s:9:"ChangeLog";s:4:"e3ee";s:10:"README.txt";s:4:"ee2d";s:12:"ext_icon.gif";s:4:"3d5f";s:17:"ext_localconf.php";s:4:"2ad2";s:14:"ext_tables.php";s:4:"654c";s:28:"ext_typoscript_constants.txt";s:4:"ea14";s:24:"ext_typoscript_setup.txt";s:4:"08b6";s:12:"flexform.xml";s:4:"4641";s:13:"locallang.xml";s:4:"ed47";s:16:"locallang_db.xml";s:4:"ec56";s:14:"doc/manual.sxw";s:4:"5a2e";s:19:"doc/wizard_form.dat";s:4:"f413";s:20:"doc/wizard_form.html";s:4:"99db";s:14:"pi1/ce_wiz.gif";s:4:"3d5f";s:36:"pi1/class.tx_mbfrontendlogin_pi1.php";s:4:"fdf3";s:44:"pi1/class.tx_mbfrontendlogin_pi1_wizicon.php";s:4:"e3f7";s:13:"pi1/clear.gif";s:4:"cc11";s:17:"pi1/locallang.xml";s:4:"1910";s:13:"res/js/md5.js";s:4:"52c7";s:34:"res/smarty/templates/forgot_pw.tpl";s:4:"3308";s:39:"res/smarty/templates/forgot_pw_mail.tpl";s:4:"3c3f";s:30:"res/smarty/templates/login.tpl";s:4:"08c6";s:31:"res/smarty/templates/logout.tpl";s:4:"0c36";s:94:"res/smarty/templates_c/mbfrontendlogin^%%23^23C^23C8C12A%%9e2bc83f50572c4ed5bc8ec609a57f82.php";s:4:"6f9c";s:94:"res/smarty/templates_c/mbfrontendlogin^%%23^23C^23C8C12A%%9e3606f2b8b227f0d902002f51c13258.php";s:4:"9016";s:94:"res/smarty/templates_c/mbfrontendlogin^%%23^23C^23C8C12A%%ffc8235aa767a8f00e8dea0c12212b02.php";s:4:"9642";s:94:"res/smarty/templates_c/mbfrontendlogin^%%28^287^28727118%%0ce18ca78294f2a640d987159a106b33.php";s:4:"5d26";s:94:"res/smarty/templates_c/mbfrontendlogin^%%28^287^28727118%%3435964d6b025e63605e6b5f4b90847a.php";s:4:"456f";s:94:"res/smarty/templates_c/mbfrontendlogin^%%28^287^28727118%%42fafcaf8a615fad63f9fdc79bec66b5.php";s:4:"422f";s:94:"res/smarty/templates_c/mbfrontendlogin^%%6A^6A5^6A537DD8%%26af6d25e22dfc972d3231818d5e0159.php";s:4:"a99d";s:94:"res/smarty/templates_c/mbfrontendlogin^%%6A^6A5^6A537DD8%%58742e5f0eb0126389c4a7ed54771261.php";s:4:"01ed";s:94:"res/smarty/templates_c/mbfrontendlogin^%%6A^6A5^6A537DD8%%df6b50f358f75b97976638f4c7b4c6de.php";s:4:"5266";s:94:"res/smarty/templates_c/mbfrontendlogin^%%7E^7EB^7EBDD324%%7ee366490f126fed61bbe40d7f8f4c01.php";s:4:"e444";s:94:"res/smarty/templates_c/mbfrontendlogin^%%7E^7EB^7EBDD324%%e12c5c1dfc49543e000853a19c55734b.php";s:4:"6cc9";s:94:"res/smarty/templates_c/mbfrontendlogin^%%7E^7EB^7EBDD324%%fdb718098bf0f6025fa67a32789fbadc.php";s:4:"84db";}',\r
+       'suggests' => array(\r
+       ),\r
+);\r
+\r
+?>
\ No newline at end of file
diff --git a/mbfrontendlogin/ext_icon.gif b/mbfrontendlogin/ext_icon.gif
new file mode 100644 (file)
index 0000000..6fd4dbf
Binary files /dev/null and b/mbfrontendlogin/ext_icon.gif differ
diff --git a/mbfrontendlogin/ext_localconf.php b/mbfrontendlogin/ext_localconf.php
new file mode 100644 (file)
index 0000000..8e29a58
--- /dev/null
@@ -0,0 +1,7 @@
+<?php\r
+if (!defined('TYPO3_MODE')) {\r
+       die ('Access denied.');\r
+}\r
+\r
+t3lib_extMgm::addPItoST43($_EXTKEY, 'pi1/class.tx_mbfrontendlogin_pi1.php', '_pi1', 'list_type', 0);\r
+?>
\ No newline at end of file
diff --git a/mbfrontendlogin/ext_tables.php b/mbfrontendlogin/ext_tables.php
new file mode 100644 (file)
index 0000000..68e7d52
--- /dev/null
@@ -0,0 +1,25 @@
+<?php\r
+if (!defined('TYPO3_MODE')) {\r
+       die ('Access denied.');\r
+}\r
+\r
+t3lib_div::loadTCA('tt_content');\r
+$TCA['tt_content']['types']['list']['subtypes_excludelist'][$_EXTKEY.'_pi1']='layout,select_key,pages';\r
+\r
+\r
+t3lib_extMgm::addPlugin(array(\r
+       'LLL:EXT:mbfrontendlogin/locallang_db.xml:tt_content.list_type_pi1',\r
+       $_EXTKEY . '_pi1',\r
+       t3lib_extMgm::extRelPath($_EXTKEY) . 'ext_icon.gif'\r
+),'list_type');\r
+\r
+if (TYPO3_MODE == 'BE') {\r
+    $TBE_MODULES_EXT['xMOD_db_new_content_el']['addElClasses']['tx_mbfrontendlogin_pi1_wizicon'] = t3lib_extMgm::extPath($_EXTKEY).'pi1/class.tx_mbfrontendlogin_pi1_wizicon.php';\r
+}\r
+\r
+/*\r
+ * Flexform integration\r
+ */\r
+$TCA['tt_content']['types']['list']['subtypes_addlist'][$_EXTKEY.'_pi1'] ='pi_flexform';\r
+t3lib_extMgm::addPiFlexFormValue($_EXTKEY.'_pi1', 'FILE:EXT:'.$_EXTKEY . '/flexform.xml');\r
+?>
\ No newline at end of file
diff --git a/mbfrontendlogin/ext_typoscript_constants.txt b/mbfrontendlogin/ext_typoscript_constants.txt
new file mode 100644 (file)
index 0000000..2f8b477
--- /dev/null
@@ -0,0 +1,42 @@
+plugin.tx_mbfrontendlogin_pi1 {\r
+\r
+    # Login Options\r
+    login {\r
+        # cat=PLUGIN.MBFRONTENDLOGIN/LOGIN; type=options[username,email,name]; label=fe_user field to check against for login-process\r
+        feuserAuthField = username\r
+\r
+        # cat=PLUGIN.MBFRONTENDLOGIN/LOGIN; type=options[true,false]; label=show forgot password link in login-template\r
+        showForgotPasswordLink = true\r
+\r
+        # cat=PLUGIN.MBFRONTENDLOGIN/LOGIN; type=links; label=forgot password page uid\r
+        forgotPasswordPageUid = 1\r
+    }\r
+\r
+    # Security Options\r
+    security {\r
+        # cat=PLUGIN.MBFRONTENDLOGIN/SECURITY; type=options[true,false]; label=fe_user password is a salted password (sysext: saltedpasswords)?\r
+        feuserPasswordIsASaltedPassword = true\r
+\r
+        # cat=PLUGIN.MBFRONTENDLOGIN/SECURITY; type=options[true,false]; label=fe_user password is saved as MD5?\r
+        feuserPasswordIsMD5 = false\r
+        \r
+        # cat=PLUGIN.MBFRONTENDLOGIN/SECURITY; type=options[true,false]; label=enable MD5 in Frontend\r
+        enableFrontendMD5 = false\r
+        \r
+        # cat=PLUGIN.MBFRONTENDLOGIN/SECURITY; type=text+; label=if your not using saltedpasswords or MD5 you should at least use a personalized salting which is prepended to your password\r
+        passwordSalt = t&7V3%+m!\r
+    }\r
+    \r
+    # Redirect Page\r
+    redirects {\r
+        # cat=PLUGIN.MBFRONTENDLOGIN/REDIRECTS; type=links; label=Redirect after login to page with id\r
+        afterLogin = 0\r
+\r
+        # cat=PLUGIN.MBFRONTENDLOGIN/REDIRECTS; type=links; label=Redirect after logout to page with id\r
+        afterLogout = 0\r
+\r
+        # cat=PLUGIN.MBFRONTENDLOGIN/REDIRECTS; type=options[true,false]; label=Reload actual page after login / logout - alternative to redirect afterLogin / afterLogout. If this is true afterLogin and afterLogout has no effect.\r
+        reloadActualPage = true\r
+    }\r
+\r
+}
\ No newline at end of file
diff --git a/mbfrontendlogin/ext_typoscript_setup.txt b/mbfrontendlogin/ext_typoscript_setup.txt
new file mode 100644 (file)
index 0000000..7c1078b
--- /dev/null
@@ -0,0 +1,70 @@
+plugin.tx_mbfrontendlogin_pi1 {\r
+    \r
+    # Smarty Options\r
+    smarty {\r
+        #template_dir = typo3conf/ext/mbfrontendlogin/res/smarty/templates/\r
+        #compile_dir =  typo3conf/ext/mbfrontendlogin/res/smarty/templates_c/\r
+        templates {\r
+            login = login.tpl\r
+            logout = logout.tpl\r
+            forgot_pw = forgot_pw.tpl\r
+            forgot_pw_mail = forgot_pw_mail.tpl\r
+        }\r
+    }\r
+    \r
+    # Login Options\r
+    login {\r
+        # fe_user field to check against for login-process\r
+        feuserAuthField = {$plugin.tx_mbfrontendlogin_pi1.login.feuserAuthField}\r
+\r
+        # show forgot password link in login-template\r
+        showForgotPasswordLink = {$plugin.tx_mbfrontendlogin_pi1.login.showForgotPasswordLink}\r
+\r
+        # forgot password page uid\r
+        forgotPasswordPageUid = {$plugin.tx_mbfrontendlogin_pi1.login.forgotPasswordPageUid}\r
+    }\r
+\r
+    # Security Options\r
+    security {\r
+        # fe_user password is a salted password (sysext:saltedpasswords)\r
+        feuserPasswordIsASaltedPassword = {$plugin.tx_mbfrontendlogin_pi1.security.feuserPasswordIsASaltedPassword}\r
+\r
+        # fe_user password is saved as MD5?\r
+        feuserPasswordIsMD5 = {$plugin.tx_mbfrontendlogin_pi1.security.feuserPasswordIsMD5}\r
+        \r
+        # enable MD5 in Frontend\r
+        enableFrontendMD5 = {$plugin.tx_mbfrontendlogin_pi1.security.enableFrontendMD5}\r
+        \r
+        # if your not using MD5 you should at least use a personalized salting which is prepended to your password\r
+        passwordSalt = {$plugin.tx_mbfrontendlogin_pi1.security.passwordSalt}\r
+    }\r
+\r
+    # Redirect Page\r
+    redirects {\r
+        # Redirect after login to page with id\r
+        afterLogin = {$plugin.tx_mbfrontendlogin_pi1.redirects.afterLogin}\r
+\r
+        # Redirect after logout to page with id\r
+        afterLogout = {$plugin.tx_mbfrontendlogin_pi1.redirects.afterLogout}\r
+\r
+        # Reload actual page after login / logout - alternative to redirect afterLogin / afterLogout\r
+        reloadActualPage = {$plugin.tx_mbfrontendlogin_pi1.redirects.reloadActualPage}\r
+    }\r
+\r
+       mail {\r
+               # From\r
+               #from = from\r
+               \r
+               # Mail From\r
+               #fromMail = from@domain.de\r
+               \r
+               # Mail Reply\r
+               #replyMail = reply@domain.de\r
+               \r
+               # Mail Type\r
+               mailType = text/html\r
+               \r
+               # Mail Charset\r
+               mailCharset = utf-8\r
+       }\r
+}
\ No newline at end of file
diff --git a/mbfrontendlogin/flexform.xml b/mbfrontendlogin/flexform.xml
new file mode 100644 (file)
index 0000000..3cf8713
--- /dev/null
@@ -0,0 +1,35 @@
+<T3DataStructure>\r
+       <meta>\r
+               <langDisable>1</langDisable>\r
+       </meta>\r
+  <sheets>\r
+    <sDEF>\r
+      <ROOT>\r
+        <TCEforms>\r
+          <sheetTitle>LLL:EXT:mbfrontendlogin/locallang.xml:tabname</sheetTitle>\r
+        </TCEforms>\r
+        <type>array</type>\r
+        <el>                     \r
+                       <selectmode>\r
+                               <TCEforms>\r
+                                 <label>LLL:EXT:mbfrontendlogin/locallang.xml:selectmode</label>\r
+                                 <config>\r
+                                       <type>select</type>\r
+                                       <items type="array">\r
+                                               <numIndex index="0" type="array">\r
+                                                               <numIndex index="0">LLL:EXT:mbfrontendlogin/locallang.xml:selectmode_login</numIndex>\r
+                                                               <numIndex index="1">login_logout</numIndex>\r
+                                               </numIndex>\r
+                                               <numIndex index="1" type="array">\r
+                                                               <numIndex index="0">LLL:EXT:mbfrontendlogin/locallang.xml:selectmode_forgot_pw</numIndex>\r
+                                                               <numIndex index="1">forgot_pw</numIndex>\r
+                                               </numIndex>\r
+                                       </items>\r
+                                 </config>\r
+                               </TCEforms>  \r
+                       </selectmode>\r
+        </el>\r
+      </ROOT>\r
+    </sDEF>\r
+  </sheets>\r
+</T3DataStructure>
\ No newline at end of file
diff --git a/mbfrontendlogin/locallang.xml b/mbfrontendlogin/locallang.xml
new file mode 100644 (file)
index 0000000..31ee657
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>\r
+<T3locallang>\r
+       <meta type="array">\r
+               <type>module</type>\r
+               <description>Language labels for extension 'mbfrontendlogin'</description>\r
+       </meta>\r
+       <data type="array">\r
+               <languageKey index="default" type="array">\r
+                       <label index="pi1_title">MB :: Frontend User Login</label>\r
+                       <label index="pi1_plus_wiz_description">MB :: Feuser Login</label>\r
+      \r
+      <label index="tabname">Login Configuration</label>\r
+                       <label index="selectmode">View</label>\r
+                       <label index="selectmode_login">Login / Logout</label>\r
+                       <label index="selectmode_forgot_pw">Forgot PW</label>\r
+               </languageKey>\r
+               <languageKey index="de" type="array">\r
+                       <label index="pi1_title">MB :: Frontend User Login</label>\r
+                       <label index="pi1_plus_wiz_description">MB :: Feuser Login</label>\r
+      \r
+      <label index="tabname">Login Konfiguration</label>\r
+                       <label index="selectmode">Ansicht</label>\r
+                       <label index="selectmode_login">Login / Logout</label>\r
+                       <label index="selectmode_forgot_pw">Passwort vergessen</label>\r
+               </languageKey>\r
+       </data>\r
+</T3locallang>
\ No newline at end of file
diff --git a/mbfrontendlogin/locallang_db.xml b/mbfrontendlogin/locallang_db.xml
new file mode 100644 (file)
index 0000000..c614167
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>\r
+<T3locallang>\r
+       <meta type="array">\r
+               <type>database</type>\r
+               <description>Language labels for database tables/fields belonging to extension 'mbfrontendlogin'</description>\r
+       </meta>\r
+       <data type="array">\r
+               <languageKey index="default" type="array">\r
+                       <label index="tt_content.list_type_pi1">MB :: Frontend User Login</label>\r
+               </languageKey>\r
+               <languageKey index="de" type="array">\r
+                       <label index="tt_content.list_type_pi1">MB :: Frontend User Login</label>\r
+               </languageKey>\r
+       </data>\r
+</T3locallang>
\ No newline at end of file
diff --git a/mbfrontendlogin/pi1/ce_wiz.gif b/mbfrontendlogin/pi1/ce_wiz.gif
new file mode 100644 (file)
index 0000000..6fd4dbf
Binary files /dev/null and b/mbfrontendlogin/pi1/ce_wiz.gif differ
diff --git a/mbfrontendlogin/pi1/class.tx_mbfrontendlogin_pi1.php b/mbfrontendlogin/pi1/class.tx_mbfrontendlogin_pi1.php
new file mode 100644 (file)
index 0000000..927789b
--- /dev/null
@@ -0,0 +1,383 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2012 Markus Brunner <mail@markusbrunner-design.de>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+/**\r
+ * [CLASS/FUNCTION INDEX of SCRIPT]\r
+ *\r
+ * Hint: use extdeveval to insert/update function index above.\r
+ */\r
+\r
+require_once(PATH_tslib.'class.tslib_pibase.php');\r
+\r
+\r
+/**\r
+ * Plugin 'MB :: Frontend User Login' for the 'mbfrontendlogin' extension.\r
+ *\r
+ * @author     Markus Brunner <mail@markusbrunner-design.de>\r
+ * @package    TYPO3\r
+ * @subpackage tx_mbfrontendlogin\r
+ */\r
+class tx_mbfrontendlogin_pi1 extends tslib_pibase {\r
+       var $prefixId      = 'tx_mbfrontendlogin_pi1';          // Same as class name\r
+       var $scriptRelPath = 'pi1/class.tx_mbfrontendlogin_pi1.php';    // Path to this script relative to the extension dir.\r
+       var $extKey        = 'mbfrontendlogin'; // The extension key.\r
+        \r
+        protected $smarty;\r
+        protected $extPath;\r
+       \r
+       /**\r
+        * The main method of the PlugIn\r
+        *\r
+        * @param       string          $content: The PlugIn content\r
+        * @param       array           $conf: The PlugIn configuration\r
+        * @return      The content that is displayed on the website\r
+        */\r
+       function main($content, $conf) {\r
+               $this->conf = $conf;\r
+               $this->pi_setPiVarDefaults();\r
+               $this->pi_loadLL();\r
+               $this->pi_USER_INT_obj = 1;     // Configuring so caching is not expected. This value means that no cHash params are ever set. We do this, because it's a USER_INT object!\r
+    $this->extPath = t3lib_extMgm::siteRelPath($this->extKey);\r
+          \r
+    // init flexform\r
+    $this->pi_initPIflexForm();\r
+    $switchView = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'selectmode', 'sDEF');\r
+    \r
+    // init smarty\r
+    $this->initSmarty();\r
+    \r
+    // login user\r
+    $this->processAuth();\r
+\r
+    // switch view\r
+    switch($switchView) {\r
+      case 'forgot_pw':\r
+        $content = $this->showForgotPw();\r
+        break;\r
+      default:\r
+        $content = $this->showLoginLogout();\r
+        break;\r
+    }\r
+       \r
+               return $content;\r
+       }\r
+  \r
+  /**\r
+   * login view\r
+   */\r
+  protected function showLoginLogout() {\r
+    if(is_array($GLOBALS["TSFE"]->fe_user->user)) {\r
+\r
+      // assign variables\r
+      $this->getSmarty()->assign('action',$this->pi_getPageLink($GLOBALS['TSFE']->id));\r
+      $this->getSmarty()->assign('piVars',$this->piVars);\r
+      $this->getSmarty()->assign('user',$GLOBALS["TSFE"]->fe_user->user);\r
+      $this->getSmarty()->assign('login',$this->conf['login.']);\r
+\r
+      // logout view\r
+      $template = !empty($this->conf['smarty.']['templates.']['logout']) ? $this->conf['smarty.']['templates.']['logout'] : 'logout.tpl';\r
+\r
+      //get smarty content\r
+      $content = $this->getSmarty()->display($template,$this->extKey);\r
+    } else {\r
+\r
+      // assign variables\r
+      $this->getSmarty()->assign('action',$this->pi_getPageLink($GLOBALS['TSFE']->id));\r
+      $this->getSmarty()->assign('piVars',$this->piVars);\r
+      $this->getSmarty()->assign('security',$this->conf['security.']);\r
+      $this->getSmarty()->assign('login',$this->conf['login.']);\r
+      if(!empty($this->conf['login.']['forgotPasswordPageUid'])) {\r
+        $this->getSmarty()->assign('forgot_pw_link',$this->pi_getPageLink($this->conf['login.']['forgotPasswordPageUid']));\r
+      }\r
+\r
+      // login view\r
+      $template = !empty($this->conf['smarty.']['templates.']['login']) ? $this->conf['smarty.']['templates.']['login'] : 'login.tpl';\r
+\r
+      //get smarty content\r
+      $content = $this->getSmarty()->display($template,$this->extKey);\r
+    }\r
+    return $content;\r
+  }\r
+  \r
+  /**\r
+   * forgot pw view\r
+   */\r
+  protected function showForgotPw() {\r
+\r
+    // assign variables\r
+    $this->getSmarty()->assign('action',$this->pi_getPageLink($GLOBALS['TSFE']->id));\r
+    $this->getSmarty()->assign('piVars',$this->piVars);\r
+\r
+    // forgot_pw view\r
+    $template = !empty($this->conf['smarty.']['templates.']['forgot_pw']) ? $this->conf['smarty.']['templates.']['forgot_pw'] : 'forgot_pw.tpl';\r
+\r
+    //get smarty content\r
+    $content = $this->getSmarty()->display($template,$this->extKey);\r
+    return $content;\r
+  }\r
+        \r
+  /**\r
+   * Feuser Login Process\r
+   */\r
+  protected function processAuth() {\r
+\r
+    // login\r
+    if(!empty($this->piVars['login'])) {\r
+\r
+      // password\r
+      $password = $this->piVars['password'];\r
+      \r
+      // delete additional salting\r
+      $password = str_replace($this->conf['security.']['passwordSalt'],'',$password);\r
+      \r
+        // !saltedpasswords => MD5?\r
+        if(\r
+            (\r
+                !t3lib_extMgm::isLoaded('saltedpasswords') \r
+                ||\r
+                !tx_saltedpasswords_div::isUsageEnabled('FE')\r
+            )\r
+            &&\r
+            (\r
+              (\r
+                $this->conf['security.']['feuserPasswordIsMD5'] == 'true'\r
+                && $this->conf['security.']['enableFrontendMD5'] == 'false' \r
+              )\r
+              ||\r
+              (\r
+                $this->conf['security.']['feuserPasswordIsMD5'] == 'true'\r
+                && strlen($password) < 32\r
+              )\r
+            )\r
+        ) {\r
+          $password = md5($password);\r
+        }\r
+\r
+      // process login\r
+      $resUser = $GLOBALS["TYPO3_DB"]->exec_SELECTquery(\r
+        '*',\r
+        'fe_users',\r
+        $this->conf['login.']['feuserAuthField'].'='.$GLOBALS['TYPO3_DB']->fullQuoteStr($this->piVars['user'],'fe_users')\r
+      );\r
+      $user = $GLOBALS["TYPO3_DB"]->sql_fetch_assoc($resUser);\r
+      if($user !== FALSE) {\r
+        \r
+        // saltedpasswords\r
+        #$password = $password;  // plain-text password\r
+        $saltedPassword = $user['password'];  // salted user password hash\r
+        $success = FALSE; // keeps status if plain-text password matches given salted user password hash\r
+        if (t3lib_extMgm::isLoaded('saltedpasswords') && tx_saltedpasswords_div::isUsageEnabled('FE')) {\r
+          $objSalt = tx_saltedpasswords_salts_factory::getSaltingInstance($saltedPassword);\r
+          if (is_object($objSalt)) {\r
+            $success = $objSalt->checkPassword($password, $saltedPassword);\r
+          }\r
+        }\r
+        // no saltedpaswords\r
+        elseif($password == $user['password']) {\r
+          $success = TRUE;\r
+        }\r
+\r
+        if($success) {\r
+          $GLOBALS["TSFE"]->fe_user->createUserSession($user);\r
+          $GLOBALS["TSFE"]->fe_user->loginSessionStarted = TRUE;\r
+          $GLOBALS["TSFE"]->fe_user->user = $GLOBALS["TSFE"]->fe_user->fetchUserSession();\r
+\r
+          // process redirect\r
+          $host = (!empty($GLOBALS['TSFE']->baseUrl)) ?$GLOBALS['TSFE']->baseUrl : t3lib_div::getIndpEnv('TYPO3_REQUEST_HOST').'/';\r
+          if(!empty($this->conf['redirects.']['reloadActualPage'])) {\r
+            header("Location: ".$host.$this->pi_getPageLink(intval($GLOBALS['TSFE']->id)));\r
+          } elseif(!empty($this->conf['redirects.']['afterLogin'])) {\r
+            header("Location: ".$host.$this->pi_getPageLink(intval($this->conf['redirects.']['afterLogin'])));\r
+          }\r
+        }\r
+        return $success;\r
+      }\r
+      return false;\r
+    } \r
+\r
+    // logout\r
+    elseif(!empty($this->piVars['logout'])) {\r
+\r
+      // logout user\r
+      $GLOBALS["TSFE"]->fe_user->logoff();\r
+      #unset($GLOBALS["TSFE"]->fe_user->user);\r
+\r
+      // process redirect\r
+      $host = (!empty($GLOBALS['TSFE']->baseUrl)) ?$GLOBALS['TSFE']->baseUrl : t3lib_div::getIndpEnv('TYPO3_REQUEST_HOST').'/';\r
+      if(!empty($this->conf['redirects.']['reloadActualPage'])) {\r
+        header("Location: ".$host.$this->pi_getPageLink(intval($GLOBALS['TSFE']->id)));\r
+      } elseif(!empty($this->conf['redirects.']['afterLogout'])) {\r
+        header("Location: ".$host.$this->pi_getPageLink(intval($this->conf['redirects.']['afterLogout'])));\r
+      }\r
+\r
+      return true;\r
+    }\r
+    \r
+    // forgot pw\r
+    elseif(!empty($this->piVars['forgot_pw'])) {\r
+      \r
+      // get user\r
+      $user = mysql_real_escape_string($this->piVars['user']);\r
+      $query = 'SELECT uid,username,email FROM fe_users WHERE '.$this->conf['login.']['feuserAuthField'].'="'.$user.'" '.$this->cObj->enableFields('fe_users');\r
+      $res = $GLOBALS['TYPO3_DB']->sql_query($query);\r
+      $currentFeuser = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res);\r
+      \r
+      if(!empty($currentFeuser['uid'])) {\r
+        $generatedPw = $generatedPwDB = sha1($this->conf['security.']['passwordSalt'].time());\r
+        if (t3lib_extMgm::isLoaded('saltedpasswords') && tx_saltedpasswords_div::isUsageEnabled('FE')) {\r
+          $objSalt = tx_saltedpasswords_salts_factory::getSaltingInstance(NULL);\r
+          if (is_object($objSalt)) {\r
+            $generatedPwDB = $objSalt->getHashedPassword($generatedPw);\r
+          }\r
+        }\r
+        elseif($this->conf['security.']['feuserPasswordIsMD5'] == 'true') {\r
+          $generatedPwDB = md5($generatedPw);\r
+        }\r
+        $query = 'UPDATE fe_users SET password = "'.$generatedPwDB.'" WHERE uid='.intval($currentFeuser['uid']);\r
+        if($GLOBALS['TYPO3_DB']->sql_query($query)) {\r
+          $email = (!empty($currentFeuser['email'])) ? $currentFeuser['email'] : $currentFeuser['username'];\r
+          \r
+          // Mail for forgot_pw\r
+            // assign variables\r
+            $this->getSmarty()->assign('password',$generatedPw);\r
+\r
+            // forgot_pw view\r
+            $template = !empty($this->conf['smarty.']['templates.']['forgot_pw_mail']) ? $this->conf['smarty.']['templates.']['forgot_pw_mail'] : 'forgot_pw_mail.tpl';\r
+\r
+            //get smarty content for mail\r
+            $message = $this->getSmarty()->display($template,$this->extKey);\r
+          \r
+          if(!$this->sendNewMail($email, $message, $this->pi_getLL('forgot_pw'))) {\r
+            $this->getSmarty()->assign('error',$this->pi_getLL('error_forgot_pw_mail'));\r
+          } else {\r
+            $this->getSmarty()->assign('success',$this->pi_getLL('success_forgot_pw_mail'));\r
+          }\r
+          // test\r
+          #t3lib_div::debug(array('$email' => $email, '$message' => $message),'debug '.__FILE__.__LINE__);\r
+        } else {\r
+          $this->getSmarty()->assign('error',$this->pi_getLL('error_forgot_pw'));\r
+          return false;\r
+        }\r
+      } else {\r
+        $this->getSmarty()->assign('error',$this->pi_getLL('error_forgot_pw'));\r
+        return false;\r
+      }\r
+    }\r
+\r
+    // nothing prcessed\r
+    return false;\r
+  }\r
+  \r
+       /**\r
+        * Sends an E-Mail.\r
+        *\r
+        * @param string $to\r
+        * @param string $message\r
+        * @param string $subject\r
+        * @return bool (true if sent)\r
+        */\r
+       function sendNewMail($to, $message, $subject) {\r
+       \r
+               $fromName = $this->conf['mail.']['from'] ? $this->conf['mail.']['from'] : 'set TS; plugin.tx_mbfrontendlogin_pi1.mail.from';\r
+               $fromMail = $this->conf['mail.']['fromMail'] ? $this->conf['mail.']['fromMail'] : 'set TS; plugin.tx_mbfrontendlogin_pi1.mail.fromMail';\r
+               $replyMail = $this->conf['mail.']['replyMail'] ? $this->conf['mail.']['replyMail'] : 'set TS; plugin.tx_mbfrontendlogin_pi1.mail.replyMail';\r
+               $mailType = $this->conf['mail.']['mailType'] ? $this->conf['mail.']['mailType'] : 'text/html';\r
+               $mailCharset = $this->conf['mail.']['mailCharset'] ? $this->conf['mail.']['mailCharset'] : 'utf-8';\r
+               $mail_header  = "MIME-Version: 1.0\n";\r
+               ini_set('sendmail_from', $fromMail); \r
+               $mail_header  = "From: $fromName <$fromMail>\n";\r
+               $mail_header .= "Reply-To: $replyMail\n";\r
+               $mail_header .= "Content-Type: $mailType; charset=$mailCharset\n";\r
+\r
+               // Send the message\r
+               if ($mail = mail($to, $subject, $message , $mail_header)) {\r
+                       return true;\r
+               }\r
+               else {\r
+                       return false;\r
+               }       \r
+       }\r
+\r
+  /**====================================================================================================================================================\r
+  * Function to init the plugin (smarty, language)\r
+  */\r
+  function initSmarty(){\r
+    // Create a new instance of Smarty\r
+    $this->smarty = tx_smarty::smarty();\r
+    $templateDir = !empty($this->conf['smarty.']['template_dir']) ? $this->conf['smarty.']['template_dir'] : t3lib_extMgm::extPath($this->extKey).'res/smarty/templates/';\r
+    $this->getSmarty()->template_dir = $templateDir;\r
+    $compileDir = !empty($this->conf['smarty.']['compile_dir']) ? $this->conf['smarty.']['compile_dir'] : t3lib_extMgm::extPath($this->extKey).'res/smarty/templates_c/';\r
+    $this->getSmarty()->compile_dir = $compileDir;\r
+    $this->getSmarty()->compile_id = $this->extKey;\r
+    $this->getSmarty()->assign('baseURL',$GLOBALS['TSFE']->baseUrl);\r
+    $this->getSmarty()->assign('siteScript',$GLOBALS['TSFE']->siteScript);\r
+    $this->getSmarty()->assign('lang',$this->getLanguageArray());\r
+    $this->getSmarty()->assign('pageid',$GLOBALS['TSFE']->id);\r
+    $this->getSmarty()->assign('extPath',$this->extPath);\r
+    $this->getSmarty()->assign('prefixId',$this->prefixId);\r
+  }\r
+  /**\r
+   * @return Smarty Obj\r
+   */\r
+  public function getSmarty(){\r
+          return $this->smarty;\r
+  }\r
+  /**\r
+   * Load Language\r
+   * \r
+   * @return Language Array\r
+   */\r
+  public function getLanguageArray() {\r
+    $lang = array();\r
+    foreach ($this->LOCAL_LANG['default'] as $key => $value){\r
+      // TYPO3 4.6.* => value in [0]['target']\r
+      if(is_array($this->LOCAL_LANG[$this->LLkey][$key])) {\r
+        if($this->LOCAL_LANG[$this->LLkey][$key][0]['target']) {\r
+          $lang[$key] = $this->LOCAL_LANG[$this->LLkey][$key][0]['target'];\r
+        } else {\r
+          $lang[$key] = $value[0]['target'];\r
+        }\r
+      } \r
+      // older TYPO3 Versions\r
+      else {\r
+        if($this->LOCAL_LANG[$this->LLkey][$key]) {\r
+          $lang[$key] = $this->LOCAL_LANG[$this->LLkey][$key];\r
+        } else {\r
+          $lang[$key] = $value;\r
+        }\r
+      }\r
+    }                          \r
+    return $lang;              \r
+  }\r
+  \r
+  \r
+  \r
+}\r
+\r
+\r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/mbfrontendlogin/pi1/class.tx_mbfrontendlogin_pi1.php'])       {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/mbfrontendlogin/pi1/class.tx_mbfrontendlogin_pi1.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/mbfrontendlogin/pi1/class.tx_mbfrontendlogin_pi1_wizicon.php b/mbfrontendlogin/pi1/class.tx_mbfrontendlogin_pi1_wizicon.php
new file mode 100644 (file)
index 0000000..3011ba6
--- /dev/null
@@ -0,0 +1,90 @@
+<?php\r
+/***************************************************************\r
+*  Copyright notice\r
+*\r
+*  (c) 2012 Markus Brunner <mail@markusbrunner-design.de>\r
+*  All rights reserved\r
+*\r
+*  This script is part of the TYPO3 project. The TYPO3 project is\r
+*  free software; you can redistribute it and/or modify\r
+*  it under the terms of the GNU General Public License as published by\r
+*  the Free Software Foundation; either version 2 of the License, or\r
+*  (at your option) any later version.\r
+*\r
+*  The GNU General Public License can be found at\r
+*  http://www.gnu.org/copyleft/gpl.html.\r
+*\r
+*  This script is distributed in the hope that it will be useful,\r
+*  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+*  GNU General Public License for more details.\r
+*\r
+*  This copyright notice MUST APPEAR in all copies of the script!\r
+***************************************************************/\r
+/**\r
+ * [CLASS/FUNCTION INDEX of SCRIPT]\r
+ *\r
+ * Hint: use extdeveval to insert/update function index above.\r
+ */\r
+\r
+\r
+\r
+\r
+/**\r
+ * Class that adds the wizard icon.\r
+ *\r
+ * @author     Markus Brunner <mail@markusbrunner-design.de>\r
+ * @package    TYPO3\r
+ * @subpackage tx_mbfrontendlogin\r
+ */\r
+class tx_mbfrontendlogin_pi1_wizicon {\r
+\r
+                                       /**\r
+                                        * Processing the wizard items array\r
+                                        *\r
+                                        * @param       array           $wizardItems: The wizard items\r
+                                        * @return      Modified array with wizard items\r
+                                        */\r
+                                       function proc($wizardItems)     {\r
+                                               global $LANG;\r
+\r
+                                               $LL = $this->includeLocalLang();\r
+\r
+                                               $wizardItems['plugins_tx_mbfrontendlogin_pi1'] = array(\r
+                                                       'icon'=>t3lib_extMgm::extRelPath('mbfrontendlogin').'pi1/ce_wiz.gif',\r
+                                                       'title'=>$LANG->getLLL('pi1_title',$LL),\r
+                                                       'description'=>$LANG->getLLL('pi1_plus_wiz_description',$LL),\r
+                                                       'params'=>'&defVals[tt_content][CType]=list&defVals[tt_content][list_type]=mbfrontendlogin_pi1'\r
+                                               );\r
+\r
+                                               return $wizardItems;\r
+                                       }\r
+\r
+                                       /**\r
+                                        * Reads the [extDir]/locallang.xml and returns the $LOCAL_LANG array found in that file.\r
+                                        *\r
+                                        * @return      The array with language labels\r
+                                        */\r
+                                       function includeLocalLang()     {\r
+                                               $llFile = t3lib_extMgm::extPath('mbfrontendlogin').'locallang.xml';\r
+                                               $version =     class_exists('t3lib_utility_VersionNumber')\r
+                                                       ? t3lib_utility_VersionNumber::convertVersionNumberToInteger(TYPO3_version)\r
+                                                       : t3lib_div::int_from_ver(TYPO3_version);\r
+                                                 if ($version >= 4007000) {\r
+                                                                 $object = t3lib_div::makeInstance('t3lib_l10n_parser_Llxml');\r
+                                                                 $LOCAL_LANG =  $object->getParsedData($llFile, $GLOBALS['LANG']->lang);\r
+                                                 } else {\r
+                                                         $LOCAL_LANG =  t3lib_div::readLLXMLfile($llFile, $GLOBALS['LANG']->lang);\r
+                                                 }\r
+                                 \r
+                                                 return $LOCAL_LANG;\r
+                                       }\r
+                               }\r
+\r
+\r
+\r
+if (defined('TYPO3_MODE') && $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/mbfrontendlogin/pi1/class.tx_mbfrontendlogin_pi1_wizicon.php'])       {\r
+       include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/mbfrontendlogin/pi1/class.tx_mbfrontendlogin_pi1_wizicon.php']);\r
+}\r
+\r
+?>
\ No newline at end of file
diff --git a/mbfrontendlogin/pi1/clear.gif b/mbfrontendlogin/pi1/clear.gif
new file mode 100644 (file)
index 0000000..9ed1269
Binary files /dev/null and b/mbfrontendlogin/pi1/clear.gif differ
diff --git a/mbfrontendlogin/pi1/locallang.xml b/mbfrontendlogin/pi1/locallang.xml
new file mode 100644 (file)
index 0000000..32871d4
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>\r
+<T3locallang>\r
+       <meta type="array">\r
+               <type>module</type>\r
+               <description>Language labels for plugin &quot;tx_mbfrontendlogin_pi1&quot;</description>\r
+       </meta>\r
+       <data type="array">\r
+               <languageKey index="default" type="array">\r
+      <label index="user">User</label>\r
+      <label index="password">Password</label>\r
+      <label index="user_input">User</label>\r
+      <label index="password_input">Password</label>\r
+      <label index="login">Login</label>\r
+      <label index="logout">Logout</label>\r
+      <label index="error_login">An error occured during login. Maybe your Login-Informations are not correct!</label>\r
+      <label index="error_logout">An error occured during logout. Please try again later.</label>\r
+      <label index="error_forgot_pw">An error occured. Perhaps the given user is not (any more) registerd on the system!</label>\r
+      <label index="error_forgot_pw_mail">The mail could not be sent!</label>\r
+      <label index="success_forgot_pw_mail">The mail with your new password was sent successfully.</label>\r
+      <label index="logged_in_as">Your logged in as: </label>\r
+      <label index="forgot_pw">Forgot Password?</label>\r
+      <label index="desc_forgot_pw">You have forgotten your password? No problem. Enter your Username and submit the form. You will then get a new generated password to your e-mail-address (you should immediately change this afterwards).</label>\r
+      <label index="send_password">Send a new password</label>\r
+      <label index="forgot_pw_mail_headline">Forgot your password?</label>\r
+      <label index="forgot_pw_mail_new_password">Your new password:</label>\r
+    </languageKey>\r
+      <languageKey index="de" type="array">\r
+      <label index="user">Benutzer</label>\r
+      <label index="password">Passwort</label>\r
+      <label index="user_input">Benutzer</label>\r
+      <label index="password_input">Passwort</label>\r
+      <label index="login">Login</label>\r
+      <label index="logout">Logout</label>\r
+      <label index="error_login">Die Anmeldung ist fehlgeschlagen. Überprüfen Sie Ihre Anmeldedaten auf Korrektheit.</label>\r
+      <label index="error_logout">Die Abmeldung ist fehlgeschlagen. Versuchen Sie es später noch einmal.</label>\r
+      <label index="error_forgot_pw">Ein Fehler ist aufgetreten. Vielleicht gibt es diesen Benutzer im System nicht (mehr)!</label>\r
+      <label index="error_forgot_pw_mail">Die Mail konnte nicht verschickt werden!</label>\r
+      <label index="success_forgot_pw_mail">Die Mail mit ihrem neuen Passwort wurde erfolgreich versendet.</label>\r
+      <label index="logged_in_as">Sie sind eingeloggt als: </label>\r
+      <label index="forgot_pw">Passwort vergessen?</label>\r
+      <label index="desc_forgot_pw">Sie haben Ihr Passwort vergessen? Kein Problem. Geben Sie Ihren Benutzername ein und verschicken Sie das Formular. Sie werden anschließend eine E-Mail mit einem neuen generierten Passwort erhalten (dieses sollten Sie umgehend wieder abändern).</label>\r
+      <label index="send_password">Neues Passwort zuschicken</label>\r
+      <label index="forgot_pw_mail_headline">Passwort vergessen?</label>\r
+      <label index="forgot_pw_mail_new_password">Ihr neues Passwort:</label>\r
+    </languageKey>\r
+       </data>\r
+</T3locallang>
\ No newline at end of file
diff --git a/mbfrontendlogin/res/js/md5.js b/mbfrontendlogin/res/js/md5.js
new file mode 100644 (file)
index 0000000..e985f2a
--- /dev/null
@@ -0,0 +1,203 @@
+/**\r
+ * http://css-tricks.com/snippets/javascript/javascript-md5/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+CSS-TricksSnippets+%28CSS-Tricks+Snippet+Feed%29\r
+ */\r
+var MD5 = function (string) {\r
+\r
+   function RotateLeft(lValue, iShiftBits) {\r
+                  return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));\r
+   }\r
+\r
+   function AddUnsigned(lX,lY) {\r
+                  var lX4,lY4,lX8,lY8,lResult;\r
+                  lX8 = (lX & 0x80000000);\r
+                  lY8 = (lY & 0x80000000);\r
+                  lX4 = (lX & 0x40000000);\r
+                  lY4 = (lY & 0x40000000);\r
+                  lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);\r
+                  if (lX4 & lY4) {\r
+                                  return (lResult ^ 0x80000000 ^ lX8 ^ lY8);\r
+                  }\r
+                  if (lX4 | lY4) {\r
+                                  if (lResult & 0x40000000) {\r
+                                                  return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);\r
+                                  } else {\r
+                                                  return (lResult ^ 0x40000000 ^ lX8 ^ lY8);\r
+                                  }\r
+                  } else {\r
+                                  return (lResult ^ lX8 ^ lY8);\r
+                  }\r
+   }\r
+\r
+   function F(x,y,z) { return (x & y) | ((~x) & z); }\r
+   function G(x,y,z) { return (x & z) | (y & (~z)); }\r
+   function H(x,y,z) { return (x ^ y ^ z); }\r
+   function I(x,y,z) { return (y ^ (x | (~z))); }\r
+\r
+   function FF(a,b,c,d,x,s,ac) {\r
+                  a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));\r
+                  return AddUnsigned(RotateLeft(a, s), b);\r
+   };\r
+\r
+   function GG(a,b,c,d,x,s,ac) {\r
+                  a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));\r
+                  return AddUnsigned(RotateLeft(a, s), b);\r
+   };\r
+\r
+   function HH(a,b,c,d,x,s,ac) {\r
+                  a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));\r
+                  return AddUnsigned(RotateLeft(a, s), b);\r
+   };\r
+\r
+   function II(a,b,c,d,x,s,ac) {\r
+                  a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));\r
+                  return AddUnsigned(RotateLeft(a, s), b);\r
+   };\r
+\r
+   function ConvertToWordArray(string) {\r
+                  var lWordCount;\r
+                  var lMessageLength = string.length;\r
+                  var lNumberOfWords_temp1=lMessageLength + 8;\r
+                  var lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;\r
+                  var lNumberOfWords = (lNumberOfWords_temp2+1)*16;\r
+                  var lWordArray=Array(lNumberOfWords-1);\r
+                  var lBytePosition = 0;\r
+                  var lByteCount = 0;\r
+                  while ( lByteCount < lMessageLength ) {\r
+                                  lWordCount = (lByteCount-(lByteCount % 4))/4;\r
+                                  lBytePosition = (lByteCount % 4)*8;\r
+                                  lWordArray[lWordCount] = (lWordArray[lWordCount] | (string.charCodeAt(lByteCount)<<lBytePosition));\r
+                                  lByteCount++;\r
+                  }\r
+                  lWordCount = (lByteCount-(lByteCount % 4))/4;\r
+                  lBytePosition = (lByteCount % 4)*8;\r
+                  lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);\r
+                  lWordArray[lNumberOfWords-2] = lMessageLength<<3;\r
+                  lWordArray[lNumberOfWords-1] = lMessageLength>>>29;\r
+                  return lWordArray;\r
+   };\r
+\r
+   function WordToHex(lValue) {\r
+                  var WordToHexValue="",WordToHexValue_temp="",lByte,lCount;\r
+                  for (lCount = 0;lCount<=3;lCount++) {\r
+                                  lByte = (lValue>>>(lCount*8)) & 255;\r
+                                  WordToHexValue_temp = "0" + lByte.toString(16);\r
+                                  WordToHexValue = WordToHexValue + WordToHexValue_temp.substr(WordToHexValue_temp.length-2,2);\r
+                  }\r
+                  return WordToHexValue;\r
+   };\r
+\r
+   function Utf8Encode(string) {\r
+                  string = string.replace(/\r\n/g,"\n");\r
+                  var utftext = "";\r
+\r
+                  for (var n = 0; n < string.length; n++) {\r
+\r
+                                  var c = string.charCodeAt(n);\r
+\r
+                                  if (c < 128) {\r
+                                                  utftext += String.fromCharCode(c);\r
+                                  }\r
+                                  else if((c > 127) && (c < 2048)) {\r
+                                                  utftext += String.fromCharCode((c >> 6) | 192);\r
+                                                  utftext += String.fromCharCode((c & 63) | 128);\r
+                                  }\r
+                                  else {\r
+                                                  utftext += String.fromCharCode((c >> 12) | 224);\r
+                                                  utftext += String.fromCharCode(((c >> 6) & 63) | 128);\r
+                                                  utftext += String.fromCharCode((c & 63) | 128);\r
+                                  }\r
+\r
+                  }\r
+\r
+                  return utftext;\r
+   };\r
+\r
+   var x=Array();\r
+   var k,AA,BB,CC,DD,a,b,c,d;\r
+   var S11=7, S12=12, S13=17, S14=22;\r
+   var S21=5, S22=9 , S23=14, S24=20;\r
+   var S31=4, S32=11, S33=16, S34=23;\r
+   var S41=6, S42=10, S43=15, S44=21;\r
+\r
+   string = Utf8Encode(string);\r
+\r
+   x = ConvertToWordArray(string);\r
+\r
+   a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;\r
+\r
+   for (k=0;k<x.length;k+=16) {\r
+                  AA=a; BB=b; CC=c; DD=d;\r
+                  a=FF(a,b,c,d,x[k+0], S11,0xD76AA478);\r
+                  d=FF(d,a,b,c,x[k+1], S12,0xE8C7B756);\r
+                  c=FF(c,d,a,b,x[k+2], S13,0x242070DB);\r
+                  b=FF(b,c,d,a,x[k+3], S14,0xC1BDCEEE);\r
+                  a=FF(a,b,c,d,x[k+4], S11,0xF57C0FAF);\r
+                  d=FF(d,a,b,c,x[k+5], S12,0x4787C62A);\r
+                  c=FF(c,d,a,b,x[k+6], S13,0xA8304613);\r
+                  b=FF(b,c,d,a,x[k+7], S14,0xFD469501);\r
+                  a=FF(a,b,c,d,x[k+8], S11,0x698098D8);\r
+                  d=FF(d,a,b,c,x[k+9], S12,0x8B44F7AF);\r
+                  c=FF(c,d,a,b,x[k+10],S13,0xFFFF5BB1);\r
+                  b=FF(b,c,d,a,x[k+11],S14,0x895CD7BE);\r
+                  a=FF(a,b,c,d,x[k+12],S11,0x6B901122);\r
+                  d=FF(d,a,b,c,x[k+13],S12,0xFD987193);\r
+                  c=FF(c,d,a,b,x[k+14],S13,0xA679438E);\r
+                  b=FF(b,c,d,a,x[k+15],S14,0x49B40821);\r
+                  a=GG(a,b,c,d,x[k+1], S21,0xF61E2562);\r
+                  d=GG(d,a,b,c,x[k+6], S22,0xC040B340);\r
+                  c=GG(c,d,a,b,x[k+11],S23,0x265E5A51);\r
+                  b=GG(b,c,d,a,x[k+0], S24,0xE9B6C7AA);\r
+                  a=GG(a,b,c,d,x[k+5], S21,0xD62F105D);\r
+                  d=GG(d,a,b,c,x[k+10],S22,0x2441453);\r
+                  c=GG(c,d,a,b,x[k+15],S23,0xD8A1E681);\r
+                  b=GG(b,c,d,a,x[k+4], S24,0xE7D3FBC8);\r
+                  a=GG(a,b,c,d,x[k+9], S21,0x21E1CDE6);\r
+                  d=GG(d,a,b,c,x[k+14],S22,0xC33707D6);\r
+                  c=GG(c,d,a,b,x[k+3], S23,0xF4D50D87);\r
+                  b=GG(b,c,d,a,x[k+8], S24,0x455A14ED);\r
+                  a=GG(a,b,c,d,x[k+13],S21,0xA9E3E905);\r
+                  d=GG(d,a,b,c,x[k+2], S22,0xFCEFA3F8);\r
+                  c=GG(c,d,a,b,x[k+7], S23,0x676F02D9);\r
+                  b=GG(b,c,d,a,x[k+12],S24,0x8D2A4C8A);\r
+                  a=HH(a,b,c,d,x[k+5], S31,0xFFFA3942);\r
+                  d=HH(d,a,b,c,x[k+8], S32,0x8771F681);\r
+                  c=HH(c,d,a,b,x[k+11],S33,0x6D9D6122);\r
+                  b=HH(b,c,d,a,x[k+14],S34,0xFDE5380C);\r
+                  a=HH(a,b,c,d,x[k+1], S31,0xA4BEEA44);\r
+                  d=HH(d,a,b,c,x[k+4], S32,0x4BDECFA9);\r
+                  c=HH(c,d,a,b,x[k+7], S33,0xF6BB4B60);\r
+                  b=HH(b,c,d,a,x[k+10],S34,0xBEBFBC70);\r
+                  a=HH(a,b,c,d,x[k+13],S31,0x289B7EC6);\r
+                  d=HH(d,a,b,c,x[k+0], S32,0xEAA127FA);\r
+                  c=HH(c,d,a,b,x[k+3], S33,0xD4EF3085);\r
+                  b=HH(b,c,d,a,x[k+6], S34,0x4881D05);\r
+                  a=HH(a,b,c,d,x[k+9], S31,0xD9D4D039);\r
+                  d=HH(d,a,b,c,x[k+12],S32,0xE6DB99E5);\r
+                  c=HH(c,d,a,b,x[k+15],S33,0x1FA27CF8);\r
+                  b=HH(b,c,d,a,x[k+2], S34,0xC4AC5665);\r
+                  a=II(a,b,c,d,x[k+0], S41,0xF4292244);\r
+                  d=II(d,a,b,c,x[k+7], S42,0x432AFF97);\r
+                  c=II(c,d,a,b,x[k+14],S43,0xAB9423A7);\r
+                  b=II(b,c,d,a,x[k+5], S44,0xFC93A039);\r
+                  a=II(a,b,c,d,x[k+12],S41,0x655B59C3);\r
+                  d=II(d,a,b,c,x[k+3], S42,0x8F0CCC92);\r
+                  c=II(c,d,a,b,x[k+10],S43,0xFFEFF47D);\r
+                  b=II(b,c,d,a,x[k+1], S44,0x85845DD1);\r
+                  a=II(a,b,c,d,x[k+8], S41,0x6FA87E4F);\r
+                  d=II(d,a,b,c,x[k+15],S42,0xFE2CE6E0);\r
+                  c=II(c,d,a,b,x[k+6], S43,0xA3014314);\r
+                  b=II(b,c,d,a,x[k+13],S44,0x4E0811A1);\r
+                  a=II(a,b,c,d,x[k+4], S41,0xF7537E82);\r
+                  d=II(d,a,b,c,x[k+11],S42,0xBD3AF235);\r
+                  c=II(c,d,a,b,x[k+2], S43,0x2AD7D2BB);\r
+                  b=II(b,c,d,a,x[k+9], S44,0xEB86D391);\r
+                  a=AddUnsigned(a,AA);\r
+                  b=AddUnsigned(b,BB);\r
+                  c=AddUnsigned(c,CC);\r
+                  d=AddUnsigned(d,DD);\r
+                               }\r
+\r
+               var temp = WordToHex(a)+WordToHex(b)+WordToHex(c)+WordToHex(d);\r
+\r
+               return temp.toLowerCase();\r
+}
\ No newline at end of file
diff --git a/mbfrontendlogin/res/smarty/templates/forgot_pw.tpl b/mbfrontendlogin/res/smarty/templates/forgot_pw.tpl
new file mode 100644 (file)
index 0000000..879248a
--- /dev/null
@@ -0,0 +1,15 @@
+<form class="mbfelogin-form" action="{$baseURL}{$action}" method="post">\r
+    <fieldset>\r
+        {if $error}<div class="error">{$error}</div>{/if}\r
+        {if $success}\r
+          <div class="success">{$success}</div>\r
+        {else}\r
+        <h1>{$lang.forgot_pw}</h1>\r
+        <p>{$lang.desc_forgot_pw}</p>\r
+        <div class="form-row clearfix">\r
+            <label for="mbfelogin_user">{$lang.user}</label><input type="text" id="mbfelogin_user" name="{$prefixId}[user]" value="{if $piVars.user}{$piVars.user}{else}{$lang.user_input}{/if}" title="{$lang.user}" />\r
+        </div>\r
+        <input type="submit" id="mbfelogin_login" name="{$prefixId}[forgot_pw]" value="{$lang.send_password}" />\r
+        {/if}\r
+    </fieldset>\r
+</form>
\ No newline at end of file
diff --git a/mbfrontendlogin/res/smarty/templates/forgot_pw_mail.tpl b/mbfrontendlogin/res/smarty/templates/forgot_pw_mail.tpl
new file mode 100644 (file)
index 0000000..0069063
--- /dev/null
@@ -0,0 +1,30 @@
+<html>\r
+  <head>\r
+    <title>{$lang.forgot_pw_mail_headline}</title>\r
+    <style>\r
+      {literal}\r
+      html,\r
+      body,\r
+      * {\r
+        font-family: Arial, sans-serif;\r
+        font-weight: normal;\r
+        font-size: 11px;\r
+        line-height: 15px;\r
+      }\r
+      h1 {\r
+        font-size: 15px;\r
+        line-height: 19px;\r
+      }\r
+      h2 {\r
+        font-size: 13px;\r
+        line-height: 17px;\r
+      }\r
+      {/literal}\r
+    </style>\r
+  </head>\r
+  <body>\r
+    <h1>{$lang.forgot_pw_mail_headline}</h1>\r
+    <h2>{$baseURL}</h2>\r
+    <p>{$lang.forgot_pw_mail_new_password} {$password}</p>\r
+  </body>\r
+</html>
\ No newline at end of file
diff --git a/mbfrontendlogin/res/smarty/templates/login.tpl b/mbfrontendlogin/res/smarty/templates/login.tpl
new file mode 100644 (file)
index 0000000..0dcb985
--- /dev/null
@@ -0,0 +1,18 @@
+{if $security.enableFrontendMD5 == 'true'} <script src="{$baseURL}{$extPath}res/js/md5.js"></script>{/if}\r
+<form class="mbfelogin-form" action="{$baseURL}{$action}" method="post" {if $security.feuserPasswordIsASaltedPassword != 'true' && $security.enableFrontendMD5 == 'true'}onSubmit="document.getElementById('mbfelogin_password').value = MD5(document.getElementById('mbfelogin_password').value);"{/if}{if $security.feuserPasswordIsASaltedPassword == 'true' || $security.feuserPasswordIsMD5 == 'false'}onSubmit="document.getElementById('mbfelogin_password').value = '{$security.passwordSalt}'+document.getElementById('mbfelogin_password').value;"{/if}>\r
+    <fieldset>\r
+        {if $error}<div class="error">{$error}</div>{/if}\r
+        <div class="form-row clearfix">\r
+            <label for="mbfelogin_user">{$lang.user}</label><input type="text" id="mbfelogin_user" name="{$prefixId}[user]" value="{if $piVars.user}{$piVars.user}{else}{$lang.user_input}{/if}" title="{$lang.user}" />\r
+        </div>\r
+        <div class="form-row clearfix">\r
+            <label for="mbfelogin_password">{$lang.password}</label><input type="password" id="mbfelogin_password" name="{$prefixId}[password]" value="{if $piVars.password}{else}{$lang.password_input}{/if}" title="{$lang.password}" />\r
+        </div>\r
+        <input type="submit" id="mbfelogin_login" name="{$prefixId}[login]" value="{$lang.login}" />\r
+        {if $login.showForgotPasswordLink == 'true' && $forgot_pw_link}\r
+        <div class="forgot_pw clearfix">\r
+          <a href="{$forgot_pw_link}">{$lang.forgot_pw}</a>\r
+        </div>\r
+        {/if}\r
+    </fieldset>\r
+</form>
\ No newline at end of file
diff --git a/mbfrontendlogin/res/smarty/templates/logout.tpl b/mbfrontendlogin/res/smarty/templates/logout.tpl
new file mode 100644 (file)
index 0000000..06ff9c1
--- /dev/null
@@ -0,0 +1,10 @@
+<form class="mbfelogin-form" action="{$baseURL}{$action}" method="post">\r
+    <fieldset>\r
+        {if $error}<div class="error">{$error}</div>{/if}\r
+        <div class="form-row clearfix">\r
+            {assign var='logged_in_user' value=$login.feuserAuthField}\r
+            <label for="mbfelogin_logged_in_user">{$lang.logged_in_as}</label><span id="mbfelogin_logged_in_user">{$user.$logged_in_user}</span>\r
+        </div>\r
+        <input type="submit" id="mbfelogin_logout" name="{$prefixId}[logout]" value="{$lang.logout}" />\r
+    </fieldset>\r
+</form>
\ No newline at end of file