GithubHelp home page GithubHelp logo

friendsofredaxo / accessdenied Goto Github PK

View Code? Open in Web Editor NEW
38.0 6.0 3.0 977 KB

Access Denied: Artikel oder Kategoriezugriff im Frontend sperren (offline + kein Zugriff)

License: MIT License

PHP 97.18% CSS 2.82%
redaxo redaxo-addon access-control accessdenied

accessdenied's People

Contributors

alxndr-w avatar danielweitenauer avatar fanello avatar hirbod avatar interweave-media avatar koala avatar nandes2062 avatar schuer avatar skerbis avatar staabm avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

accessdenied's Issues

Error >

Folgende Error Meldung:

Error | Call to a member function getValue() on null | redaxo/src/addons/accessdenied/boot.php | 23

REDAXO 5.7.0-beta2
PHP Version 7.2.11
MySQL 5.6.19

Gibt es dafür eine Lösung?
Danke!
VG, Geri

Sprachdatei

sollte es nicht accessdenied/lang/en_gb.lang sein?

Einstellungsseite in `System` unterbringen?

Von meiner Seite aus könnten wir das Addon aus dem Hauptmenü nehmen - einmal eingestellt wird es vermutlich nie wieder angefasst und benötigt nicht diese Omnipräsenz.

gesperrt auf "-1" stellen statt "2"

Meines Erachtens ist eine Sperrung etwas, das weiter geht als offline schalten, und sollte demzufolge auch mit status = -1 eingetragen werden.

css datei nur einbinden wenn verwendet

aktuell wird die css datei dieses addons immer geladen:

rex_view::addCssFile($this->getAssetsUrl('accessdenied_quicknavi.css'));

können wir hier ein IF drann packen, dass das ein wenig einschränkt?
brauchen wir das css wirklich auf allen redaxo backend seiten?

Performance?

@staabm hast du ne Idee, wie man das hier ggf performanter machen könnte? Oder liefert Redaxo das aus dem Cache?

accessdenied/boot.php

Lines 21 to 24 in 7df1d64

if (rex_article::getCurrent()->getValue('status') == 2 && !rex_backend_login::hasSession()) {
rex_redirect(rex_article::getNotfoundArticleId(), rex_clang::getCurrentId());
}
}, rex_extension::LATE);

Preview-Link: Zahlen und Sonderzeichen erlauben, ggf. Zufallswert setzen

$field->getValidator()->add( 'match', $this->i18n('linkparameter_wrong'), '/^[a-zA-Z]+$/');

@skerbis siehst du da ein Problem, Zahlen und Sonderzeichen zuzulassen sowie bei der Installation eine zufällige Zeichenfolge zu setzen?

Zumindest Zahlen sollten drin sein - so kann man das Feld wie ein Passwort behandeln und nicht bei beliebigen REDAXO-Seiten erraten, dass man mit preview=1 an Daten rankommt, die eigentlich geschützt sind.

Sharing-Link zum Zugriff ohne angemeldeten Nutzer

Coole Sache das Addon.
Toll wäre es noch, wenn man einen Sharing-Link (Hash) erstellen könnten, mit welchem man die jeweilige gesperrte Seite auch ohne Login anschauen könnte.

Das wäre ideal, um einem Kunden eine Änderung kurz zeigen zu können, welcher selber nicht in das Backend geht bzw. seine Seite pflegen lässt.

accessdenied YRewrite-multidomainfähig machen

Ist man im Backend via Domain 1 eingeloggt, kann man Inhalte von Domain 2 nicht als Admin ansehen, da man als "nicht eingeloggt" gilt.

Es wäre super, wenn accessdenied eine Einstellung analog zum Maintenance-Addon bietet, mit der man IPs oder einen Secret-Key mitgeben kann, der dann ausgewertet wird. accessdenied sollte dabei auch in der Struktur den Link "Artikel anzeigen" präparieren.

/cc @marcohanke

Weiterleitungen prüfen

Hi zusammen,

kurze Frage zu den Weiterleitungen von accessdenied. Wir haben gerade folgenden Fall, dass ein Kunde Weiterleitungen eines Artikels in yrewrite konfiguriert hat und den Artikel gesperrt hat. Es scheint so zu sein, dass die Umleitung auf die Fehlerseite durch accessdenied noch greift, bevor die konfigurierte Umleitung aus YRewrite zieht.

Zur eigentlichen Frage: Wäre es nicht sinnvoll, wenn accessdenied vor der Umleitung auf die Fehlerseite prüft, ob yrewrite vorhanden ist und gegebenfalls die Umleitung aus YRewrite greift?

Multi-Domain Artikelvorschau mittels secret unterstützen

  • Link manipulieren
  • Eingabe eines secrets (oder / und zusätzlich maintenance-secret verwenden können)
if(rex::isBackend() && rex_backend_login::hasSession() && 'content/edit' == rex_be_controller::getCurrentPage()) {
 
  rex_extension::register('URL_REWRITE', "url_rewrite_accessdenied", rex_extension::LATE);

}

function url_rewrite_accessdenied($ep) {
  $params = $ep->getParams();
 if(rex_article::get($params['id'])->getValue('status') == 2) {
  return $ep->getSubject().'?secret='.rex_config::get('accessdenied', 'secret');
 }
}

Scalar expected for $needle in arrayKeyCast(), got NULL!

InvalidArgumentException: Scalar expected for $needle in arrayKeyCast(), got NULL!
File: src/core/lib/request.php
Line: 207

Stacktrace
Function File Line
rex_request::arrayKeyCast src/core/lib/request.php 55
rex_request::request src/core/functions/function_rex_globals.php 66
rex_request src/addons/accessdenied/boot.php 28
rex_package->{closure} src/core/lib/extension.php 52
rex_extension::{closure} src/core/lib/util/timer.php 57
rex_timer::measure src/core/lib/extension.php 63
rex_extension::registerPoint src/core/packages.php 33
include_once src/core/frontend.php 16
require src/core/boot.php 143
require public/index.php 12
System report (REDAXO 5.13.3, PHP 7.4.28, MariaDB 10.3.31)
REDAXO
Version 5.13.3
PHP
Version 7.4.28
OPcache yes
Xdebug no
Database
Version MariaDB 10.3.31
Character set utf8mb4
Server
OS Linux
SAPI fpm-fcgi
Webserver nginx/1.18.0
Request
Browser Chrome/102.0.5005.63
Protocol HTTP/2.0
HTTPS yes
Packages
accessdenied 2.0.0
adminer 1.9.2
auto_delete 1.0-dev
backup 2.8.1
be_password 2.0.0
be_style 3.0.2
be_style/customizer 3.0.2
be_style/redaxo 3.0.2
be_style_fluent 3.1.2
bloecks 3.1.1
bloecks/cutncopy 3.1.1
bloecks/status 3.1.1
consent_manager 3.0.7
cronjob 2.8.2
cronjob/article_status 2.8.1
cronjob/optimize_tables 2.8.1
debug 1.2.1
developer 3.9.0
epcqrcode 1.0.3
events 3.0.0-dev4
feeds 3.3.0-beta1
focuspoint 4.0.1
global_settings 2.8.1
install 2.9.3
mailer_profile 1.0.1
maintenance 2.7.7
media_manager 2.12.3
media_manager_responsive 0.5.1-dev
mediapool 2.11.3
metainfo 2.8.5
mform 7.0.2.beta
mform/docs 1.1
msg dev
phpmailer 2.11.2
plus_bs5 0.0.5
project dev
project_manager 1.4.0
project_manager/client 1.1.0
qanda 2.0.9
quick_navigation 5.3.1
redactor 2.3.0
search_it 6.9.0
search_it/documentation 6.9.0
speed_up 1.1.5
sprog 1.3.0
structure 2.13.3
structure/content 2.13.3
structure/history 2.13.3
url 2.0.1
users 2.8.2
ydeploy 1.1.0
yform 4.0.2
yform/email 4.0.2
yform/manager 4.0.2
yform_field 2.0
yform_geo_osm 1.2.6
yform_spam_protection 2.0.0-beta
yform_usability 2.0.5-dev
yrewrite 2.8.3
yrewrite_metainfo 1.0.2
zip_install 1.2

Browser URL ändert Status

Folgendes Szenario das bei meinem Kunden zu irritationen führt:

  1. Kunde ändert den Status eines Artikels.
  2. Kunde klickt auf den Artikel.
  3. Kunde nutzt den zurück Button im Browser. Nun wird ein anderer Status angezeigt als den, auf den er den Status des Artikels angepasst hat.

Warum? Die URL in der Browser Historie ruft erneut die Statusänderung auf. Lässt sich das verhindern?

YForm+URL-Kompatiblität

Ich würde gerne auch bei aus YForm (optional mittels URL-Addon) generierten Seiten diese Funktion nutzen können, also sprich:

  • gesperrt: leitet die URL zur Fehlerseite weiter - es sei denn, man ist im Backend angemeldet
  • offline: lässt die Seite verfügbar
  • online: alles wie immer

Lässt sich das mit accessdenied-Bordmitteln umsetzen? Gibt es eine Methode, der ich sagen kann: Wenn du 2 bist, dann nur im Backend eingeloggt anzeigen, sonst Weiterleitung zur Fehlerseite?

Ist das überhaupt hier in accessdenied gewünscht? Oder wäre so etwas eher ein Trick?

Ein Automatismus / Einzeiler fürs Template fände ich am sinnvollsten hier aufgehoben.

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.