diff options
Diffstat (limited to 'register.php')
| -rwxr-xr-x | register.php | 95 |
1 files changed, 78 insertions, 17 deletions
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' ]); |
