adrian

Page Protector

Recommended Posts

Thanks - I couldn't get the $ppid variable either (similarly to $loginForm). Anyway, I think it's not that important, I can get the protected parent manually too and get content from it (even multilanguage).

It took some time I understood the module's workings but finally it's up and running the way I wanted, thanks for the help! :) 

Share this post


Link to post
Share on other sites
4 minutes ago, tpr said:

It took some time I understood the module's workings but finally it's up and running the way I wanted, thanks for the help! :) 

No problem!

Should I commit the version with $page->protected property then? I assume that is still something you need to get it working in your scenario?

Share this post


Link to post
Share on other sites

Hello.

First off all, thanks for that great module. 

My problem is the combination of the TemplateEngineFactory module and the PageProtector module. Both modules don't work together.

The problem is the Page::render, unfortunately both modules define a after hook. The TemplateEngineFactory always overwrites the PageProtector hook. 

[Page::render] => Array
(
    [0] => PageRender->renderPage() in PageRender.module
    [1] => PageProtector->protectedCheck() in PageProtector.module
    [2] => TemplateEngineFactory->hookRender() in TemplateEngineFactory.module.php
)

When I remove the TemplateEngineFactory module everything works correctly and the login page is displayed. If both modules are acitve the login page ist not displayed. 

Can someone help me? Both modules should work together...

Thanks!

Share this post


Link to post
Share on other sites

Hi @wbertl - firstly, welcome to the forums!

Please upgrade to the latest version which should fix the issue for you.

  • Like 1

Share this post


Link to post
Share on other sites
16 hours ago, adrian said:

Hi @wbertl - firstly, welcome to the forums!

Please upgrade to the latest version which should fix the issue for you.

Hey adrian,

many thanks. It works now!

  • Like 1

Share this post


Link to post
Share on other sites

Howdy @adrian

I'm wondering why I get lots of "Saved module 'PageProtector' config data" entries in /site/assets/logs/modules.txt as I do not remember saving the module settings so frequently. If it is not my "fault", can you please take a look at how to "get rid of them" should they be generated "by mistake".

  • Like 1

Share this post


Link to post
Share on other sites
17 hours ago, szabesz said:

Howdy @adrian

I'm wondering why I get lots of "Saved module 'PageProtector' config data" entries in /site/assets/logs/modules.txt as I do not remember saving the module settings so frequently. If it is not my "fault", can you please take a look at how to "get rid of them" should they be generated "by mistake".

Thanks for noticing that - it should be fixed in the latest version.

Because there are settings for this module on every page (Settings tab), saving the page was saving the settings. Now I check to see if there are any changes before saving.

Please let me know if it works as expected for you.

  • Like 1

Share this post


Link to post
Share on other sites
6 hours ago, adrian said:

it should be fixed in the latest version

Thanx a lot! I will update the site in question – and all its modules – on the weekend, and report back.

Share this post


Link to post
Share on other sites

Hi Everyone,

I was wondering if anyone can help me with a problem I'm having.

I'm currently using the Intermediate templating schema which you can choose from when first developing PW on localhost. 

Firstly, let me say this is a great module and thank you for developing it.

Secondly, to the problem, I'm trying to render login form via "$content .= loginForm;" however that doesn't appear to work and produces nothing but a blank page.

The only way the login form shows is without the _main.php layout by using the default "echo loginForm;" approach.

 

Share this post


Link to post
Share on other sites

Is the missing $ in your post a typo here in the forum?

You need:

$content .= $loginForm;

Also, it depends on how your _main.php is set up. Is $content the final variable that is echo'd at the end, or is it $out or something else? Of course you need to use the variable that is actually used in your _main.php file. $content is just an example.

  • Like 1

Share this post


Link to post
Share on other sites
29 minutes ago, adrian said:

Is the missing $ in your post a typo here in the forum?

 

yes that's a typo in the forum.
 

 

29 minutes ago, adrian said:

Also, it depends on how your _main.php is set up. Is $content the final variable that is echo'd at the end, or is it $out or something else? Of course you need to use the variable that is actually used in your _main.php file. $content is just an example.

Yes, $content is the main output variable coming from the _main.php file.

My loginForm template page works if i use :

<?php namespace ProcessWire;

echo $loginForm;

shows blank screen using:

<?php namespace ProcessWire;

$content = $loginForm;

Maybe i'm missing something simple...

Share this post


Link to post
Share on other sites
33 minutes ago, JasonS said:

Maybe i'm missing something simple...

I think we'd need to see your files to help any further.

Does populating $content with anything else actually get output on the end?

Share this post


Link to post
Share on other sites
4 minutes ago, adrian said:

Does populating $content with anything else actually get output on the end?

No, That's the confusing part. 

loginform.php

<?php namespace ProcessWire;

echo $loginForm;

_main.php
 

<?php namespace ProcessWire;

/**
 * _main.php
 * Main markup file
 *
 * This file contains all the main markup for the site and outputs the regions 
 * defined in the initialization (_init.php) file. These regions include: 
 * 
 *   $title: The page title/headline 
 *   $content: The markup that appears in the main content/body copy column
 *   $sidebar: The markup that appears in the sidebar column
 * 
 * Of course, you can add as many regions as you like, or choose not to use
 * them at all! This _init.php > [template].php > _main.php scheme is just
 * the methodology we chose to use in this particular site profile, and as you
 * dig deeper, you'll find many others ways to do the same thing. 
 * 
 * This file is automatically appended to all template files as a result of 
 * $config->appendTemplateFile = '_main.php'; in /site/config.php. 
 *
 * In any given template file, if you do not want this main markup file 
 * included, go in your admin to Setup > Templates > [some-template] > and 
 * click on the "Files" tab. Check the box to "Disable automatic append of
 * file _main.php". You would do this if you wanted to echo markup directly 
 * from your template file or if you were using a template file for some other
 * kind of output like an RSS feed or sitemap.xml, for example. 
 *
 * See the README.txt file for more information. 
 *
 */
?><!DOCTYPE html>
<html lang="en">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<meta name="viewport" content="width=device-width, initial-scale=1" />
	<title><?php echo $title; ?></title>
	<meta name="description" content="<?php echo $page->summary; ?>" />
	<link href='//fonts.googleapis.com/css?family=Lusitana:400,700|Quattrocento:400,700' rel='stylesheet' type='text/css' />
	<link rel="stylesheet" type="text/css" href="<?php echo $config->urls->templates?>styles/main.css" />
</head>
<body class="<?php if($sidebar) echo "has-sidebar "; ?>">

	<a href="#main" class="visually-hidden element-focusable bypass-to-main">Skip to content</a>

<h1 align="center" class="logo-text">
      <a href="<?php echo $config->urls->root ?>" class="logo-link"><?php $page->sitename ?></a>
    </h1>

	<!-- top navigation -->
	<ul class='topnav' role='navigation'><?php
		// top navigation consists of homepage and its visible children
		foreach($homepage->and($homepage->children) as $item) {
			if($item->id == $page->rootParent->id) {
				echo "<li class='current' aria-current='true'><span class='visually-hidden'>Current page: </span>";
			} else {
				echo "<li>";
			}
			echo "<a href='$item->url'>$item->title</a></li>";
		}

		// output an "Edit" link if this page happens to be editable by the current user
		if($page->editable()) echo "<li class='edit'><a href='$page->editUrl'>Edit</a></li>";
	?></ul>

	<!-- search form
	<form class='search' action='<?php echo $pages->get('template=search')->url; ?>' method='get'>
		<label for='search' class='visually-hidden'>Search:</label>
		<input type='text' name='q' placeholder='Search' id='search' value='<?php echo $sanitizer->entities($input->whitelist('q')); ?>' />
		<button type='submit' name='submit' class='visually-hidden'>Search</button>
	</form>-->

	<!-- breadcrumbs -->
	<div class='breadcrumbs' role='navigation' aria-label='You are here:'><?php
		// breadcrumbs are the current page's parents
		//foreach($page->parents() as $item) {
			//echo "<span><a href='$item->url'>$item->title</a></span> "; 
		//}
		// optionally output the current page as the last item
		//echo "<span>$page->title</span> "; 
	?></div>

	<div id='main'>

		<!-- main content -->
		<div id='content'>
			<h1 align="center"><?php echo $title; ?></h1>
			<?php echo $content; ?>
		</div>

		<!-- sidebar content -->
		<?php if($sidebar): ?>
		<aside id='sidebar'>
			<?php echo $sidebar; ?>
		</aside>
		<?php endif; ?>

	</div>

	<!-- footer -->
	<footer id='footer'>
		<p>
		Powered by <a href='http://processwire.com'>ProcessWire CMS</a>  &nbsp; / &nbsp; 
		<?php 
		if($user->isLoggedin()) {
			// if user is logged in, show a logout link
			echo "<a href='{$config->urls->admin}login/logout/'>Logout ($user->name)</a>";
		} else {
			// if user not logged in, show a login link
			echo "<a href='{$config->urls->admin}'>Admin Login</a>";
		}
		?>
		</p>
	</footer>
	<script   src="https://code.jquery.com/jquery-3.2.1.min.js"   integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="   crossorigin="anonymous"></script>
	<script>
	$('img').bind('contextmenu', function(e) {
    return false;
}); 
</script>

</body>
</html>

 

Share this post


Link to post
Share on other sites

Ok, I think the problem is that loginform.php needs to be:

$content = $loginForm;

which I think you have already tried, but just not in the code you just posted.

Also, is loginform.php selected in the module settings for the "Login Template" setting?

Also, because loginform.php is not an actual PW template, _main.php won't be automatically included, so you will need to manually add:

require_once '_main.php';

after you define $content, so this should do it:

<?php namespace ProcessWire;

echo $content = $loginForm;
require_once '_main.php';

 

Share this post


Link to post
Share on other sites
1 hour ago, adrian said:

which I think you have already tried, but just not in the code you just posted.

yes i did. Didn't work.

1 hour ago, adrian said:

Also, is loginform.php selected in the module settings for the "Login Template" setting?

 

Yes, it is.
 

1 hour ago, adrian said:

<?php namespace ProcessWire; echo $content = $loginForm; require_once '_main.php';

I applied your code and doesn't work. I'll attach a screenshot of what I see.


 

Screenshot at Nov 04 22-20-23.png

Share this post


Link to post
Share on other sites

Sorry, my fault - you don't want to echo $content in loginform.php - you just want to set it - it needs to be echo'd in main.php if you want the login form to appear with your site html wrapper content.

Is this site online somewhere I could take a look?

Share this post


Link to post
Share on other sites
10 hours ago, adrian said:

Is this site online somewhere I could take a look?

