MyBB Community Forums

Full Version: Make custom pages have user permissions?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I have finally finished my forum but before I open, I want to make it so these custom pages I made cannot be viewed by guests. How can I do so? I'm sure there's a code snippet that'd do it.
How or with what do you have done your custom pages?
I used this plugin to make them:

http://mods.mybb.com/view/page-manager

Try installing the ban list page. If you do then you will see the code for excluding guests which you can adapt to your own page

http://community.mybb.com/thread-63357-p...#pid474410

in my custom page I have the set up as so:

<?php

global $headerinclude, $header, $theme, $footer, $lang;
// line below can be commented out to allow guest viewing
	if(!$mybb->user['uid']) error_no_permission();

$template='<html>
<head>
<title>'.$pages['name'].'</title>
{$headerinclude}
</head>
<body>
{$header}

<--my HTML-->

{$footer}
</body>
</html>';

$template=str_replace("\'", "'", addslashes($template));

add_breadcrumb($pages['name']);

eval("\$page=\"".$template."\";");

output_page($page);

?>
Here is my custom page code right now:

<html>
	<head>
		<title></title>
	</head>
	<body>
		<h1 style="text-align: center; ">
			The Walking Dead Episodes</h1>
		<p>
			&nbsp;</p>
		<h1>
			<span style="font-family:trebuchet ms,helvetica,sans-serif;"><strong>&nbsp;Seaso</strong></span><span style="font-family:comic sans ms,cursive;"><strong>n </strong></span><span style="font-family:trebuchet ms,helvetica,sans-serif;"><strong>1</strong></span></h1>
		<ul>
			<li style="text-align: left; ">
				<a href="http://undeadforums.net/misc.php?page=s01e01">Episode 1</a></li>
			<li style="text-align: left; ">
				<a href="http://undeadforums.net/misc.php?page=s01e02">Episode 2</a></li>
			<li style="text-align: left; ">
				<a href="http://undeadforums.net/misc.php?page=s01e03">Episode 3</a></li>
			<li style="text-align: left; ">
				<a href="http://undeadforums.net/misc.php?page=s01e04">Episode 4</a></li>
			<li style="text-align: left; ">
				<a href="http://undeadforums.net/misc.php?page=s01e05">Episode 5</a></li>
			<li style="text-align: left; ">
				<a href="http://undeadforums.net/misc.php?page=s01e06">Episode 6</a></li>
		</ul>
		<h1>
			<span style="font-family:comic sans ms,cursive;">Season 2</span></h1>
		<ul>
			<li>
				<a href="http://undeadforums.net/misc.php?page=s02e01">Episode 1</a></li>
			<li>
				<a href="http://undeadforums.net/misc.php?page=s02e02">Episode 2</a></li>
			<li>
				<a href="http://undeadforums.net/misc.php?page=s02e03">Episode 3</a></li>
			<li>
				<a href="http://undeadforums.net/misc.php?page=s02e04">Episode 4</a></li>
			<li>
				<a href="http://undeadforums.net/misc.php?page=s02e05">Episode 5</a></li>
			<li>
				<a href="http://undeadforums.net/misc.php?page=s02e06">Episode 6</a></li>
			<li>
				<a href="http://undeadforums.net/misc.php?page=s02e07">Episode 7</a></li>
			<li>
				<a href="http://undeadforums.net/misc.php?page=s02e08">Episode 8</a></li>
			<li>
				<a href="http://undeadforums.net/misc.php?page=s02e09">Episode 9</a></li>
			<li>
				<a href="http://undeadforums.net/misc.php?page=s02e10">Episode 10</a></li>
			<li>
				<a href="http://undeadforums.net/misc.php?page=s02e11">Episode 11</a></li>
			<li>
				<a href="http://undeadforums.net/misc.php?page=s02e12">Episode 12</a></li>
		</ul>
		<h3 style="color: red; text-align: center; ">
			<u>A new rule is going to be added soon requiring you to have at least 10 posts to view the videos. I suggest making 10 posts before that happens because I will not be giving notice of when I'm doing it.</u></h3>
	</body>
</html>

