Giter Site home page Giter Site logo

protectedlinks's Introduction

Protected Links plugin for Craft CMS 3.x

This plugin is intended to provide a way for restricting access to asset files and hide their actual location. Additionally, it will count downloads for each file.

Download stats

The access can be restricted to logged in users, or only certain user, or to member groups. The access can also be set to expire.

The plugin can also be used to hide actual file location.

Access restriction

Requirements

This plugin requires Craft CMS 3.0.0-beta.23 or later.

Usage

The main (and currently only) template variable is craft.protectedLinks.link

Hide the file location without any restrictions:

{{ craft.protectedLinks.link({assetId: entry.downloads.first.id}) }}

Limit access to logged in users and display file inline in browser:

{{ craft.protectedLinks.link({assetId: 105, inline: true, requireLogin: true)}

Restrict file access to users in groups 1 and 7; allow access only when link is clicked on your site

{{ craft.protectedLinks.link({assetId: 105, memberGroups: [1,7], denyHotlink: true}) }}

Limit access to currently logged in user and display file inline in browser; make the link expire on 30th of April:

{{ craft.protectedLinks.link({assetId: 105, inline: true, members: craft.app.user.id, dateExpires: date('2018-04-30')}) }}

Limit access to members with ID 1, 7 and 13; set the link to expire tomorrow:

{{ craft.protectedLinks.link({assetId: 105, members: [1,7,13], dateExpires: now|date_modify('+1 day')|date('Y-m-d')}) }}

Admin users can download files even if they are restricted to other user or group.

In addition to it's own checks, Protected Links also respects permissions set on Asset Volume in Craft.

Parameters

Parameter Explanation
assetId Asset Id. Required
denyHotlink Disallow hotlinking (only allow access if followed from your site)
requireLogin Allow access to any logged in member
memberGroups User groups allowed to access the file. Can be single ID or Twig array of IDs
members Users allowed to access the file. Can be single ID or Twig array of IDs
inline Display file inline in browser
mimeType File mime type
dateExpires Link expiration

Installation

To install the plugin, follow these instructions.

  1. Open your terminal and go to your Craft project:

     cd /path/to/project
    
  2. Then tell Composer to load the plugin:

     composer require intoeetive/protectedlinks
    
  3. In the Control Panel, go to Settings → Plugins and click the “Install” button for Protected Links.

Support

If you encounter any issues with the plugin, please post to GitHub issues.

protectedlinks's People

Contributors

rmdev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

protectedlinks's Issues

PHP function for protectedLinks

Hi, we are in the processing of integrating this plugin with Elements API but we are not sure about the PHP function to output protected links

We have tried the following

use Craft;
Craft::$app->protectedLinks->link([ 'assetId' => $entry->file->first()->id ]);

But it doesn't work. Can you help?

Invalid argument exception on install

Whenever I try to install via the CLI using:

composer install intoeetive/protectedlinks

I get the following error:

[InvalidArgumentException]
  Could not find a matching version of package intoeetive/protectedlinks. Check the package spelling, your version constraint and that the package is available in a stability wh
  ich matches your minimum-stability (stable).

Can you please help?

Error trying to install from Craft

When I select to "install" the plugin from Craft, I get the following error:
yii\base\ErrorException: Trying to get property of non-object

Craft 4?

Will this plugin get updated for Craft 4? Not seeing in the store for Craft 4.

User is not permitted to perform this action

We're trying to create a way to just obfuscate the links but receiving this error when accessed without login. Did a little digging and found out that guest (non-logged in) users has no viewVolume permission. Have already tried requireLogin but its not working. How can we resolve it?

Exception Templates

Is there any way of customising the exception templates?

For example, the 'Link not found' or 'Login is required' errors. Normally we do this with the exception number as a template (E.g. 404.twig, 503.twig etc) but I can't see how to do this.

Does it need to be a setting or config option inside Protected Links maybe?

Allow everyone to download the asset

Hi there

Is it possible to allow everyone to download the assets or put it back to public.
I tried requireLogin: false but that doesnt seem to work..
Just like to use the download counter and not the protection.

Thanks in advance!

Pretty URL

Is it possible to customize the generated URL to something prettier (like removing index.php?p=actions/protectedlinks)?

http://dev.tag-cyber.com/index.php?p=actions/protectedlinks/link/get&code=a03e49c2dde25b737cce110351aac487e8d36cff

unauthorized message on all protected links

Hey,

I updated to the latest version and now all the protected links show an "unauthorized" message that says "you are not allowed to access this file".

It was working perfectly before the upgrade.

Thanks

User is not permitted to perform this action

I've hit a bit of an issue with the plugin, whenever a non-admin user tries to download a file they get the following error.

Unauthorised
User is not permitted to perform this action

Initially I thought it was because I was missing the memberGroups option, so I added this:

{% set link = craft.protectedLinks.link(
   {
      assetId: attributes.download.id,
      denyHotlink: true,
      requireLogin: false,
      dateExpires: now|date_modify('+1 day')|date('c'),
      memberGroups: [1,3]
   }
) %} 

But this still seems to cause the same error.

Another error also occured after adding memberGroups, which meant admin users that weren't in a member group could no longer also download the files.

So ideally, it would be good if memberGroups was defined, that it still allowed admins regardless (OR, theres another option to turn this on/off)

But my main issue is that no user, other than admins, can download anything.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.