Name

TableRestrict — restrict database searches to rows satisfying given criteria

SYNOPSIS

database field=value

DESCRIPTION

The directive is used to emulate database "views" in database-based searches.

For each database search, additional "filtering" will be performed and only rows satisfying given condition will be returned. Commonly, you will want to use something like owner=username, to restrict searches to just rows that the corresponding users "own".

DIRECTIVE TYPE AND DEFAULT VALUE

Catalog directive

EXAMPLES

Example: Restricting database searches to username

The following would prevent database searches from returning any records, except those where the column owner contains the current value of [data session username].

TableRestrict  products  owner=username

As you can see from the ad-hoc example above, owner is a database column name, and username is the key from the session database. (The user's [data session username] must match the value of the owner field if a record is to be returned in a search operation).


Example: Restricting edit to owned fields

TableRestrict is also useful in embedded Perl code:

[calc]
  # Restrict edit to owned fields
  $Config->{TableRestrict}{products} = 'owner=username';
  return;
[/calc]

(Note that the above example works because value of the TableRestrict config directive is overridden only for the duration of the current page — for next page or access, TableRestrict will again have the original value).


Example: Searching using SQL

When using SQL-based database searches, the owner=username directive in effect turns the base search query of say,

SELECT * FROM products

into

SELECT * FROM products WHERE owner = '[data session username]'

NOTES

TableRestrict does not affect the text searches.

The directive may be useful in "mall" situations, where user is allowed to only see products from the current store ID.

AVAILABILITY

TableRestrict is available in Interchange versions:

4.6.0-5.9.0 (git-head)

SOURCE

Interchange 5.9.0:

Source: lib/Vend/Config.pm
Line 623

['TableRestrict',   'hash',            ''],

Source: lib/Vend/Config.pm
Line 3181 (context shows lines 3181-3198)

sub parse_hash {
my($item,$settings) = @_;
if (! $settings) {
  return $HashDefaultBlank{$item} ? '' : {};
}

my $c;

if(defined $C) {
  $c = $C->{$item} || {};
}
else {
  no strict 'refs';
  $c = ${"Global::$item"} || {};
}

return hash_string($settings,$c);
}

AUTHORS

Interchange Development Group

SEE ALSO

Database(7ic)

DocBook! Interchange!