diff options
| -rw-r--r-- | BitInstaller.php | 31 | ||||
| -rw-r--r-- | install_inc.php | 16 | ||||
| -rw-r--r-- | templates/install_login.tpl | 26 |
3 files changed, 66 insertions, 7 deletions
diff --git a/BitInstaller.php b/BitInstaller.php index 560123d..20f478a 100644 --- a/BitInstaller.php +++ b/BitInstaller.php @@ -47,6 +47,37 @@ class BitInstaller extends BitSystem { } /** + * Minimal login just for install in case users tables have been modified + * + * @access public + * @return void + */ + function login( $pLogin, $pPassword, $pChallenge=NULL, $pResponse=NULL ) { + global $gBitUser; + + $isvalid = false; + + $loginCol = strpos( $pLogin, '@' ) ? 'email' : 'login'; + + if( $gBitUser->validate( $pLogin, $pPassword, $pChallenge, $pResponse ) ) { + $userInfo = $gBitUser->getUserInfo( array( $loginCol => $pLogin ) ); + + if( $userInfo['user_id'] != ANONYMOUS_USER_ID ) { + // User is valid and not due to change pass.. + $gBitUser->mUserId = $userInfo['user_id']; + $gBitUser->mInfo = $userInfo; + $gBitUser->loadPermissions( TRUE ); + + $sessionId = session_id(); + $gBitUser->sendSessionCookie( $sessionId ); + $gBitUser->updateSession( $sessionId ); + } + } + + return $gBitUser->isAdmin(); + } + + /** * loadUpgradeFiles This will load all files in the dir <pckage>/admin/upgrades/<version>.php with a version greater than the one installed * * @param array $pPackage diff --git a/install_inc.php b/install_inc.php index bf56f55..74acd9f 100644 --- a/install_inc.php +++ b/install_inc.php @@ -149,13 +149,17 @@ if( empty( $_REQUEST['baseurl'] )) { $bit_root_url = BIT_ROOT_URL; } -$errors = ''; +global $gBitUser; +if( !empty( $_REQUEST['login'] ) ) { + $gBitInstaller->login( $_REQUEST['user'], $_REQUEST['pass'] ); +} elseif( !empty( $_COOKIE[$gBitUser->getSiteCookieName()] ) && ( $gBitUser->mUserId = $gBitUser->getUserIdFromCookieHash( $_COOKIE[$gBitUser->getSiteCookieName()] ))) { + $userInfo = $gBitUser->getUserInfo( array( 'user_id' => $gBitUser->mUserId ) ); -// do some session stuff -// check_session_save_path(); -if( !isset( $_SESSION )) { -// session_start(); -// vd( "session start" ); + if( $userInfo['user_id'] != ANONYMOUS_USER_ID ) { + // User is valid and not due to change pass.. + $gBitUser->mInfo = $userInfo; + $gBitUser->loadPermissions( TRUE ); + } } // if we came from anywhere appart from some installer page, nuke all settings in the _SESSION and set first_install FALSE diff --git a/templates/install_login.tpl b/templates/install_login.tpl index 6fc76b8..13c344b 100644 --- a/templates/install_login.tpl +++ b/templates/install_login.tpl @@ -2,7 +2,31 @@ <h1>{$title|default:"You must be logged in as an administrator to run the installer."}</h1> -{include file="bitpackage:users/login_inc.tpl"} +{form name="login" legend="Please sign in to continue" secure=$gBitSystem->isFeatureActive("site_https_login_required")} + <div class="row"> + {formfeedback error="$error"} + {formlabel label="Username or Email" for="user"} + {forminput} + <input type="text" name="user" id="user" size="25" /> + {formhelp note=""} + {/forminput} + </div> + + <div class="row"> + {formlabel label="Password" for="pass"} + {forminput} + <input type="password" name="pass" id="pass" size="25" /> + {/forminput} + </div> + + <div class="row submit"> + <input type="submit" name="login" value="{tr}Log in to {$gBitSystem->getConfig('site_title')|default:"this site"}{/tr}" /> + {if $gBitSystem->isFeatureActive('site_https_login_required') || $smarty.server.HTTPS=='on'} + {biticon iname="emblem-readonly" ipackage="icons" iexplain="Secure Login"} + {/if} + </div> +{/form} + <div class="center"> <a href="http://www.bitweaver.org/"> |
