Index: typo3/js/loginrefresh.js
===================================================================
--- typo3/js/loginrefresh.js (Revision 6177)
+++ typo3/js/loginrefresh.js (Arbeitskopie)
@@ -27,272 +27,288 @@
/**
* AJAX login refresh box
*/
+Ext.namespace('Ext.ux.TYPO3');
-/**
- * Functions for session-expiry detection:
- */
-function busy() { //
- this.loginRefreshed = busy_loginRefreshed;
- this.openRefreshWindow = busy_OpenRefreshWindow;
- this.openLockedWaitWindow = busy_openLockedWaitWindow;
- this.busyloadTime=0;
- this.openRefreshW=0;
- this.reloginCancelled=0;
- this.earlyRelogin=0;
- this.locked=0;
+Ext.ux.TYPO3.loginRefresh = Ext.extend(Ext.util.Observable, {
+ locked: 0,
+ interval: 60,
+
+ constructor: function(config) {
+ config = config || {};
+ Ext.apply(this, config);
+ this.initComponents();
+ this.loadingTask = {
+ run: function(){
+ // interval run
+ Ext.Ajax.request({
+ url: "ajax.php",
+ params: {
+ "ajaxID": "BackendLogin::isTimedOut",
+ "skipSessionUpdate": 1
+ },
+ method: "GET",
+ success: function(response, options) {
+ var result = Ext.util.JSON.decode(response.responseText);
+ if(result.login.locked) {
+ this.locked = 1;
+ Ext.MessageBox.show({
+ title: TYPO3.LLL.core.please_wait,
+ msg: TYPO3.LLL.core.be_locked,
+ width: 500,
+ icon: Ext.MessageBox.INFO,
+ closable: false
+ });
+ } else {
+ if (this.locked === 1) {
+ this.locked = 0;
+ Ext.MessageBox.hide();
+ }
+ }
+ if (result.login.timed_out && Ext.getCmp("loginformWindow")) {
+ Ext.getCmp("login_username").value = TYPO3.configuration.username;
+ this.stopTimer();
+ this.progressWindow.show();
+ }
+ },
+ failure: function() {
- // starts the timer and resets the earlyRelogin variable so that
- // the countdown works properly.
- this.startTimer = function() {
- this.earlyRelogin = 0;
- this.timer.start();
- }
+ },
+ scope: this
+ });
+ },
+ interval: this.interval * 1000,
+ scope: this
+ };
+ this.startTimer();
+ Ext.ux.TYPO3.loginRefresh.superclass.constructor.call(this, config);
+ },
+
+
+ initComponents: function() {
+ var loginPanel = new Ext.FormPanel({
+ url: "ajax.php",
+ id: "loginform",
+ title: TYPO3.LLL.core.refresh_login_title,
+ defaultType: 'textfield',
+ scope: this,
+ width: "100%",
+ bodyStyle: "padding: 5px 5px 3px 5px; border-width: 0; margin-bottom: 7px;",
- this.stopTimer = function() {
- this.timer.stop();
- }
+ items: [{
+ xtype: "panel",
+ bodyStyle: "margin-bottom: 7px; border: none;",
+ html: TYPO3.LLL.core.login_expired
+ },{
+ fieldLabel: TYPO3.LLL.core.refresh_login_password,
+ name: "p_field",
+ width: 250,
+ id: "password",
+ inputType: "password"
+ },{
+ inputType: "hidden",
+ name: "username",
+ id: "login_username",
+ value: ""
+ },{
+ inputType: "hidden",
+ name: "userident",
+ id: "userident",
+ value: ""
+ }, {
+ inputType: "hidden",
+ name: "challenge",
+ id: "challenge",
+ value: TYPO3.configuration.challenge
+ }
+ ],
+ keys:({
+ key: Ext.EventObject.ENTER,
+ fn: this.submitForm,
+ scope: this
+ }),
+ buttons: [{
+ text: TYPO3.LLL.core.refresh_login_button,
+ formBind: true,
+ handler: this.submitForm
+ }, {
+ text: TYPO3.LLL.core.refresh_logout_button,
+ formBind: true,
+ handler: function() {
+ top.location.href = TYPO3.configuration.siteUrl + TYPO3.configuration.TYPO3_mainDir + "logout.php";
+ }
+ }]
+ });
+ this.loginRefreshWindow = new Ext.Window({
+ id: "loginformWindow",
+ width: 450,
+ autoHeight: true,
+ closable: true,
+ resizable: false,
+ plain: true,
+ border: false,
+ modal: true,
+ draggable: false,
+ items: [loginPanel]
+ });
+
+ var progressControl = new Ext.ProgressBar({
+ autoWidth: true,
+ autoHeight: true,
+ value: 30,
+ });
+
+ this.progressWindow = new Ext.Window({
+ closable: false,
+ resizable: false,
+ draggable: false,
+ modal: true,
+ id: "loginRefreshWindow",
+ items: [{
+ xtype: "panel",
+ bodyStyle: "padding: 5px 5px 3px 5px; border-width: 0; margin-bottom: 7px;",
+ bodyBorder: false,
+ autoHeight: true,
+ autoWidth: true,
+ html: TYPO3.LLL.core.login_about_to_expire
+ },
+ progressControl
+ ],
+ title: TYPO3.LLL.core.login_about_to_expire_title,
+ width: 450,
- // simple timer that polls the server to determine imminent timeout.
- this.timer = new Ajax.PeriodicalUpdater("","ajax.php", {
- method: "get",
- frequency: 60,
- decay: 1,
- parameters: "ajaxID=BackendLogin::isTimedOut&skipSessionUpdate=1",
- onSuccess: function(e) {
- var login = e.responseJSON.login.evalJSON();
- if(login.locked) {
- busy.locked = 1;
- busy.openLockedWaitWindow();
- } else if(login.timed_out) {
- busy.openRefreshWindow();
- }
- if (busy.locked && !login.locked && !login.timed_out) {
- busy.locked = 0;
- Ext.MessageBox.hide();
- }
- }
- });
+ buttons: [{
+ text: TYPO3.LLL.core.refresh_login_refresh_button,
+ handler: function() {
+ refresh = Ext.Ajax.request({
+ url: "ajax.php",
+ params: {
+ "ajaxID": "BackendLogin::isTimedOut"
+ },
+ method: "GET",
+ scope: this
+ });
+ TYPO3.loginRefresh.progressWindow.hide();
+ progressControl.reset();
+ TYPO3.loginRefresh.startTimer();
+ }
+ }, {
+ text: TYPO3.LLL.core.refresh_direct_logout_button,
+ handler: function() {
+ top.location.href = TYPO3.configuration.siteUrl + TYPO3.configuration.TYPO3_mainDir + "logout.php";
+ }
+ }]
+ });
+ this.progressWindow.on('show', function(){
+ progressControl.wait({
+ interval: 1000,
+ duration: 30000,
+ increment: 32,
+ text: String.format(TYPO3.LLL.core.refresh_login_countdown, '30'),
+ fn: function(win){
+ if (TYPO3.configuration.showRefreshLoginPopup) {
+ //log off for sure
+ Ext.Ajax.request({
+ url: "ajax.php",
+ params: {
+ "ajaxID": "BackendLogin::logout"
+ },
+ method: "GET",
+ scope: this,
+ success: function(response, opts) {
+ TYPO3.loginRefresh.showLoginPopup();
+ },
+ failure: function(response, opts) {
+ alert("something went wrong");
+ }
+ });
+ } else {
+ Ext.getCmp("loginRefreshWindow").hide();
+ Ext.getCmp("loginformWindow").show();
+ }
+ }
+ });
- // this function runs the countdown and opens the login window
- // as soon as the countdown expires.
- this.countDown = function(progressControl, progressTextFormatPlural, progressTextFormatSingular, secondsRemaining, totalSeconds) {
-
- if(busy.earlyRelogin == 0) {
- if(secondsRemaining > 1) {
- progressControl.updateText(String.format(progressTextFormatPlural, secondsRemaining));
- progressControl.updateProgress(secondsRemaining/(1.0*totalSeconds));
- setTimeout(function () {
- busy.countDown(progressControl, progressTextFormatPlural, progressTextFormatSingular,secondsRemaining - 1, totalSeconds);
- }, 1000);
- } else if(secondsRemaining > 0) {
- progressControl.updateText(String.format(progressTextFormatSingular, secondsRemaining));
- progressControl.updateProgress(secondsRemaining/(1.0*totalSeconds));
- setTimeout(function () {
- busy.countDown(progressControl, progressTextFormatPlural, progressTextFormatSingular,secondsRemaining - 1, totalSeconds);
- }, 1000);
+ });
+ progressControl.on('update', function(control, value, text) {
+ var rest = 30-(parseInt(value*30));
+ if (rest === 1) {
+ control.updateText(String.format(TYPO3.LLL.core.refresh_login_countdown_singular, rest));
} else {
- busy.openRefreshW = 1;
- busy.openLogin();
+ control.updateText(String.format(TYPO3.LLL.core.refresh_login_countdown, rest));
}
- }
- };
-
- // Closes the countdown window and opens a new one with a login form.
- this.openLogin = function() {
- var login;
- doChallengeResponse = function(superchallenged) {
- password = $$("#loginform form")[0].p_field.value;
-
- if (password) {
- if (superchallenged) {
- password = MD5(password); // this makes it superchallenged!!
- }
- str = $("login_username").value+":"+password+":"+$("challenge").value;
- $("userident").value = MD5(str);
- $("password").value = "";
-
- return true;
- }
- }
-
- submitForm = function() {
- if(TS.securityLevel == "superchallenged") {
- doChallengeResponse(1);
- } else if (TS.securityLevel == "challenged") {
- doChallengeResponse(0);
+ });
+
+ this.loginRefreshWindow.on('close', function(){
+ TYPO3.loginRefresh.startTimer();
+ });
+ },
+
+ showLoginPopup: function() {
+ Ext.getCmp("loginRefreshWindow").hide();
+ vHWin=window.open("login_frameset.php","relogin_"+TS.uniqueID,"height=450,width=700,status=0,menubar=0,location=1");
+ vHWin.focus();
+ },
+
+ startTimer: function() {
+ Ext.TaskMgr.start(this.loadingTask);
+ },
+
+ stopTimer: function() {
+ Ext.TaskMgr.stop(this.loadingTask);
+ },
+
+ submitForm: function() {
+ var form = Ext.getCmp("loginform").getForm();
+ var fields = form.getValues();
+ if (fields.p_field === "") {
+ Ext.Msg.alert(TYPO3.LLL.core.refresh_login_failed, TYPO3.LLL.core.refresh_login_emptyPassword);
+ } else {
+ if (TS.securityLevel == "superchallenged") {
+ fields.p_field = MD5(fields.p_field);
+ }
+ if (TS.securityLevel == "superchallenged" || TS.securityLevel == "challenged") {
+ fields.userident = MD5(fields.username + ":" + fields.p_field + ":" + fields.challenge);
} else {
- $("userident").value = $$("#loginform form")[0].p_field.value;
- $("password").value= "";
+ fields.userident = fields.p_field;
}
+ fields.p_field = "";
+ form.setValues(fields);
- login.getForm().submit({
- method: "post",
+ form.submit({
+ method: "POST",
waitTitle: TYPO3.LLL.core.waitTitle,
waitMsg: " ",
- params: "ajaxID=BackendLogin::login&login_status=login",
- success: function() {
- win.close();
- setTimeout("busy.startTimer()", 2000);
-
+ params: {
+ "ajaxID": "BackendLogin::login",
+ "login_status": "login"
},
-
- failure: function() {
- // TODO: add failure to notification system instead of alert
- // Ext.tip.msg("Login failed", "Username or Password incorrect!");
- Ext.Msg.alert(TYPO3.LLL.core.refresh_login_failed, TYPO3.LLL.core.refresh_login_failed_message);
+ success: function(form, action) {
+ // response object is "login" so real result will be available in failure handler
+ Ext.getCmp("loginformWindow").hide();
+ TYPO3.loginRefresh.startTimer();
+ },
+ failure: function(form, action) {
+ var result = Ext.util.JSON.decode(action.response.responseText).login;
+ if (result.success) {
+ // User is logged in
+ Ext.getCmp("loginformWindow").hide();
+ TYPO3.loginRefresh.startTimer();
+ } else {
+ // TODO: add failure to notification system instead of alert
+ Ext.Msg.alert(TYPO3.LLL.core.refresh_login_failed, TYPO3.LLL.core.refresh_login_failed_message);
+ }
}
});
}
-
- logout = new Ajax.Request("ajax.php", {
- method: "get",
- parameters: "ajaxID=BackendLogin::logout"
- });
-
- Ext.onReady(function(){
- login = new Ext.FormPanel({
- url: "ajax.php",
- id: "loginform",
- title: TYPO3.LLL.core.refresh_login_title,
- defaultType: "textfield",
- width: "100%",
- bodyStyle: "padding: 5px 5px 3px 5px; border-width: 0; margin-bottom: 7px;",
-
- items: [{
- xtype: "panel",
- bodyStyle: "margin-bottom: 7px; border: none;",
- html: TYPO3.LLL.core.login_expired
- },{
- fieldLabel: TYPO3.LLL.core.refresh_login_username,
- name: "username",
- id: "login_username",
- allowBlank: false,
- width: 250
- },{
- fieldLabel: TYPO3.LLL.core.refresh_login_password,
- name: "p_field",
- width: 250,
- id: "password",
- inputType: "password"
- },{
- xtype: "hidden",
- name: "userident",
- id: "userident",
- value: ""
- }, {
- xtype: "hidden",
- name: "challenge",
- id: "challenge",
- value: TYPO3.configuration.challenge
- }
- ],
- keys:({
- key: Ext.EventObject.ENTER,
- fn: submitForm,
- scope: this
- }),
- buttons: [{
- text: TYPO3.LLL.core.refresh_login_button,
- formBind: true,
- handler: submitForm
- }, {
- text: TYPO3.LLL.core.refresh_logout_button,
- formBind: true,
- handler: function() {
- top.location.href = TYPO3.configuration.siteUrl + TYPO3.configuration.TYPO3_mainDir;
- }
- }]
- });
- win.close();
- win = new Ext.Window({
- width: 450,
- autoHeight: true,
- closable: false,
- resizable: false,
- plain: true,
- border: false,
- modal: true,
- draggable: false,
- items: [login]
- });
- win.show();
- });
}
-}
+
+});
-function busy_loginRefreshed() { //
- this.openRefreshW=0;
- this.earlyRelogin=0;
-}
-function busy_openLockedWaitWindow() {
- Ext.MessageBox.show({
- title: TYPO3.LLL.core.please_wait,
- msg: TYPO3.LLL.core.be_locked,
- width: 500,
- icon: Ext.MessageBox.INFO,
- closable: false
- });
-}
-function busy_OpenRefreshWindow() {
- this.openRefreshW = 1;
-
- busy.stopTimer();
-
- var seconds = 30;
- var progressTextFormatSingular = TYPO3.LLL.core.refresh_login_countdown_singular;
- var progressTextFormatPlural = TYPO3.LLL.core.refresh_login_countdown;
- var progressText = String.format(progressTextFormatPlural, seconds);
- var progressControl = new Ext.ProgressBar({
- autoWidth: true,
- autoHeight: true,
- value: 1,
- text: progressText
- });
-
- win = new Ext.Window({
- closable: false,
- resizable: false,
- draggable: false,
- modal: true,
- items: [{
- xtype: "panel",
- bodyStyle: "padding: 5px 5px 3px 5px; border-width: 0; margin-bottom: 7px;",
- bodyBorder: false,
- autoHeight: true,
- autoWidth: true,
- html: TYPO3.LLL.core.login_about_to_expire
- },
- progressControl
- ],
- title: TYPO3.LLL.core.login_about_to_expire_title,
- width: 450,
-
- buttons: [{
- text: TYPO3.LLL.core.refresh_login_refresh_button,
- handler: function() {
- refresh = new Ajax.Request("ajax.php", {
- method: "get",
- parameters: "ajaxID=BackendLogin::refreshLogin"
- });
- win.close();
- busy.earlyRelogin = 1;
- setTimeout("busy.startTimer()", 2000);
- }
- }, {
- text: TYPO3.LLL.core.refresh_direct_logout_button,
- handler: function() {
- top.location.href = TYPO3.configuration.siteUrl + TYPO3.configuration.TYPO3_mainDir + "logout.php";
- }
- }]
- });
- win.show();
- busy.countDown(progressControl, progressTextFormatPlural, progressTextFormatSingular, seconds, seconds);
-}
-
/**
* Initialize login expiration warning object
*/
-var busy = new busy();
-busy.loginRefreshed();
+Ext.onReady(function() {
+ TYPO3.loginRefresh = new Ext.ux.TYPO3.loginRefresh();
+});
Index: typo3/index.php
===================================================================
--- typo3/index.php (Revision 6177)
+++ typo3/index.php (Arbeitskopie)
@@ -387,13 +387,16 @@
t3lib_div::redirect($this->redirectToURL);
} else {
$TBE_TEMPLATE->JScode.=$TBE_TEMPLATE->wrapScriptTags('
- if (parent.opener && parent.opener.busy) {
- parent.opener.busy.loginRefreshed();
+ if (parent.opener && (parent.opener.busy || parent.opener.TYPO3.loginRefresh)) {
+ if (parent.opener.TYPO3.loginRefresh) {
+ parent.opener.TYPO3.loginRefresh.startTimer();
+ } else {
+ parent.opener.busy.loginRefreshed();
+ }
parent.close();
}
');
}
-
} elseif (!$BE_USER->user['uid'] && $this->commandLI) {
sleep(5); // Wrong password, wait for 5 seconds
}
Index: typo3/classes/class.ajaxlogin.php
===================================================================
--- typo3/classes/class.ajaxlogin.php (Revision 6177)
+++ typo3/classes/class.ajaxlogin.php (Arbeitskopie)
@@ -44,11 +44,12 @@
*/
public function login($params = array(), TYPO3AJAX &$ajaxObj = null) {
if ($GLOBALS['BE_USER']->user['uid']) {
- $json = '{success: true}';
+ $json = array('success' => TRUE);
} else {
- $json = '{success: false}';
+ $json = array('success' => FALSE);
}
$ajaxObj->addContent('login', $json);
+ $ajaxObj->setContentFormat('json');
}
/**
@@ -61,10 +62,11 @@
public function logout($params = array(), TYPO3AJAX &$ajaxObj = null) {
$GLOBALS['BE_USER']->logoff();
if($GLOBALS['BE_USER']->user['uid']) {
- $ajaxObj->addContent('logout', '{sucess: false}');
+ $ajaxObj->addContent('logout', array('success' => FALSE));
} else {
- $ajaxObj->addContent('logout', '{sucess: true}');
+ $ajaxObj->addContent('logout', array('success' => TRUE));
}
+ $ajaxObj->setContentFormat('json');
}
/**
@@ -77,7 +79,8 @@
*/
public function refreshLogin($params = array(), TYPO3AJAX &$ajaxObj = null) {
$GLOBALS['BE_USER']->checkAuthentication();
- $ajaxObj->addContent('refresh', '{sucess: true}');
+ $ajaxObj->addContent('refresh', array('success' => TRUE));
+ $ajaxObj->setContentFormat('json');
}
@@ -90,27 +93,25 @@
*/
function isTimedOut($params = array(), TYPO3AJAX &$ajaxObj = null) {
if(is_object($GLOBALS['BE_USER'])) {
-
+ $ajaxObj->setContentFormat('json');
if (@is_file(PATH_typo3conf.'LOCK_BACKEND')) {
- $ajaxObj->addContent('login', '{timed_out: false,locked:true}');
+ $ajaxObj->addContent('login', array('timed_out' => FALSE, 'locked' => TRUE));
$ajaxObj->setContentFormat('json');
} else {
- $GLOBALS['BE_USER']->fetchUserSession(true);
+ $GLOBALS['BE_USER']->fetchUserSession(TRUE);
$ses_tstamp = $GLOBALS['BE_USER']->user['ses_tstamp'];
$timeout = $GLOBALS['BE_USER']->auth_timeout_field;
// if 120 seconds from now is later than the session timeout, we need to show the refresh dialog.
// 120 is somewhat arbitrary to allow for a little room during the countdown and load times, etc.
- if($GLOBALS['EXEC_TIME'] >= $ses_tstamp+$timeout-120) {
- $ajaxObj->addContent('login', '{timed_out: true}');
- $ajaxObj->setContentFormat('json');
+ if ($GLOBALS['EXEC_TIME'] >= $ses_tstamp + $timeout - 120) {
+ $ajaxObj->addContent('login', array('timed_out' => TRUE));
} else {
- $ajaxObj->addContent('login', '{timed_out: false}');
- $ajaxObj->setContentFormat('json');
+ $ajaxObj->addContent('login', array('timed_out' => FALSE));
}
}
} else {
- $ajaxObj->addContent('login', '{success: false, error: "No BE_USER object"}');
+ $ajaxObj->addContent('login', array('success' => FALSE, 'error' => 'No BE_USER object'));
}
}
}
@@ -119,4 +120,4 @@
include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['typo3/classes/class.ajaxlogin.php']);
}
-?>
+?>
\ No newline at end of file
Index: typo3/backend.php
===================================================================
--- typo3/backend.php (Revision 6177)
+++ typo3/backend.php (Arbeitskopie)
@@ -375,16 +375,18 @@
'workspaceFrontendPreviewEnabled' => (($GLOBALS['BE_USER']->workspace != 0 && !$GLOBALS['BE_USER']->user['workspace_preview']) ? 'false' : 'true'),
'veriCode' => $GLOBALS['BE_USER']->veriCode(),
'denyFileTypes' => PHP_EXTENSIONS_DEFAULT,
+ 'showRefreshLoginPopup' => isset($GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup']) ? intval($GLOBALS['TYPO3_CONF_VARS']['BE']['showRefreshLoginPopup']) : FALSE,
)) . ';
TYPO3.LLL = {
core : ' . json_encode(array(
'waitTitle' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_logging_in') ,
'refresh_login_failed' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_failed'),
'refresh_login_failed_message' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_failed_message'),
- 'refresh_login_title' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_title'),
+ 'refresh_login_title' => sprintf($GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_title'), htmlspecialchars($GLOBALS['BE_USER']->user['username'])),
'login_expired' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.login_expired'),
'refresh_login_username' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_username'),
'refresh_login_password' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_password'),
+ 'refresh_login_emptyPassword' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_emptyPassword'),
'refresh_login_button' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_login_button'),
'refresh_logout_button' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.refresh_logout_button'),
'please_wait' => $GLOBALS['LANG']->sL('LLL:EXT:lang/locallang_core.xml:mess.please_wait'),
Index: typo3/sysext/openid/ext_localconf.php
===================================================================
--- typo3/sysext/openid/ext_localconf.php (Revision 6177)
+++ typo3/sysext/openid/ext_localconf.php (Arbeitskopie)
@@ -25,4 +25,6 @@
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['setup']['accessLevelCheck']['tx_openid_mod_setup'] = 'EXT:openid/class.tx_openid_mod_setup.php';
+// Use Popup for refresh login
+$TYPO3_CONF_VARS['BE']['showRefreshLoginPopup'] = 1;
?>
\ No newline at end of file
Index: typo3/sysext/lang/locallang_core.xml
===================================================================
--- typo3/sysext/lang/locallang_core.xml (Revision 6177)
+++ typo3/sysext/lang/locallang_core.xml (Arbeitskopie)
@@ -164,11 +164,12 @@
-
-
+
+
+
Index: typo3/sysext/rsaauth/ext_localconf.php
===================================================================
--- typo3/sysext/rsaauth/ext_localconf.php (Revision 6177)
+++ typo3/sysext/rsaauth/ext_localconf.php (Arbeitskopie)
@@ -33,4 +33,6 @@
// Add a hook to show Backend warnings
$GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['t3lib/class.t3lib_befunc.php']['displayWarningMessages'][$_EXTKEY] = 'EXT:' . $_EXTKEY . '/hooks/class.tx_rsaauth_backendwarnings.php:tx_rsaauth_backendwarnings';
+// Use Popup for refresh login
+$TYPO3_CONF_VARS['BE']['showRefreshLoginPopup'] = 1;
?>
\ No newline at end of file