Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 Programming Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 08-24-2009, 10:03 PM
MatthewWegner MatthewWegner is offline
 
Join Date: Feb 2007
Posts: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default Logging In/Authenticating By Userid

Hey Guys,

I've spent a few hours searching/experimenting with different things, but I haven't quite found what I'm looking for. Here's what I'm doing, or trying to do:

I'm bridging our user database to vBulletin. I have all of that working--I can easily create/delete/update vBulletin accounts when our user accounts are updated. Due to differences in password schemes I would prefer to log in by userid instead of setting the bbuserid/bbpassword cookies.

What is the simplest way to accomplish this?

I have tried to hook into init_startup and global_start with something like:

Code:
// verify credentials to our cookies/system, get vbulletin userid

require_once(DIR . '/includes/functions_login.php');

$vbulletin->userinfo['userid'] = 2; // or some id

process_new_login('', true, '');
In global_start this almost works--I log in, but I get a "you do not have permission to access this page" message. When I comment out the hook the login appears to stick, so the cookies set by process_new_login() are indeed valid, but not for the rest of this page's execution.

Is there any way to call process_new_login() and populate userinfo in-line, without requiring a redirect/refresh?

Or is there a different approach I should be taking here? I feel like I'm chasing my tail with no real leads. It seems like such a simple thing, too. Thanks for any help!

--------------- Added [DATE]1251173103[/DATE] at [TIME]1251173103[/TIME] ---------------

I guess the simpler question is:

I have a vBulletin userid. How do I inject a session/login before any vB code checks for it?
Reply With Quote
  #2  
Old 08-25-2009, 07:17 AM
Marco van Herwaarden Marco van Herwaarden is offline
 
Join Date: Jul 2004
Posts: 25,415
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

The easiest way is really to just set the cookie.
Reply With Quote
  #3  
Old 08-25-2009, 09:01 PM
MatthewWegner MatthewWegner is offline
 
Join Date: Feb 2007
Posts: 2
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Thanks for the tip! I got this working now. Our solution looks like:

Code:
// if we're logged in, override cookies so vB will log us in properly
if(App::$playerIsRegistered)
{
	$vbUser = App::$player->getVBulletin();
	$_COOKIE['bbuserid'] = VBHelpers::GetUserID($vbUser);
	$_COOKIE['bbpassword'] = VBHelpers::GetCookiePassword($vbUser);
}
else
{
	$_COOKIE['bbsessionhash'] = '';
	$_COOKIE['bbuserid'] = '';
	$_COOKIE['bbpassword']= '';	
}
I'm not actually setting real browser cookies, just overriding PHP's internal arrays (this is hooked into init_startup, so it's before vB ever reads them). I still need to work out a solution for actions that require double logins--deleting a bunch of threads at once as a moderator, for instance--but this is a great start.

(Note to anyone finding this thread via a search later--the App/VBHelpers classes are from our own framework, and are not a part of vBulletin).
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 09:50 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.11087 seconds
  • Memory Usage 2,176KB
  • Queries Executed 11 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (2)bbcode_code
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (3)post_thanks_box
  • (3)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (3)post_thanks_postbit_info
  • (3)postbit
  • (3)postbit_onlinestatus
  • (3)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete