Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#133 2023-03-08 17:00:58

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 11,430
Website GitHub

Re: smd_access_keys: secure, limited access to content

Sorry. I’m on this. But there are some installation issues. Will try and resolve those and then figure out what the issue is.


The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.

Txp Builders – finely-crafted code, design and Txp

Offline

#134 2023-03-08 19:32:20

giz
Member
From: New Zealand
Registered: 2004-07-26
Posts: 265
Website GitHub Twitter

Re: smd_access_keys: secure, limited access to content

Thanks!

Offline

#135 2023-03-09 10:54:47

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 11,430
Website GitHub

Re: smd_access_keys: secure, limited access to content

Try downloading the latest bleeding edge code which should fix the glaring oversight of the button not working when there are no keys defined.

Here’s a compiled version if you need that.

# smd_access_keys v1.1.0
# Permit access to content for a certain time period/number of access attempts
# Stef Dawson
# https://stefdawson.com/

# ......................................................................
# This is a plugin for Textpattern - http://textpattern.com/
# To install: textpattern > admin > plugins
# Paste the following text into the 'Install plugin' box:
# ......................................................................

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
tHSwoQGJAQA=

The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.

Txp Builders – finely-crafted code, design and Txp

Offline

#136 2023-03-09 18:54:19

giz
Member
From: New Zealand
Registered: 2004-07-26
Posts: 265
Website GitHub Twitter

Re: smd_access_keys: secure, limited access to content

Thank you; the new keys button is working.

Yesterday I experimented with creating the key from a tag, and everything behaved as expected, apart from the ‘Access Attempts’ count which remained at 0.

I’m afraid the updated plugin still shows 0 access attempts, and doesn’t protect the content i.e. content wrapped in <txp:smd_access_protect /> displays whether I append the key to the url or not.

<txp:smd_access_protect trigger="test">
   <p>Protected content</p>
</txp:smd_access_protect>

Both https://domain/blah and https://domain/blah?test/b0dc6cd2f5c258c7c643fa61f36c08edf1e9f07d/640a25b1.3 display the snippet <p>Protected content</p>.

Here’s hoping its a misunderstanding on my side on how to use the plugin!

Last edited by giz (2023-03-09 19:10:36)

Offline

#137 2023-03-09 19:09:34

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 11,430
Website GitHub

Re: smd_access_keys: secure, limited access to content

Have you tried adding force="1" to the protect tag? Although that does put it in brute force mode and will reject pretty much anything without a token, so if you’re only protecting a small portion of the page, it might be a bit overkill.

I’ll have to do some experiments and check I’ve not introduced something stupid.

Edit: is there any reason you’re using the ? messy syntax instead of a forward slash, btw?

Last edited by Bloke (2023-03-09 19:11:33)


The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.

Txp Builders – finely-crafted code, design and Txp

Offline

#138 2023-03-09 19:20:12

giz
Member
From: New Zealand
Registered: 2004-07-26
Posts: 265
Website GitHub Twitter

Re: smd_access_keys: secure, limited access to content

Hey

I did in earlier tests, but forgot to add it to my sample snippet above.

<txp:smd_access_protect trigger="test" force="1">
   <p>Protected content</p>
<txp:else />
   <txp:smd_if_access_error type="smd_akey_err_forbidden">
      <p>Before you can view this item, you'll need an access key.</p>
   </txp:smd_if_access_error>
</txp:smd_access_protect>

Interesting: this displays <p>Before you can view this item, you'll need an access key.</p> with both urls.

Last edited by giz (2023-03-09 19:31:40)

Offline

#139 2023-03-09 19:26:38

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 11,430
Website GitHub

Re: smd_access_keys: secure, limited access to content

Right, it pretty much stomps on every request. It’s designed primarily for situations where you want to protect the whole page.

Hmmm. I’ll run some tests and see if I can make it behave more sanely. And I’ll check out the counter. It was incrementing for me earlier but I only tested it when protecting an article.


The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.

Txp Builders – finely-crafted code, design and Txp

Offline

#140 2023-03-09 19:32:00

giz
Member
From: New Zealand
Registered: 2004-07-26
Posts: 265
Website GitHub Twitter

Re: smd_access_keys: secure, limited access to content

This may help: <txp:smd_access_info item="trigger" /> does not display anything when using the key in the url.

Offline

#141 2023-03-09 23:24:55

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 11,430
Website GitHub

Re: smd_access_keys: secure, limited access to content

Okay, this is where I kinda wish I’d made a mental note to myself about why I coded something the way I did, goodness knows how many years ago. Or at least an example or something that explains my thinking.

