diff options
| -rwxr-xr-x | hauth_register.php | 120 | ||||
| -rwxr-xr-x | register.php | 95 | ||||
| -rwxr-xr-x | role_register.php | 181 | ||||
| -rw-r--r-- | templates/register.tpl | 2 |
4 files changed, 199 insertions, 199 deletions
diff --git a/hauth_register.php b/hauth_register.php new file mode 100755 index 0000000..2a41b8e --- /dev/null +++ b/hauth_register.php @@ -0,0 +1,120 @@ +<?php + +use Bitweaver\KernelTools; +/** + * register new user + * + * @copyright (c) 2004-15 bitweaver.org + * + * @package users + * @subpackage functions + */ + +/** + * required setup + */ +// Avoid user hell +use Bitweaver\HttpStatusCodes; +use Bitweaver\Users\BitHybridAuthManager; + +if( isset( $_REQUEST['tk'] ) ) { + unset( $_REQUEST['tk'] ); +} +require_once '../kernel/includes/setup_inc.php'; + +include_once KERNEL_PKG_INCLUDE_PATH . 'notification_lib.php'; + +$gBitSystem->verifyFeature( 'users_allow_register' ); + +BitHybridAuthManager::loadSingleton(); +global $gBitHybridAuthManager; +$gBitSmarty->assign( 'hybridProviders', $gBitHybridAuthManager->getEnabledProviders() ); + +// Everything below here is needed for registration + +use Bitweaver\Users\BaseAuth; + +if( !empty( $_REQUEST['returnto'] ) ) { + $_SESSION['returnto'] = $_REQUEST['returnto']; +} elseif( !empty( $_SERVER['HTTP_REFERER'] ) && !strpos( $_SERVER['HTTP_REFERER'], 'signin.php' ) && !strpos( $_SERVER['HTTP_REFERER'], 'hauth_register.php' ) ) { + $from = parse_url( $_SERVER['HTTP_REFERER'] ); + if( !empty( $from['path'] ) && $from['host'] == $_SERVER['SERVER_NAME'] ) { + $_SESSION['loginfrom'] = $from['path'].'?'.( !empty( $from['query'] ) ? $from['query'] : '' ); + } +} + +if( $gBitUser->isRegistered() ) { + KernelTools::bit_redirect( $gBitSystem->getDefaultPage() ); +} +if( isset( $_REQUEST["register"] ) ) { + + $pRegisterHash = $_REQUEST; + + include USERS_PKG_INCLUDE_PATH . 'register_inc.php'; + + $gBitSmarty->assign( 'reg', $pRegisterHash ); + +} else { + if( $gBitSystem->isFeatureActive( 'custom_user_fields' ) ) { + $fields= explode( ',', $gBitSystem->getConfig( 'custom_user_fields' ) ); + KernelTools::trim_array( $fields ); + $gBitSmarty->assign('customFields', $fields); + } + + for( $i=0; $i < BaseAuth::getAuthMethodCount(); $i++ ) { + $instance = BaseAuth::init( $i ); + if( $instance && $instance->canManageAuth() ) { + $auth_reg_fields = $instance->getRegistrationFields(); + foreach( array_keys( $auth_reg_fields ) as $auth_field ) { + $auth_reg_fields[$auth_field]['value'] = $auth_reg_fields[$auth_field]['default']; + } + $gBitSmarty->assign( 'auth_reg_fields', $auth_reg_fields ); + break; + } + } +} + +$languages = []; +$languages = $gBitLanguage->listLanguages(); +$gBitSmarty->assign( 'languages', $languages ); +$gBitSmarty->assign( 'gBitLanguage', $gBitLanguage ); + +// Get flags here +$flags = []; +$h = opendir( USERS_PKG_PATH.'icons/flags/' ); +while( $file = readdir( $h )) { + if( strstr( $file, ".gif" )) { + $parts = explode( '.', $file ); + $flags[] = $parts[0]; + } +} +closedir( $h ); +sort( $flags ); +$gBitSmarty->assign('flags', $flags); + + +// include preferences settings from other packages - these will be included as individual tabs +$packages = []; +foreach( $gBitSystem->mPackages as $package ) { + if( $gBitSystem->isPackageActive( $package['name'] )) { + $php_file = $package['path'].'user_register_inc.php'; + $tpl_file = $package['path'].'templates/user_register_inc.tpl'; + if( file_exists( $tpl_file )) { + if( file_exists( $php_file )) { + require $php_file; + } + $p=[]; + $p['template'] = $tpl_file; + $packages[] = $p; + } + } +} +$gBitSmarty->assign('packages',$packages ); + +if( !empty( $_REQUEST['error'] ) ) { + $gBitSmarty->assign( 'error', $_REQUEST['error'] ); + $gBitSystem->setHttpStatus( HttpStatusCodes::HTTP_UNAUTHORIZED ); +} + +$gBitSmarty->assign( 'metaKeywords', 'Login, Sign in, Registration, Register, Create new account' ); +$gBitSystem->display('bitpackage:users/register.tpl', 'Register' , [ 'display_mode' => 'display' ]);
\ No newline at end of file diff --git a/register.php b/register.php index 2e7912e..d9220eb 100755 --- a/register.php +++ b/register.php @@ -1,8 +1,6 @@ <?php - -use Bitweaver\KernelTools; /** - * register new user + * register new user - role model * * @copyright (c) 2004-15 bitweaver.org * @@ -13,27 +11,27 @@ use Bitweaver\KernelTools; /** * required setup */ -// Avoid user hell +namespace Bitweaver\Liberty; + use Bitweaver\HttpStatusCodes; -use Bitweaver\Users\BitHybridAuthManager; +use Bitweaver\Users\BaseAuth; +use Bitweaver\Wiki\BitPage; +use Bitweaver\KernelTools; +// Avoid user hell if( isset( $_REQUEST['tk'] ) ) { unset( $_REQUEST['tk'] ); } + require_once '../kernel/includes/setup_inc.php'; -include_once KERNEL_PKG_INCLUDE_PATH . 'notification_lib.php'; +include_once KERNEL_PKG_INCLUDE_PATH.'notification_lib.php'; +// no longer supported, needs update - spiderr require_once( USERS_PKG_INCLUDE_PATH.'recaptchalib.php' ); $gBitSystem->verifyFeature( 'users_allow_register' ); -BitHybridAuthManager::loadSingleton(); -global $gBitHybridAuthManager; -$gBitSmarty->assign( 'hybridProviders', $gBitHybridAuthManager->getEnabledProviders() ); - // Everything below here is needed for registration -use Bitweaver\Users\BaseAuth; - if( !empty( $_REQUEST['returnto'] ) ) { $_SESSION['returnto'] = $_REQUEST['returnto']; } elseif( !empty( $_SERVER['HTTP_REFERER'] ) && !strpos( $_SERVER['HTTP_REFERER'], 'signin.php' ) && !strpos( $_SERVER['HTTP_REFERER'], 'register.php' ) ) { @@ -48,16 +46,73 @@ if( $gBitUser->isRegistered() ) { } if( isset( $_REQUEST["register"] ) ) { - $pRegisterHash = $_REQUEST; + $reg = $_REQUEST; - include USERS_PKG_INCLUDE_PATH . 'register_inc.php'; + // Register the new user + $newUser = new RolePermUser(); + if( $newUser->preRegisterVerify( $reg ) && $newUser->register( $reg ) ) { + $gBitUser->mUserId = $newUser->mUserId; + + // add user to user-selected role + if ( !empty( $_REQUEST['role'] ) ) { + $roleInfo = $gBitUser->getRoleInfo( $_REQUEST['role'] ); + if ( empty($roleInfo) || $roleInfo['is_public'] != 'y' ) { + $errors[] = "You can't use this role"; + $gBitSmarty->assign( 'errors', $errors ); + } else { + $userId = $newUser->getUserId(); + $gBitUser->addUserToRole( $userId, $_REQUEST['role'] ); + $gBitUser->storeUserDefaultRole( $userId, $_REQUEST['role'] ); + } + } + + // set the user to private if necessary. defaults to public + if(!empty($_REQUEST['users_information']) && $_REQUEST['users_information'] == 'private'){ + $newUser->storePreference('users_information','private'); + } + + // requires validation by email + if( $gBitSystem->isFeatureActive( 'users_validate_user' ) ) { + $gBitSmarty->assign('msg',KernelTools::tra('You will receive an email with information to login for the first time into this site')); + $gBitSmarty->assign('showmsg','y'); + } else { + if( !empty( $_SESSION['loginfrom'] ) ) { + unset( $_SESSION['loginfrom'] ); + } + // registration login, fake the cookie so the session gets updated properly. + if( empty($_COOKIE[$gBitUser->getSiteCookieName()] ) ) { + $_COOKIE[$gBitUser->getSiteCookieName()] = session_id(); + } + // login with email since login is not technically required in the form, as it can be auto generated during store + $afterRegDefault = $newUser->login( $reg['email'], $reg['password'], false, false ); + $url = $gBitSystem->getConfig( 'after_reg_url' )?BIT_ROOT_URI.$gBitSystem->getConfig( 'after_reg_url' ):$afterRegDefault; + // return to referring page + if( !empty( $_SESSION['returnto'] ) ) { + $url = $_SESSION['returnto']; + // forward to role post-registration page + } elseif ( !empty( $_REQUEST['role'] ) && !empty( $roleInfo['after_registration_page'] ) ) { + if ( $newUser->verifyId( $roleInfo['after_registration_page'] ) ) { + $url = BIT_ROOT_URI."index.php?content_id=".$roleInfo['after_registration_page']; + } elseif( strpos( $roleInfo['after_registration_page'], '/' ) === false ) { + $url = BitPage::getDisplayUrlFromHash( $roleInfo['after_registration_page'] ); + } else { + $url = $roleInfo['after_registration_page']; + } + } + header( 'Location: '.$url ); + exit; + } + } else { + $gBitSystem->setHttpStatus( HttpStatusCodes::HTTP_BAD_REQUEST ); + $gBitSmarty->assign( 'errors', $newUser->mErrors ); + } - $gBitSmarty->assign( 'reg', $pRegisterHash ); + $gBitSmarty->assign( 'reg', $reg ); } else { if( $gBitSystem->isFeatureActive( 'custom_user_fields' ) ) { $fields= explode( ',', $gBitSystem->getConfig( 'custom_user_fields' ) ); - KernelTools::trim_array( $fields ); + trim_array( $fields ); $gBitSmarty->assign('customFields', $fields); } @@ -92,6 +147,12 @@ closedir( $h ); sort( $flags ); $gBitSmarty->assign('flags', $flags); +$listHash = [ + 'is_public' => 'y', + 'sort_mode' => [ 'is_default_asc', 'role_desc_asc' ], +]; +$roleList = $gBitUser->getAllRoles( $listHash ); +$gBitSmarty->assign( 'roleList', $roleList ); // include preferences settings from other packages - these will be included as individual tabs $packages = []; @@ -117,4 +178,4 @@ if( !empty( $_REQUEST['error'] ) ) { } $gBitSmarty->assign( 'metaKeywords', 'Login, Sign in, Registration, Register, Create new account' ); -$gBitSystem->display('bitpackage:users/register.tpl', 'Register' , [ 'display_mode' => 'display' ]);
\ No newline at end of file +$gBitSystem->display('bitpackage:users/role_register.tpl', 'Register' , [ 'display_mode' => 'display' ]); diff --git a/role_register.php b/role_register.php deleted file mode 100755 index ee0665e..0000000 --- a/role_register.php +++ /dev/null @@ -1,181 +0,0 @@ -<?php -/** - * register new user - role model - * - * @copyright (c) 2004-15 bitweaver.org - * - * @package users - * @subpackage functions - */ - -/** - * required setup - */ -namespace Bitweaver\Liberty; - -use Bitweaver\HttpStatusCodes; -use Bitweaver\Users\BaseAuth; -use Bitweaver\Wiki\BitPage; -use Bitweaver\KernelTools; - -// Avoid user hell -if( isset( $_REQUEST['tk'] ) ) { - unset( $_REQUEST['tk'] ); -} - -require_once '../kernel/includes/setup_inc.php'; - -include_once KERNEL_PKG_INCLUDE_PATH.'notification_lib.php'; -// no longer supported, needs update - spiderr require_once( USERS_PKG_INCLUDE_PATH.'recaptchalib.php' ); - -$gBitSystem->verifyFeature( 'users_allow_register' ); - -// Everything below here is needed for registration - -if( !empty( $_REQUEST['returnto'] ) ) { - $_SESSION['returnto'] = $_REQUEST['returnto']; -} elseif( !empty( $_SERVER['HTTP_REFERER'] ) && !strpos( $_SERVER['HTTP_REFERER'], 'signin.php' ) && !strpos( $_SERVER['HTTP_REFERER'], 'role_register.php' ) ) { - $from = parse_url( $_SERVER['HTTP_REFERER'] ); - if( !empty( $from['path'] ) && $from['host'] == $_SERVER['SERVER_NAME'] ) { - $_SESSION['loginfrom'] = $from['path'].'?'.( !empty( $from['query'] ) ? $from['query'] : '' ); - } -} - -if( $gBitUser->isRegistered() ) { - KernelTools::bit_redirect( $gBitSystem->getDefaultPage() ); -} -if( isset( $_REQUEST["register"] ) ) { - - $reg = $_REQUEST; - - // Register the new user - $newUser = new RolePermUser(); - if( $newUser->preRegisterVerify( $reg ) && $newUser->register( $reg ) ) { - $gBitUser->mUserId = $newUser->mUserId; - - // add user to user-selected role - if ( !empty( $_REQUEST['role'] ) ) { - $roleInfo = $gBitUser->getRoleInfo( $_REQUEST['role'] ); - if ( empty($roleInfo) || $roleInfo['is_public'] != 'y' ) { - $errors[] = "You can't use this role"; - $gBitSmarty->assign( 'errors', $errors ); - } else { - $userId = $newUser->getUserId(); - $gBitUser->addUserToRole( $userId, $_REQUEST['role'] ); - $gBitUser->storeUserDefaultRole( $userId, $_REQUEST['role'] ); - } - } - - // set the user to private if necessary. defaults to public - if(!empty($_REQUEST['users_information']) && $_REQUEST['users_information'] == 'private'){ - $newUser->storePreference('users_information','private'); - } - - // requires validation by email - if( $gBitSystem->isFeatureActive( 'users_validate_user' ) ) { - $gBitSmarty->assign('msg',KernelTools::tra('You will receive an email with information to login for the first time into this site')); - $gBitSmarty->assign('showmsg','y'); - } else { - if( !empty( $_SESSION['loginfrom'] ) ) { - unset( $_SESSION['loginfrom'] ); - } - // registration login, fake the cookie so the session gets updated properly. - if( empty($_COOKIE[$gBitUser->getSiteCookieName()] ) ) { - $_COOKIE[$gBitUser->getSiteCookieName()] = session_id(); - } - // login with email since login is not technically required in the form, as it can be auto generated during store - $afterRegDefault = $newUser->login( $reg['email'], $reg['password'], false, false ); - $url = $gBitSystem->getConfig( 'after_reg_url' )?BIT_ROOT_URI.$gBitSystem->getConfig( 'after_reg_url' ):$afterRegDefault; - // return to referring page - if( !empty( $_SESSION['returnto'] ) ) { - $url = $_SESSION['returnto']; - // forward to role post-registration page - } elseif ( !empty( $_REQUEST['role'] ) && !empty( $roleInfo['after_registration_page'] ) ) { - if ( $newUser->verifyId( $roleInfo['after_registration_page'] ) ) { - $url = BIT_ROOT_URI."index.php?content_id=".$roleInfo['after_registration_page']; - } elseif( strpos( $roleInfo['after_registration_page'], '/' ) === false ) { - $url = BitPage::getDisplayUrlFromHash( $roleInfo['after_registration_page'] ); - } else { - $url = $roleInfo['after_registration_page']; - } - } - header( 'Location: '.$url ); - exit; - } - } else { - $gBitSystem->setHttpStatus( HttpStatusCodes::HTTP_BAD_REQUEST ); - $gBitSmarty->assign( 'errors', $newUser->mErrors ); - } - - $gBitSmarty->assign( 'reg', $reg ); - -} else { - if( $gBitSystem->isFeatureActive( 'custom_user_fields' ) ) { - $fields= explode( ',', $gBitSystem->getConfig( 'custom_user_fields' ) ); - trim_array( $fields ); - $gBitSmarty->assign('customFields', $fields); - } - - for( $i=0; $i < BaseAuth::getAuthMethodCount(); $i++ ) { - $instance = BaseAuth::init( $i ); - if( $instance && $instance->canManageAuth() ) { - $auth_reg_fields = $instance->getRegistrationFields(); - foreach( array_keys( $auth_reg_fields ) as $auth_field ) { - $auth_reg_fields[$auth_field]['value'] = $auth_reg_fields[$auth_field]['default']; - } - $gBitSmarty->assign( 'auth_reg_fields', $auth_reg_fields ); - break; - } - } -} - -$languages = []; -$languages = $gBitLanguage->listLanguages(); -$gBitSmarty->assign( 'languages', $languages ); -$gBitSmarty->assign( 'gBitLanguage', $gBitLanguage ); - -// Get flags here -$flags = []; -$h = opendir( USERS_PKG_PATH.'icons/flags/' ); -while( $file = readdir( $h )) { - if( strstr( $file, ".gif" )) { - $parts = explode( '.', $file ); - $flags[] = $parts[0]; - } -} -closedir( $h ); -sort( $flags ); -$gBitSmarty->assign('flags', $flags); - -$listHash = [ - 'is_public' => 'y', - 'sort_mode' => [ 'is_default_asc', 'role_desc_asc' ], -]; -$roleList = $gBitUser->getAllRoles( $listHash ); -$gBitSmarty->assign( 'roleList', $roleList ); - -// include preferences settings from other packages - these will be included as individual tabs -$packages = []; -foreach( $gBitSystem->mPackages as $package ) { - if( $gBitSystem->isPackageActive( $package['name'] )) { - $php_file = $package['path'].'user_register_inc.php'; - $tpl_file = $package['path'].'templates/user_register_inc.tpl'; - if( file_exists( $tpl_file )) { - if( file_exists( $php_file )) { - require $php_file; - } - $p=[]; - $p['template'] = $tpl_file; - $packages[] = $p; - } - } -} -$gBitSmarty->assign('packages',$packages ); - -if( !empty( $_REQUEST['error'] ) ) { - $gBitSmarty->assign( 'error', $_REQUEST['error'] ); - $gBitSystem->setHttpStatus( HttpStatusCodes::HTTP_UNAUTHORIZED ); -} - -$gBitSmarty->assign( 'metaKeywords', 'Login, Sign in, Registration, Register, Create new account' ); -$gBitSystem->display('bitpackage:users/role_register.tpl', 'Register' , [ 'display_mode' => 'display' ]); diff --git a/templates/register.tpl b/templates/register.tpl index 13b724c..ca2ac82 100644 --- a/templates/register.tpl +++ b/templates/register.tpl @@ -1,6 +1,6 @@ {strip} -{form class="col-md-6 col-xs-12 form-horizontal" action="`$smarty.const.USERS_PKG_URL`register.php" enctype="multipart/form-data" legend="Register as a new user" secure=$gBitSystem->isFeatureActive("site_https_login_required")} +{form class="col-md-6 col-xs-12 form-horizontal" action="`$smarty.const.USERS_PKG_URL`hauth_register.php" enctype="multipart/form-data" legend="Register as a new user" secure=$gBitSystem->isFeatureActive("site_https_login_required")} {foreach from=$reg.CUSTOM ?? [] item='custom' key='custom_name'} <input type="hidden" name="CUSTOM[{$custom_name}]" value="{$custom}"/> {/foreach} |
