--- /dev/null
+package Newslash::Plugin::ResponseFilter;
+use Mojo::Base 'Mojolicious::Plugin';
+
+sub register {
+ my ($self, $app, $conf) = @_;
+
+ # set default config value
+ my $cnf = $app->config->{ResponseFilter} ||= {};
+ my $defualt_faculities = { comments => { 1000 => [ipid, subnetid] },
+ metamoderations => { 1000 => [uid] },
+ moderations => { 1000 => [ipid, subnetid, uid, m2uid] },
+ stories => { 1000 => [hits, hitparade] },
+ submissions => { 1000 => [ipid, subnetid, note, comment] },
+ };
+ $cnf->{faculities} ||= $default_faculities;
+ $cnf->{enable} = 1 if !defined $cnf->{enable};
+ $app->helper(apply_seclev_filter => sub { apply_seclev_filter(@_) });
+}
+
+sub apply_seclev_filter {
+ my ($c, $model, $items) = @_;
+ return if !$items || !$model;
+
+ my $user = $c->stash('user') || {};
+ my $security_level = $user->{seclev} || 0;
+
+ my $targets = $items;
+ if (ref($items) ne "ARRAY") {
+ $targets = [$items];
+ }
+
+ my $faculties = $c->config->{Faculties} || {};
+ my $faculty = $faculties->{$model};
+ if (!$faculty) {
+ $c->app->log->debug("no faculty found for $model");
+ return;
+ }
+
+ for my $lv (keys %$faculty) {
+ if ($security_level < $lv) {
+ for my $item (@$targets) {
+ for my $k (@{$faculty->{$lv}}) {
+ delete $item->{$k} if defined $item->{$k};
+ }
+ }
+ }
+ }
+ return $items;
+}
+
+1;
package Newslash::Web::Controller;
use Mojo::Base 'Mojolicious::Controller';
-use Data::Dumper;
-sub apply_seclev_filter {
- my ($self, $model, $items) = @_;
- return if !$items || !$model;
-
- my $user = $self->stash('user') || {};
- my $security_level = $user->{seclev} || 0;
-
- my $targets = $items;
- if (ref($items) ne "ARRAY") {
- $targets = [$items];
- }
-
- my $faculties = $self->config->{Faculties} || {};
- my $faculty = $faculties->{$model};
- if (!$faculty) {
- $self->app->log->debug("no faculty found for $model");
- return;
- }
-
- for my $lv (keys %$faculty) {
- if ($security_level < $lv) {
- for my $item (@$targets) {
- for my $k (@{$faculty->{$lv}}) {
- delete $item->{$k} if defined $item->{$k};
- }
- }
- }
- }
- return $items;
-}
-
-sub get_config {
- my ($self, $section, $key, $default) = @_;
- my $config = $self->app->config->{$section} || {};
- return $config->{$key} || $default;
-}
1;