mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-05-27 23:04:43 +00:00
- when member upload files or create folder in team folder, the true owner of the content is creator of team member. That means the upload bandwidth and storage go to creator responsibility
This commit is contained in:
@@ -18,35 +18,31 @@ class CreateFolderAction
|
||||
CreateFolderRequest $request,
|
||||
?Share $shared = null,
|
||||
): Folder|array {
|
||||
// Get user model
|
||||
$user = $shared
|
||||
? $shared->user
|
||||
: Auth::user();
|
||||
// Get stuff
|
||||
$isFilledParentId = $request->filled('parent_id');
|
||||
$parentId = $request->input('parent_id');
|
||||
|
||||
// Get user
|
||||
$user = $isFilledParentId
|
||||
? Folder::find($parentId)->getLatestParent()->user
|
||||
: auth()->user();
|
||||
|
||||
// Check if user can create folder
|
||||
if (! $user->canCreateFolder()) {
|
||||
throw new InvalidUserActionException();
|
||||
}
|
||||
|
||||
/*
|
||||
* Check if exist parent team folder, if yes,
|
||||
* then get the latest parent folder to detect whether it is team_folder
|
||||
*/
|
||||
if ($request->has('parent_id')) {
|
||||
$isTeamFolder = Folder::find($request->input('parent_id'))
|
||||
->getLatestParent()
|
||||
->team_folder;
|
||||
}
|
||||
|
||||
// Create folder record
|
||||
return Folder::create([
|
||||
'parent_id' => $request->input('parent_id'),
|
||||
'parent_id' => $parentId,
|
||||
'name' => $request->input('name'),
|
||||
'color' => $request->input('color') ?? null,
|
||||
'emoji' => $request->input('emoji') ?? null,
|
||||
'author' => $shared ? 'visitor' : 'user',
|
||||
'user_id' => $user->id,
|
||||
'team_folder' => $isTeamFolder ?? false,
|
||||
'team_folder' => $isFilledParentId
|
||||
? Folder::find($parentId)->getLatestParent()->team_folder
|
||||
: false
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -192,7 +192,7 @@ class Folder extends Model
|
||||
->withPivot('permission');
|
||||
}
|
||||
|
||||
public function owner(): HasOne
|
||||
public function user(): HasOne
|
||||
{
|
||||
return $this->hasOne(User::class, 'id', 'user_id');
|
||||
}
|
||||
|
||||
@@ -22,10 +22,10 @@ class FolderResource extends JsonResource
|
||||
'isTeamFolder' => $this->team_folder,
|
||||
'items' => $this->items,
|
||||
'trashed_items' => $this->trashed_items,
|
||||
'created_at' => set_time_by_user_timezone($this->owner, $this->created_at),
|
||||
'updated_at' => set_time_by_user_timezone($this->owner, $this->updated_at),
|
||||
'created_at' => set_time_by_user_timezone($this->user, $this->created_at),
|
||||
'updated_at' => set_time_by_user_timezone($this->user, $this->updated_at),
|
||||
'deleted_at' => $this->deleted_at
|
||||
? set_time_by_user_timezone($this->owner, $this->deleted_at)
|
||||
? set_time_by_user_timezone($this->user, $this->deleted_at)
|
||||
: null,
|
||||
],
|
||||
'relationships' => [
|
||||
@@ -49,15 +49,15 @@ class FolderResource extends JsonResource
|
||||
],
|
||||
],
|
||||
]),
|
||||
$this->mergeWhen($this->owner, fn () => [
|
||||
'owner' => [
|
||||
$this->mergeWhen($this->user, fn () => [
|
||||
'user' => [
|
||||
'data' => [
|
||||
'type' => 'owner',
|
||||
'type' => 'user',
|
||||
'id' => $this->user_id,
|
||||
'attributes' => [
|
||||
'name' => $this->owner->settings->name,
|
||||
'avatar' => $this->owner->settings->avatar,
|
||||
'color' => $this->owner->settings->color,
|
||||
'name' => $this->user->settings->name,
|
||||
'avatar' => $this->user->settings->avatar,
|
||||
'color' => $this->user->settings->color,
|
||||
],
|
||||
],
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user