PDA

View Full Version : Permission based links? Is it possible?


soundbarrierpro
06-18-2008, 02:49 PM
I've created several vbpowered pages which no matter what I do, I cannot get them to use permissions.

So...........

I'd like to know if it's possible to hide the pages and just make a link to them, but make the link permission based? I'd like to make it so only registered users see the link and guests don't.

King Kovifor
06-18-2008, 03:12 PM
Are you doing this in vBulletin templates?

soundbarrierpro
06-18-2008, 03:48 PM
Are you doing this in vBulletin templates?

Yes, that is correct. They are all vbulletin templates, produced with this hack. I tried over and over and over to get the usergroup perms to work on the temps, but all the pages are still viewable to guests. I am now hoping I can hide the link only and make that viewable to only certain user groups.

https://vborg.vbsupport.ru/showthread.php?t=62164&highlight=powered+page

RLShare
06-18-2008, 04:03 PM
If your just trying to make it where guests can't view the pages, in the php file which in that tutorial would be test.php add this code below where global.php is included


if (!$vbulletin->userinfo['userid']){
//user not logged in, give no permission message.. make a new template
}
else{
//user is logged in, fetch the template for the page.
}

soundbarrierpro
06-18-2008, 04:16 PM
Like this?


<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'downloads'); // change this depending on your filename

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(

);

// get special data templates from the datastore
$specialtemplates = array(

);

// pre-cache templates used by all actions
$globaltemplates = array(
'downloads',
);

// pre-cache templates used by specific actions
$actiontemplates = array(

);

// ######################### REQUIRE BACK-END ############################
require_once('./global.php');
if (!$vbulletin->userinfo['userid']){
//user not logged in, give no permission message.. make a new template
}
else{
//user is logged in, fetch the template for the page.
}

// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################

$navbits = array();
$navbits[$parent] = 'downloads';

$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('downloads') . '");');

?>


Doesn't work.

RLShare
06-18-2008, 04:20 PM
Like this?


<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'downloads'); // change this depending on your filename

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(

);

// get special data templates from the datastore
$specialtemplates = array(

);

// pre-cache templates used by all actions
$globaltemplates = array(
'downloads',
);

// pre-cache templates used by specific actions
$actiontemplates = array(

);

// ######################### REQUIRE BACK-END ############################
require_once('./global.php');
if (!$vbulletin->userinfo['userid']){
//user not logged in, give no permission message.. make a new template
}
else{
//user is logged in, fetch the template for the page.
}

// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################

$navbits = array();
$navbits[$parent] = 'downloads';

$navbits = construct_navbits($navbits);
eval('$navbar = "' . fetch_template('navbar') . '";');
eval('print_output("' . fetch_template('downloads') . '");');

?>


Doesn't work.

NAH..... like this....I changed it a litte from what I posted before...You will need to create another template and fetch it from with-in the 'if' statement, replace where it says "//user not logged in, give no permission message.. make a new template " with another statement like this one..
eval('print_output("' . fetch_template('downloads') . '");'); except have it fetch a template you create saying they don't have permissions

<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'downloads'); // change this depending on your filename

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(

);

// get special data templates from the datastore
$specialtemplates = array(

);

// pre-cache templates used by all actions
$globaltemplates = array(
'downloads',
);

// pre-cache templates used by specific actions
$actiontemplates = array(

);

// ######################### REQUIRE BACK-END ############################
require_once('./global.php');

// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################

$navbits = array();
$navbits[$parent] = 'downloads';

$navbits = construct_navbits($navbits);

eval('$navbar = "' . fetch_template('navbar') . '";');

if (!$vbulletin->userinfo['userid']){

//user not logged in, give no permission message.. make a new template


}
else{
//user is logged in, fetch the template for the page.


eval('print_output("' . fetch_template('downloads') . '");');


}
?>

soundbarrierpro
06-18-2008, 04:43 PM
like this?


<?php

// ####################### SET PHP ENVIRONMENT ###########################
error_reporting(E_ALL & ~E_NOTICE);

// #################### DEFINE IMPORTANT CONSTANTS #######################
define('NO_REGISTER_GLOBALS', 1);
define('THIS_SCRIPT', 'downloads'); // change this depending on your filename

// ################### PRE-CACHE TEMPLATES AND DATA ######################
// get special phrase groups
$phrasegroups = array(

);

// get special data templates from the datastore
$specialtemplates = array(

);

// pre-cache templates used by all actions
$globaltemplates = array(
'downloads',
);

// pre-cache templates used by specific actions
$actiontemplates = array(

);

// ######################### REQUIRE BACK-END ############################
require_once('./global.php');

// ################################################## #####################
// ######################## START MAIN SCRIPT ############################
// ################################################## #####################

$navbits = array();
$navbits[$parent] = 'downloads';

$navbits = construct_navbits($navbits);

eval('$navbar = "' . fetch_template('navbar') . '";');

if (!$vbulletin->userinfo['userid']){

//user not logged in, give no permission message
eval('print_output("' . fetch_template('reg') . '");');

}
else{
//user is logged in, fetch the template for the page.


eval('print_output("' . fetch_template('downloads') . '");');


}
?>

RLShare
06-18-2008, 04:55 PM
Exactly...

soundbarrierpro
06-18-2008, 05:05 PM
Doesn't work for me. Oh well. Guess I'll go back to using the cmps hide mod then. Thanks for your help.

RLShare
06-18-2008, 05:10 PM
Ive just tried exactly what you posted with 3.7 and it worked. Are you sure that your default style holds the 'reg' template?

here are some screenshots of it working on my board... the downloads template is just the code for the template from that tutorial you posted with the title part changed to 'Downloads' and the reg template is the same code except with the title changed to 'You can't view this page'

soundbarrierpro
06-18-2008, 05:18 PM
Ive just tried exactly what you posted with 3.7 and it worked. Are you sure that your default style holds the 'reg' template?

yep, custom_reg

RLShare
06-18-2008, 05:20 PM
Is the name of the template 'custom_reg'? If so then you would need to fetch 'custom_reg' not 'reg'

soundbarrierpro
06-18-2008, 05:22 PM
Is the name of the template 'custom_reg'? If so then you would need to fetch 'custom_reg' not 'reg'

But I have thirty other templates all named custom_xx and they are called by the php file that goes with them.

Is this call different?

King Kovifor
06-18-2008, 07:13 PM
If they are linked within vBulletin templates, you can surround them with <if condition="is_member_of($vbulletin->userinfo, array(group_ids))">

soundbarrierpro
06-19-2008, 11:05 AM
If they are linked within vBulletin templates, you can surround them with <if condition="is_member_of($vbulletin->userinfo, array(group_ids))">

Hi thank you, I can surround what part of the code? Can you do it in the code I posted and post that? Thanks

King Kovifor
06-19-2008, 01:43 PM
No. The <if condition=""> needs to be wrapped around the <a href=""> within the templates.

soundbarrierpro
06-19-2008, 04:36 PM
No. The <if condition=""> needs to be wrapped around the <a href=""> within the templates.

Ok, thanks King. That works fluidly. :)