Unfortunately, no it isn't. Local webdev development on my machine.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • By flydev
      PulsewayPush
      Send "push" from ProcessWire to Pulseway.
       
      Description
      PulsewayPush simply send a push to a Pulseway instance. If you are using this module, you probably installed Pulseway on your mobile device: you will receive notification on your mobile.
      To get more information about Pulseway, please visit their website.
      Note
      They have a free plan which include 10 notifications (push) each day.
       
      Usage
      Install the PulsewayPush module.
      Then call the module where you like in your module/template code :
      <?php $modules->get("PulsewayPush")->push("The title", "The notification message.", "elevated"); ?>  
      Hookable function
      ___push() ___notify() (the two function do the same thing)
       
      Download
      Github:  https://github.com/flydev-fr/PulsewayPush Modules Directory: https://modules.processwire.com/modules/pulseway-push/  
      Examples of use case
      I needed for our work a system which send notification to mobile device in case of a client request immediate support. Pulseway was choosen because it is already used to monitor our infrastructure.
      An idea, you could use the free plan to monitor your blog or website regarding the number of failed logins attempts (hooking Login/Register?), the automated tool then block the attacker's IP with firewall rules and send you a notification.
       

       
      - - - - - - - - - - - - - -
      11-22-2017: added the module to the modules directory
       
    • By netcarver
      Part 1 of a 2 part Module & Service Reveal.
      I'm currently working on a new module: ModuleReleaseNotes that was inspired by the work I originally did on making Ryan's ProcessWireUpgrades module "release" aware. In the end, I decided to ditch the approach I was originally taking and instead work on a module that hooked in to the UpgradeConfirmation dialog and the module edit page.
      Aims
      My aims for this module are as follows...
      Make discovery of a module's changes prior to an upgrade a trivial task. Make breaking changes very obvious. Make reading of a module's support documentation post-install a trivial task. Make module authors start to think about how they can improve the change discovery process for their modules. Make sure the display of information from the module support files/commit messages doesn't introduce a vulnerability. Looking at these in turn...
      Making discovery of a module's changes prior to upgrade a trivial task.
      This is done by adding a "What's changed section" to the upgrade confirmation dialog.  This section takes a best-effort approach to showing what's changed between the installed version and the updated version that's available via the module repository.
      At present, it is only able to talk to github-hosted repositories in order to ask them for the release notes, the changelog file (if present) and a list of commits between the git tag that matches the installed version and the tag matching the latest version.
      It will display the Release Notes (if the author is using the feature), else it will display the commits between the tags (if tagging is used by the module author) else it will show the changelog file (if present) else it will show the latest N commits on the master branch (N, of course, being configurable to your liking.)
      An example of the Github Release Notes pulled in for you, taken from Mike Rockett's TextformatterTypographer Module...

      An example of a tag-to-tag commit list from the same module...

      An example of a changelog - formatted to show just the changes (formatting styles will change)...

      Finally, an example of a fallback list of commits - sorry Adrian ...

       
      Making breaking changes obvious.
      This is currently done by searching for a set of configurable search strings. Later versions may be able to support breaking change detection via use of Semantic Versioning - but this may require some way of signalling the use of this versioning standard on a module-by-module basis.
      For now, then, you can customise the default set of change markers. Here I have added my own alias to the list of breaking change markers and the changes section of the changelog is styled accordingly (these will be improved)...

       
      Make reading of a module's support documentation, post-install, a trivial task.
      This is done by making some of the support files (like the README, CHANGELOG and LICENSE files) readable from the module's information/settings screen. There is an option to control the initial open/closed state of this section...

      Here is Tracy's README file from within the module settings page... 

       
      Make module authors start to think about how they can improve the change discovery process for their modules.
      There are notes in each of the sections displayed on the upgrade confirmation page that help authors use each of the features...

       
      Make sure display of external information doesn't introduce a vulnerability.
      This is an ongoing concern, and is the thing that is most likely to delay or prevent this module's release lead to this module's withdrawl should a vulnerability be found. Currently, output is formatted either via Markdown + HTML Purifier (if it was originally a Markdown file) or via htmlspecialchars() if it has come from a plaintext file.
      If you discover a vulnerability, please get in contact with me via the forum PM system.
       
      Ongoing...
      For now, I've concentrated on integration with GitHub, as most people use that platform to host their code. I know a few people are hosting their repositories with BitBucket (PWFoo comes to mind) and some with GitLab (Mike Rockett?) and I would eventually like to have adaptor implementations for these providers (and perhaps GitKraken) - but for now, GitHub rules and the other hosts are unsupported.
       
      Links
      Github: ModuleReleaseNotes
      PW Module Repository: Here
    • By FrancisChung
      Hi,
      I was wondering if anyone knew what this did? 

      If so, do you know what modules it actually impacts? Is there another log that lists the action it took?

      I'm having some weird problems with PHP duplicate declaration per link below, since this module was run.
       
       
    • By tpr
      AdminOnSteroids
      Various admin tweaks to enhance ProcessWire admin.
      http://modules.processwire.com/modules/admin-on-steroids/
      https://github.com/rolandtoth/AdminOnSteroids