sainf
1
First post.
First, this is a great framework, reviewing all free opensource headless API Cockpit’s Wins with almost needed functions included.
But sadly it desperate need’s better documentation. I spent hours searching for information…
Ok, Private Assets, for all how wish to use assets per user (except admin’s), put the fowling code in some bootstrap, like “config/bootstrap.php”
/**
* Filter Assets to user
*/
$app->on('cockpit.assets.find', function(&$options) use ($app) {
if ($app->user['group'] != 'admin') {
$options['filter']['_by'] = $app->user['_id'];
};
});
/**
* Filter Assets Folders to user
*/
$app->on('cockpit.assetsfolders.find.before', function(&$options) use ($app) {
if ($app->user['group'] != 'admin') {
$options['filter']['_by'] = $app->user['_id'];
};
});
An great thanks to Cockpit creator and all it’s supporters!
3 Likes
artur
2
Hi, glad you like Cockpit. You can simplify the above code:
$app->on(['cockpit.assets.find', 'cockpit.assetsfolders.find.before'], function(&$options) use ($app) {
if (!$app->module('cockpit')->isSuperAdmin()) {
$options['filter']['_by'] = $app->user['_id'];
};
});
1 Like
A long time ago had similar request but also isolating in the filesystem the uploads of each user, I ended to doing something like below:
<?php
$this->on('cockpit.assets.find', function(&$options) use ($app) {
$user = $app->module('cockpit')->getUser();
$options['filter']['_by'] = $user['_id'];
});
$this->on('cockpit.asset.upload', function (&$asset, &$_meta, &$opts, &$file, &$path) use ($app) {
$user = $app->module('cockpit')->getUser();
if (!$app->helper('fs')->path("assets://{$user['_id']}")) {
$app->helper('fs')->mkdir("assets://{$user['_id']}");
}
$clean = uniqid().preg_replace('/[^a-zA-Z0-9-_\.]/','', str_replace(' ', '-', $asset['title']));
$path = '/' . $user['_id'] . '/' .date('Y/m/d') . '/' . $clean;
$asset['path'] = $path;
});
$this->on('cockpit.assetsfolders.find.before', function(&$options) use ($app) {
$user = $app->module('cockpit')->getUser();
$options['filter']['_by'] = $user['_id'];
});
how can this code be modified to fit v2?
would love to see your v2 modified code as well. isolated filesystem for each user sounds very interesting.