Reputation: 6612
I am using elfinder laravel package to manage and organize files.
It has a elfinder.dir
config options that used to specifies a directory that user can upload files to it.
Now I want to change (or create) this option to a directory same name as logged in User username
.
For that I wrote some codes in a middleware that runs after user authentication for limit access of user to admin panels. like this :
class IsAdmin
{
public function handle ($request, Closure $next)
{
if (Auth::check()) {
$username = Auth::user()->username;
if (!File::exists(public_path('upload') . '/' . $username)) {
File::makeDirectory(public_path('upload') . '/' . $username, 0775);
}
Config::set('elfinder.dir', ["upload/$username"]);
return $next($request);
}
return Redirect::to('/admin/login');
}
}
As you can see if there no directory same as username it will be create.
But I want to know it is right that I do this operations in a middleware or there are another(or proper) place to that ?
Upvotes: 0
Views: 189
Reputation: 6612
According to @yannis-berrouag answer and authentication events in l5.3 docs I do this.
First I added this to EventServiceProvider.php
:
'Illuminate\Auth\Events\Authenticated' => [
'App\Listeners\SetElfinderConfigs',
],
Then I added my desired actions to SetElfinderConfigs
listener like this :
class SetElfinderConfigs
{
/**
* Create the event listener.
*
* @return void
*/
public function __construct ()
{
//
}
/**
* Handle the event.
*
* @param Authenticated $event
*
* @return void
*/
public function handle (Authenticated $event)
{
$username = $event->user->username;
if (!File::exists(public_path('upload') . '/' . $username)) {
File::makeDirectory(public_path('upload') . '/' . $username, 0775);
}
Config::set('elfinder.dir', ["upload/$username"]);
}
}
Upvotes: 1
Reputation: 356
i don't know what laravel version you use, but this is something you should do in events in my opinion.
You can listen the login event and do your stuff inside it.
Upvotes: 1