- 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:
Čarodej
2022-03-30 09:34:25 +02:00
parent 0fbb8fd8ee
commit 0ca67c2348
31 changed files with 256 additions and 396 deletions
@@ -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
]);
}
}
+1 -1
View File
@@ -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,
],
],
],