I can’t figure why anyone would want the force attribute to ever be zero. i.e. to show the content inside the protected tag regardless of whether the trigger/token is supplied. There must have been a use case for it, as it’s the default behaviour. But it just seems… bizarre.

I’m considering rewiring that attribute, or ditching it and renaming it to something else, to maintain backwards compatibility. Maybe some type attribute. But I can’t think of any reason to even have the attribute at all.

It’s clearly designed in this manner because if the trigger is missing, the code does this:

// If we always want to forbid access to this page regardless if the trigger exists.
if ($force) {
    $smd_access_error = 'smd_akey_err_forbidden';
    $smd_access_errcode = 401;
} else {
    $ret = true;
}

In other words, I did it on purpose. And if you leave force out or set it to zero, the content will always be displayed (true).

What was I thinking? Anybody any ideas, haha?

EDIT: This post sheds a little light on why it might be necessary to retain the concept of non-forced access keys. Basically if you’re looping over something and only want to protect a subset of the data. If force was used, all the content would be access protected. But it doesn’t help insofar as supplying no trigger and no key will reveal the content, which seems bizarre.

Last edited by Bloke (2023-03-10 00:25:07)


The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.

Txp Builders – finely-crafted code, design and Txp

Offline

#142 2023-03-10 00:59:54

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 11,430
Website GitHub

Re: smd_access_keys: secure, limited access to content

This commit introduces force="partial" which allows you to use one or more smd_access_protect tags to surround content blocks and will not reveal the contents, but will also not throw an error (like force="1" does) if the trigger is not provided.

If this is broadly useful I’ll adopt it from this point forward.


The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.

Txp Builders – finely-crafted code, design and Txp

Offline

#143 2023-03-10 01:07:27

Bloke
Developer
From: Leeds, UK
Registered: 2006-01-29
Posts: 11,430
Website GitHub

Re: smd_access_keys: secure, limited access to content

giz wrote #334991:

<txp:smd_access_info item="trigger" /> does not display anything when using the key in the url.

You are putting that tag inside <txp:smd_access_protect>, right? It won’t work outside of the protection context.

the updated plugin still shows 0 access attempts

That should count properly if the trigger is supplied. Without that, the counter remains at its last value. Try it with the new force="partial" and see how you get on. And remember that you can match multiple triggers as a comma-separated list, and use a different trigger_mode to perform subsets of matches.


The smd plugin menagerie — for when you need one more gribble of power from Textpattern. Bleeding-edge code available on GitHub.

Txp Builders – finely-crafted code, design and Txp

Offline

#144 2023-03-10 19:23:53

giz
Member
From: New Zealand
Registered: 2004-07-26
Posts: 265
Website GitHub Twitter

Re: smd_access_keys: secure, limited access to content

Thanks Stef.

Bloke wrote #334995:

You are putting that tag inside <txp:smd_access_protect>, right? It won’t work outside of the protection context.

That should count properly if the trigger is supplied. Without that, the counter remains at its last value. Try it with the new force="partial" and see how you get on. And remember that you can match multiple triggers as a comma-separated list, and use a different trigger_mode to perform subsets of matches.

Yes; I tried inside and out ;-)

I applied your ‘partial’ commit:

<txp:smd_access_protect trigger="test" force="partial">
	<txp:smd_access_info  item="trigger" />
	<p>Protected content</p>
<txp:else />
  <txp:smd_if_access_error type="smd_akey_err_forbidden">
    <p>Before you can view this item, you'll need an access key.</p>
  <txp:else />
    <txp:smd_access_error item="code, message" break="br" />
  </txp:smd_if_access_error>
</txp:smd_access_protect>

and get these results whether the key is included in the url or not:

force=“partial”
Before you can view this item, you’ll need an access key.
force=“1”
Before you can view this item, you’ll need an access key.
force=“0”
Protected content.

Manage Keys tab shows 0 Access Attempts, and <txp:smd_access_info item="trigger" /> is silent.

Can you see anything wrong with my approach?:

  1. clone your latest commit to textpattern/plugins/smd_access_keys/smd_access_keys.php
  2. update from disk in the admin:plugins tab
  3. delete old test keys
  4. create a new key: https://domain.com/etc/professional-access test 2023-03-11 06:11:48 - 0 0
    1. Access key: https://domain.com/etc/professional-access/test/4ad96534b927bf16324176bca5a8b9ea964865b9/640b80f4
    2. Convert to section_mode=“1” Access key: https://domain.com/etc/professional-access?test/4ad96534b927bf16324176bca5a8b9ea964865b9/640b80f4
  5. visit the page where my <txp:smd_access_protect /> snippet resides

Offline

Board footer

Powered by FluxBB