How can I edit that so guests cannot view it? And can I also make it so they need a certain amount of posts?
You need to use php in the page (like in the snippet I posted). If you need to specify post count then you can make that a usergroup (once have posted x amount of posts are in a new group) and then make that a requirement, assume that 1 and 7 are guest and newbie members.

if (in_array($mybb->user['usergroup'] , array(1,7)))error_no_permission();

So your page could use this:

<?php

 global $headerinclude, $header, $theme, $footer, $lang;
 // line below can be commented out to allow guest viewing
     if(!$mybb->user['uid']) error_no_permission();

 $template='<html>
 <head>
 <title>'.$pages['name'].'</title>
 {$headerinclude}
 </head>
 <body>
 {$header}

<h1 style="text-align: center; ">
             The Walking Dead Episodes</h1>
         <p>
             &nbsp;</p>
         <h1>
             <span style="font-family:trebuchet ms,helvetica,sans-serif;"><strong>&nbsp;Seaso</strong></span><span style="font-family:comic sans ms,cursive;"><strong>n </strong></span><span style="font-family:trebuchet ms,helvetica,sans-serif;"><strong>1</strong></span></h1>
         <ul>
             <li style="text-align: left; ">
                 <a href="http://undeadforums.net/misc.php?page=s01e01">Episode 1</a></li>
             <li style="text-align: left; ">
                 <a href="http://undeadforums.net/misc.php?page=s01e02">Episode 2</a></li>
             <li style="text-align: left; ">
                 <a href="http://undeadforums.net/misc.php?page=s01e03">Episode 3</a></li>
             <li style="text-align: left; ">
                 <a href="http://undeadforums.net/misc.php?page=s01e04">Episode 4</a></li>
             <li style="text-align: left; ">
                 <a href="http://undeadforums.net/misc.php?page=s01e05">Episode 5</a></li>
             <li style="text-align: left; ">
                 <a href="http://undeadforums.net/misc.php?page=s01e06">Episode 6</a></li>
         </ul>
         <h1>
             <span style="font-family:comic sans ms,cursive;">Season 2</span></h1>
         <ul>
             <li>
                 <a href="http://undeadforums.net/misc.php?page=s02e01">Episode 1</a></li>
             <li>
                 <a href="http://undeadforums.net/misc.php?page=s02e02">Episode 2</a></li>
             <li>
                 <a href="http://undeadforums.net/misc.php?page=s02e03">Episode 3</a></li>
             <li>
                 <a href="http://undeadforums.net/misc.php?page=s02e04">Episode 4</a></li>
             <li>
                 <a href="http://undeadforums.net/misc.php?page=s02e05">Episode 5</a></li>
             <li>
                 <a href="http://undeadforums.net/misc.php?page=s02e06">Episode 6</a></li>
             <li>
                 <a href="http://undeadforums.net/misc.php?page=s02e07">Episode 7</a></li>
             <li>
                 <a href="http://undeadforums.net/misc.php?page=s02e08">Episode 8</a></li>
             <li>
                 <a href="http://undeadforums.net/misc.php?page=s02e09">Episode 9</a></li>
             <li>
                 <a href="http://undeadforums.net/misc.php?page=s02e10">Episode 10</a></li>
             <li>
                 <a href="http://undeadforums.net/misc.php?page=s02e11">Episode 11</a></li>
             <li>
                 <a href="http://undeadforums.net/misc.php?page=s02e12">Episode 12</a></li>
         </ul>
         <h3 style="color: red; text-align: center; ">
             <u>A new rule is going to be added soon requiring you to have at least 10 posts to view the videos. I suggest making 10 posts before that happens because I will not be giving notice of when I\'m doing it.</u></h3>

 {$footer}
 </body>
 </html>';

 $template=str_replace("\'", "'", addslashes($template));

 add_breadcrumb($pages['name']);

 eval("\$page=\"".$template."\";");

 output_page($page);

 ?>

Notice the escaped ' on "I'm"
Thanks, I got it to work with that code snippet you posted. Works perfectly. I made a usergroup that you automatically get promoted to when you hit 10 posts. So now I made it so you need to be in said usergroup to view the page.

Works a charm. Thanks guys!