<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.open-xchange.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Tokenlogin_form</id>
	<title>Tokenlogin form - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.open-xchange.com/wiki/index.php?action=history&amp;feed=atom&amp;title=Tokenlogin_form"/>
	<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Tokenlogin_form&amp;action=history"/>
	<updated>2026-09-19T07:27:26Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.7</generator>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Tokenlogin_form&amp;diff=24829&amp;oldid=prev</id>
		<title>WolfgangRosenauer: /* Example */</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Tokenlogin_form&amp;diff=24829&amp;oldid=prev"/>
		<updated>2019-08-12T10:59:25Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Example&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:59, 12 August 2019&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l82&quot;&gt;Line 82:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 82:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             &amp;lt;input type=&amp;quot;password&amp;quot; name=&amp;quot;password&amp;quot; id=&amp;quot;password&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             &amp;lt;input type=&amp;quot;password&amp;quot; name=&amp;quot;password&amp;quot; id=&amp;quot;password&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Login&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Login&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;autologin&amp;quot; value=&amp;quot;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;true&lt;/del&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;            &amp;lt;!-- autologin=true could be leading to unexpected results if there still is a valid session associated with the used browser --&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;autologin&amp;quot; value=&amp;quot;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;false&lt;/ins&gt;&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;client&amp;quot; value=&amp;quot;open-xchange-appsuite&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;client&amp;quot; value=&amp;quot;open-xchange-appsuite&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;version&amp;quot; value=&amp;quot;Sample Loginpage&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;             &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;version&amp;quot; value=&amp;quot;Sample Loginpage&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key mediawiki:diff::1.12:old-24770:rev-24829 --&gt;
&lt;/table&gt;</summary>
		<author><name>WolfgangRosenauer</name></author>
	</entry>
	<entry>
		<id>https://wiki.open-xchange.com/wiki/index.php?title=Tokenlogin_form&amp;diff=24770&amp;oldid=prev</id>
		<title>WolfgangRosenauer: Created page with &quot;= Interactive token login form =  == Example == &lt;syntaxhighlight lang=&#039;html4strict&#039;&gt; &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&gt;...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.open-xchange.com/wiki/index.php?title=Tokenlogin_form&amp;diff=24770&amp;oldid=prev"/>
		<updated>2019-07-16T07:38:32Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;= Interactive token login form =  == Example == &amp;lt;syntaxhighlight lang=&amp;#039;html4strict&amp;#039;&amp;gt; &amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Interactive token login form =&lt;br /&gt;
&lt;br /&gt;
== Example ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;#039;html4strict&amp;#039;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;content-type&amp;quot; content=&amp;quot;text/html; charset=UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;meta http-equiv=&amp;quot;cache-control&amp;quot; content=&amp;quot;no-cache&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Login&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;script type=&amp;quot;text/javascript&amp;quot;&amp;gt;&lt;br /&gt;
function uuid() {&lt;br /&gt;
    function hex(len, x) {&lt;br /&gt;
        if (x === undefined) x = Math.random();&lt;br /&gt;
        var s = new Array(len);&lt;br /&gt;
        for (var i = 0; i &amp;lt; len; i++) {&lt;br /&gt;
            x *= 16;&lt;br /&gt;
            var digit = x &amp;amp; 15;&lt;br /&gt;
            s[i] = digit + (digit &amp;lt; 10 ? 48 : 87); // &amp;#039;0&amp;#039; and &amp;#039;a&amp;#039; - 10&lt;br /&gt;
        }&lt;br /&gt;
        return String.fromCharCode.apply(String, s);&lt;br /&gt;
    }&lt;br /&gt;
    return [hex(8), &amp;quot;-&amp;quot;, hex(4), &amp;quot;-4&amp;quot;, hex(3), &amp;quot;-&amp;quot;, hex(4, 0.5 + Math.random() / 4), &amp;quot;-&amp;quot;, hex(12)].join(&amp;quot;&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
window.addEventListener(&amp;quot;load&amp;quot;, function () {&lt;br /&gt;
  function sendData() {&lt;br /&gt;
    var XHR = new XMLHttpRequest();&lt;br /&gt;
    var target = &amp;quot;$BASEURL_TO_OX&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    // Bind the FormData object and the form element&lt;br /&gt;
    var FD = new FormData(form);&lt;br /&gt;
    // enhance with clientToken&lt;br /&gt;
    static_uuid = uuid();&lt;br /&gt;
    FD.append(&amp;#039;clientToken&amp;#039;, static_uuid);&lt;br /&gt;
    FD.append(&amp;#039;jsonResponse&amp;#039;, true);&lt;br /&gt;
&lt;br /&gt;
    // Define what happens on successful data submission&lt;br /&gt;
    XHR.addEventListener(&amp;quot;load&amp;quot;, function(event) {&lt;br /&gt;
      // successful login; now redirect into the session&lt;br /&gt;
      var response=JSON.parse(event.target.responseText);&lt;br /&gt;
      // check for errors&lt;br /&gt;
      if (response.error || !response.url) {&lt;br /&gt;
        error_message.innerHTML = response.error;&lt;br /&gt;
      } else {&lt;br /&gt;
        // finally point to the target&lt;br /&gt;
        window.location.replace(target + response.url + &amp;quot;&amp;amp;clientToken=&amp;quot; + static_uuid);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // Define what happens in case of error&lt;br /&gt;
    XHR.addEventListener(&amp;quot;error&amp;quot;, function(event) {&lt;br /&gt;
      alert(&amp;#039;Oops! Something went wrong.&amp;#039;);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // Set up our request&lt;br /&gt;
    XHR.open(&amp;quot;POST&amp;quot;, target + &amp;quot;/ajax/login?action=tokenLogin&amp;amp;authId=&amp;quot; + uuid());&lt;br /&gt;
&lt;br /&gt;
    // The data sent is what the user provided in the form&lt;br /&gt;
    XHR.send(new URLSearchParams(FD));&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // Access the form element...&lt;br /&gt;
  var form = document.getElementById(&amp;quot;myForm&amp;quot;);&lt;br /&gt;
  var error_message = document.getElementById(&amp;quot;error&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // ...and take over its submit event.&lt;br /&gt;
  form.addEventListener(&amp;quot;submit&amp;quot;, function (event) {&lt;br /&gt;
    event.preventDefault();&lt;br /&gt;
&lt;br /&gt;
    sendData();&lt;br /&gt;
  });&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;form id=&amp;#039;myForm&amp;#039;&amp;gt;&lt;br /&gt;
            &amp;lt;label for=&amp;quot;login&amp;quot;&amp;gt;Username: &amp;lt;/label&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;login&amp;quot; id=&amp;quot;login&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
            &amp;lt;label for=&amp;quot;password&amp;quot;&amp;gt;Password:  &amp;lt;/label&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;password&amp;quot; name=&amp;quot;password&amp;quot; id=&amp;quot;password&amp;quot;&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Login&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;autologin&amp;quot; value=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;client&amp;quot; value=&amp;quot;open-xchange-appsuite&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;version&amp;quot; value=&amp;quot;Sample Loginpage&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;input type=&amp;quot;hidden&amp;quot; name=&amp;quot;uiWebPath&amp;quot; value=&amp;quot;/appsuite/&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/form&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;#039;error&amp;#039; /&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>WolfgangRosenauer</name></author>
	</entry>
</feed>