mirror of
https://github.com/VueFileManager/vuefilemanager.git
synced 2026-04-24 01:50:38 +00:00
teams api update
This commit is contained in:
@@ -52,7 +52,7 @@ class Handler extends ExceptionHandler
|
|||||||
if ($exception instanceof ModelNotFoundException) {
|
if ($exception instanceof ModelNotFoundException) {
|
||||||
if (in_array('application/json', $request->getAcceptableContentTypes())) {
|
if (in_array('application/json', $request->getAcceptableContentTypes())) {
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'type' => 'error',
|
'type' => 'error',
|
||||||
'message' => "We couldn't find your requested item.",
|
'message' => "We couldn't find your requested item.",
|
||||||
], 404);
|
], 404);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ class UpdatePasswordController extends Controller
|
|||||||
): JsonResponse {
|
): JsonResponse {
|
||||||
$successMessage = [
|
$successMessage = [
|
||||||
'type' => 'success',
|
'type' => 'success',
|
||||||
'message' => "The password was successfully changed.",
|
'message' => 'The password was successfully changed.',
|
||||||
];
|
];
|
||||||
|
|
||||||
if (isDemoAccount()) {
|
if (isDemoAccount()) {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\Users\Controllers\Authentication;
|
namespace App\Users\Controllers\Authentication;
|
||||||
|
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\Response;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
use Laravel\Sanctum\PersonalAccessToken;
|
use Laravel\Sanctum\PersonalAccessToken;
|
||||||
@@ -28,7 +28,7 @@ class AccountAccessTokenController extends Controller
|
|||||||
{
|
{
|
||||||
if (isDemoAccount()) {
|
if (isDemoAccount()) {
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'plainTextToken' => Str::random(40)
|
'plainTextToken' => Str::random(40),
|
||||||
], 201);
|
], 201);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -45,7 +45,7 @@ class AccountAccessTokenController extends Controller
|
|||||||
{
|
{
|
||||||
$successMessage = [
|
$successMessage = [
|
||||||
'type' => 'success',
|
'type' => 'success',
|
||||||
'message' => "The token was successfully deleted.",
|
'message' => 'The token was successfully deleted.',
|
||||||
];
|
];
|
||||||
|
|
||||||
if (isDemoAccount()) {
|
if (isDemoAccount()) {
|
||||||
@@ -55,7 +55,7 @@ class AccountAccessTokenController extends Controller
|
|||||||
if (Auth::id() !== $token->tokenable_id) {
|
if (Auth::id() !== $token->tokenable_id) {
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'type' => 'error',
|
'type' => 'error',
|
||||||
'message' => "You are not entitled to delete this token.",
|
'message' => 'You are not entitled to delete this token.',
|
||||||
], 401);
|
], 401);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,11 @@
|
|||||||
namespace App\Users\Controllers\Authentication;
|
namespace App\Users\Controllers\Authentication;
|
||||||
|
|
||||||
use App\Users\DTO\CreateUserData;
|
use App\Users\DTO\CreateUserData;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Users\Actions\CreateNewUserAction;
|
use App\Users\Actions\CreateNewUserAction;
|
||||||
use App\Users\Requests\RegisterUserRequest;
|
use App\Users\Requests\RegisterUserRequest;
|
||||||
use Illuminate\Contracts\Auth\StatefulGuard;
|
use Illuminate\Contracts\Auth\StatefulGuard;
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use VueFileManager\Subscription\Domain\Plans\Exceptions\MeteredBillingPlanDoesntExist;
|
use VueFileManager\Subscription\Domain\Plans\Exceptions\MeteredBillingPlanDoesntExist;
|
||||||
|
|
||||||
class RegisterUserController extends Controller
|
class RegisterUserController extends Controller
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ class FlushUserNotificationsController extends Controller
|
|||||||
public function __invoke(): JsonResponse
|
public function __invoke(): JsonResponse
|
||||||
{
|
{
|
||||||
$successMessage = [
|
$successMessage = [
|
||||||
'type' => 'success',
|
'type' => 'success',
|
||||||
'message' => 'All your notifications was deleted.',
|
'message' => 'All your notifications was deleted.',
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ class MarkUserNotificationsAsReadController extends Controller
|
|||||||
public function __invoke(): JsonResponse
|
public function __invoke(): JsonResponse
|
||||||
{
|
{
|
||||||
$successMessage = [
|
$successMessage = [
|
||||||
'type' => 'success',
|
'type' => 'success',
|
||||||
'message' => 'All your notifications was marked as read.',
|
'message' => 'All your notifications was marked as read.',
|
||||||
];
|
];
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ class MarkUserNotificationsAsReadController extends Controller
|
|||||||
|
|
||||||
// Mark all notifications as read
|
// Mark all notifications as read
|
||||||
auth()->user()->unreadNotifications()->update([
|
auth()->user()->unreadNotifications()->update([
|
||||||
'read_at' => now()
|
'read_at' => now(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return response()->json($successMessage);
|
return response()->json($successMessage);
|
||||||
|
|||||||
@@ -1,13 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Domain\SetupWizard\Controllers;
|
namespace Domain\SetupWizard\Controllers;
|
||||||
|
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\JsonResponse;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
|
||||||
class PingAPIController extends Controller
|
class PingAPIController extends Controller
|
||||||
{
|
{
|
||||||
public function __invoke(): Response
|
public function __invoke(): JsonResponse
|
||||||
{
|
{
|
||||||
return response('pong');
|
return response()->json([
|
||||||
|
'type' => 'success',
|
||||||
|
'message' => 'pong',
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace Domain\Teams\Controllers;
|
namespace Domain\Teams\Controllers;
|
||||||
|
|
||||||
use Illuminate\Http\Response;
|
|
||||||
use Domain\Folders\Models\Folder;
|
use Domain\Folders\Models\Folder;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Support\Facades\Gate;
|
||||||
use Domain\Teams\Models\TeamFolderMember;
|
use Domain\Teams\Models\TeamFolderMember;
|
||||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
use Domain\Folders\Resources\FolderResource;
|
||||||
use Domain\Teams\Requests\ConvertIntoTeamFolderRequest;
|
use Domain\Teams\Requests\ConvertIntoTeamFolderRequest;
|
||||||
use Domain\Teams\Actions\InviteMembersIntoTeamFolderAction;
|
use Domain\Teams\Actions\InviteMembersIntoTeamFolderAction;
|
||||||
use Domain\Teams\Actions\SetTeamFolderPropertyForAllChildrenAction;
|
use Domain\Teams\Actions\SetTeamFolderPropertyForAllChildrenAction;
|
||||||
@@ -21,15 +22,18 @@ class ConvertFolderIntoTeamFolderController extends Controller
|
|||||||
public function __invoke(
|
public function __invoke(
|
||||||
ConvertIntoTeamFolderRequest $request,
|
ConvertIntoTeamFolderRequest $request,
|
||||||
Folder $folder
|
Folder $folder
|
||||||
): ResponseFactory|Response {
|
): JsonResponse {
|
||||||
|
// Authorize action
|
||||||
|
Gate::authorize('owner', [$folder]);
|
||||||
|
|
||||||
// Abort in demo mode
|
// Abort in demo mode
|
||||||
if (isDemoAccount()) {
|
if (isDemoAccount()) {
|
||||||
return response($folder, 201);
|
return response()->json(new FolderResource($folder), 201);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if user didn't exceed max team members limit
|
// Check if user didn't exceed max team members limit
|
||||||
if (! $folder->user->canInviteTeamMembers($request->input('invitations'))) {
|
if (! $folder->user->canInviteTeamMembers($request->input('invitations'))) {
|
||||||
return response([
|
return response()->json([
|
||||||
'type' => 'error',
|
'type' => 'error',
|
||||||
'message' => 'You exceed your members limit.',
|
'message' => 'You exceed your members limit.',
|
||||||
], 401);
|
], 401);
|
||||||
@@ -37,7 +41,7 @@ class ConvertFolderIntoTeamFolderController extends Controller
|
|||||||
|
|
||||||
// Update root team folder
|
// Update root team folder
|
||||||
$folder->update([
|
$folder->update([
|
||||||
'team_folder' => 1,
|
'team_folder' => true,
|
||||||
'parent_id' => null,
|
'parent_id' => null,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
@@ -54,6 +58,6 @@ class ConvertFolderIntoTeamFolderController extends Controller
|
|||||||
// Invite team members
|
// Invite team members
|
||||||
($this->inviteMembers)($request->input('invitations'), $folder);
|
($this->inviteMembers)($request->input('invitations'), $folder);
|
||||||
|
|
||||||
return response($folder, 201);
|
return response()->json(new FolderResource($folder), 201);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,35 +2,53 @@
|
|||||||
namespace Domain\Teams\Controllers;
|
namespace Domain\Teams\Controllers;
|
||||||
|
|
||||||
use App\Users\Models\User;
|
use App\Users\Models\User;
|
||||||
use Illuminate\Http\Response;
|
use Illuminate\Http\JsonResponse;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Domain\Teams\Models\TeamFolderMember;
|
use Domain\Teams\Models\TeamFolderMember;
|
||||||
use Domain\Teams\Models\TeamFolderInvitation;
|
use Domain\Teams\Models\TeamFolderInvitation;
|
||||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
|
||||||
use Domain\Teams\Resources\TeamInvitationResource;
|
use Domain\Teams\Resources\TeamInvitationResource;
|
||||||
use Domain\Teams\Actions\ClearActionInInvitationNotificationAction;
|
use Domain\Teams\Actions\ClearActionInInvitationNotificationAction;
|
||||||
|
|
||||||
class InvitationsController extends Controller
|
class InvitationsController extends Controller
|
||||||
{
|
{
|
||||||
public function show(TeamFolderInvitation $invitation)
|
public function show(TeamFolderInvitation $invitation): JsonResponse
|
||||||
{
|
{
|
||||||
|
// Check if invitation is not pending
|
||||||
if ($invitation->status !== 'pending') {
|
if ($invitation->status !== 'pending') {
|
||||||
abort(410);
|
return response()->json([
|
||||||
|
'type' => 'error',
|
||||||
|
'message' => 'Invitation was already used.',
|
||||||
|
], 410);
|
||||||
}
|
}
|
||||||
|
|
||||||
return new TeamInvitationResource($invitation);
|
return response()->json(new TeamInvitationResource($invitation));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(
|
public function update(
|
||||||
TeamFolderInvitation $invitation,
|
TeamFolderInvitation $invitation,
|
||||||
ClearActionInInvitationNotificationAction $clearActionInInvitationNotification,
|
ClearActionInInvitationNotificationAction $clearActionInInvitationNotification,
|
||||||
): ResponseFactory|Response {
|
): JsonResponse {
|
||||||
|
// Check if invitation has other state than pending
|
||||||
|
if ($invitation->status !== 'pending') {
|
||||||
|
return response()->json([
|
||||||
|
'type' => 'error',
|
||||||
|
'message' => 'The invitation was previously used.',
|
||||||
|
], 422);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepare success message
|
||||||
|
$successMessage = [
|
||||||
|
'type' => 'success',
|
||||||
|
'message' => 'Invitation was accepted.',
|
||||||
|
];
|
||||||
|
|
||||||
|
// Get invited user
|
||||||
$user = User::where('email', $invitation->email)
|
$user = User::where('email', $invitation->email)
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
if ($user) {
|
if ($user) {
|
||||||
if (isDemoAccount()) {
|
if (isDemoAccount()) {
|
||||||
return response('Done', 204);
|
return response()->json($successMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
$invitation->accept();
|
$invitation->accept();
|
||||||
@@ -52,13 +70,27 @@ class InvitationsController extends Controller
|
|||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response('Done', 204);
|
return response()->json($successMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy(
|
public function destroy(
|
||||||
TeamFolderInvitation $invitation,
|
TeamFolderInvitation $invitation,
|
||||||
ClearActionInInvitationNotificationAction $clearActionInInvitationNotification,
|
ClearActionInInvitationNotificationAction $clearActionInInvitationNotification,
|
||||||
): ResponseFactory|Response {
|
): JsonResponse {
|
||||||
|
// Check if invitation has other state than pending
|
||||||
|
if ($invitation->status !== 'pending') {
|
||||||
|
return response()->json([
|
||||||
|
'type' => 'error',
|
||||||
|
'message' => 'The invitation was previously used.',
|
||||||
|
], 422);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prepare success message
|
||||||
|
$successMessage = [
|
||||||
|
'type' => 'success',
|
||||||
|
'message' => 'Invitation was declined.',
|
||||||
|
];
|
||||||
|
|
||||||
$invitation->reject();
|
$invitation->reject();
|
||||||
|
|
||||||
// Get user from invitation
|
// Get user from invitation
|
||||||
@@ -68,12 +100,12 @@ class InvitationsController extends Controller
|
|||||||
// Clear action in existing notification
|
// Clear action in existing notification
|
||||||
if ($user) {
|
if ($user) {
|
||||||
if (isDemoAccount()) {
|
if (isDemoAccount()) {
|
||||||
return response('Done', 204);
|
return response()->json($successMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
$clearActionInInvitationNotification($user, $invitation);
|
$clearActionInInvitationNotification($user, $invitation);
|
||||||
}
|
}
|
||||||
|
|
||||||
return response('Done', 204);
|
return response()->json($successMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,25 +2,31 @@
|
|||||||
namespace Domain\Teams\Controllers;
|
namespace Domain\Teams\Controllers;
|
||||||
|
|
||||||
use Gate;
|
use Gate;
|
||||||
use Illuminate\Http\Response;
|
|
||||||
use Domain\Folders\Models\Folder;
|
use Domain\Folders\Models\Folder;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Contracts\Foundation\Application;
|
|
||||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
|
||||||
|
|
||||||
class LeaveTeamFolderController extends Controller
|
class LeaveTeamFolderController extends Controller
|
||||||
{
|
{
|
||||||
public function __invoke(Folder $folder): Response|Application|ResponseFactory
|
public function __invoke(Folder $folder): JsonResponse
|
||||||
{
|
{
|
||||||
|
$successMessage = [
|
||||||
|
'type' => 'success',
|
||||||
|
'message' => 'You left the team folder.',
|
||||||
|
];
|
||||||
|
|
||||||
// Abort in demo mode
|
// Abort in demo mode
|
||||||
if (isDemoAccount()) {
|
if (isDemoAccount()) {
|
||||||
return response('Done.', 204);
|
return response()->json($successMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Authorize action
|
// Authorize action
|
||||||
if (! Gate::any(['can-edit', 'can-view'], [$folder, null])) {
|
if (! Gate::any(['can-edit', 'can-view'], [$folder, null])) {
|
||||||
abort(403, 'Access Denied');
|
return response()->json([
|
||||||
|
'type' => 'error',
|
||||||
|
'message' => 'You are not member of this team folder.',
|
||||||
|
], 403);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find and delete attached member from team folder
|
// Find and delete attached member from team folder
|
||||||
@@ -29,6 +35,6 @@ class LeaveTeamFolderController extends Controller
|
|||||||
->where('user_id', auth()->id())
|
->where('user_id', auth()->id())
|
||||||
->delete();
|
->delete();
|
||||||
|
|
||||||
return response('Done.', 204);
|
return response()->json($successMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,13 @@ namespace Domain\Teams\Controllers;
|
|||||||
|
|
||||||
use Gate;
|
use Gate;
|
||||||
use Domain\Folders\Models\Folder;
|
use Domain\Folders\Models\Folder;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
class NavigationTreeController
|
class NavigationTreeController
|
||||||
{
|
{
|
||||||
public function __invoke(Folder $folder): array
|
public function __invoke(Folder $folder): JsonResponse
|
||||||
{
|
{
|
||||||
|
// Get the root team folder
|
||||||
$teamFolder = $folder->getLatestParent();
|
$teamFolder = $folder->getLatestParent();
|
||||||
|
|
||||||
if (! Gate::any(['can-edit', 'can-view'], [$teamFolder, null])) {
|
if (! Gate::any(['can-edit', 'can-view'], [$teamFolder, null])) {
|
||||||
@@ -19,13 +21,13 @@ class NavigationTreeController
|
|||||||
->sortable()
|
->sortable()
|
||||||
->get(['id', 'parent_id', 'id', 'name', 'team_folder']);
|
->get(['id', 'parent_id', 'id', 'name', 'team_folder']);
|
||||||
|
|
||||||
return [
|
return response()->json([
|
||||||
[
|
[
|
||||||
'name' => $teamFolder->name,
|
'name' => $teamFolder->name,
|
||||||
'folders' => $folders,
|
'folders' => $folders,
|
||||||
'isMovable' => true,
|
'isMovable' => true,
|
||||||
'isOpen' => true,
|
'isOpen' => true,
|
||||||
],
|
],
|
||||||
];
|
]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ namespace Domain\Teams\Controllers;
|
|||||||
|
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use Domain\Files\Models\File;
|
use Domain\Files\Models\File;
|
||||||
use Illuminate\Http\Response;
|
|
||||||
use Domain\Folders\Models\Folder;
|
use Domain\Folders\Models\Folder;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Support\Facades\Auth;
|
use Illuminate\Support\Facades\Auth;
|
||||||
@@ -15,7 +15,6 @@ use Domain\Folders\Resources\FolderResource;
|
|||||||
use Domain\Teams\Actions\UpdateMembersAction;
|
use Domain\Teams\Actions\UpdateMembersAction;
|
||||||
use Domain\Folders\Resources\FolderCollection;
|
use Domain\Folders\Resources\FolderCollection;
|
||||||
use Domain\Teams\Actions\UpdateInvitationsAction;
|
use Domain\Teams\Actions\UpdateInvitationsAction;
|
||||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
|
||||||
use Domain\Teams\Requests\CreateTeamFolderRequest;
|
use Domain\Teams\Requests\CreateTeamFolderRequest;
|
||||||
use Domain\Teams\Requests\UpdateTeamFolderMembersRequest;
|
use Domain\Teams\Requests\UpdateTeamFolderMembersRequest;
|
||||||
use Domain\Teams\Actions\InviteMembersIntoTeamFolderAction;
|
use Domain\Teams\Actions\InviteMembersIntoTeamFolderAction;
|
||||||
@@ -63,15 +62,20 @@ class TeamFoldersController extends Controller
|
|||||||
|
|
||||||
public function store(
|
public function store(
|
||||||
CreateTeamFolderRequest $request,
|
CreateTeamFolderRequest $request,
|
||||||
): ResponseFactory | Response {
|
): JsonResponse {
|
||||||
// Abort in demo mode
|
// Abort in demo mode
|
||||||
abort_if(isDemoAccount(), 201, 'Done.');
|
if (isDemoAccount()) {
|
||||||
|
return response()->json([
|
||||||
|
'type' => 'success',
|
||||||
|
'message' => 'The team folder was created',
|
||||||
|
], 201);
|
||||||
|
}
|
||||||
|
|
||||||
$data = CreateTeamFolderData::fromRequest($request);
|
$data = CreateTeamFolderData::fromRequest($request);
|
||||||
|
|
||||||
// Check if user can create team folder
|
// Check if user can create team folder
|
||||||
if (! $request->user()->canCreateTeamFolder()) {
|
if (! $request->user()->canCreateTeamFolder()) {
|
||||||
return response([
|
return response()->json([
|
||||||
'type' => 'error',
|
'type' => 'error',
|
||||||
'message' => 'This user action is not allowed.',
|
'message' => 'This user action is not allowed.',
|
||||||
], 401);
|
], 401);
|
||||||
@@ -79,7 +83,7 @@ class TeamFoldersController extends Controller
|
|||||||
|
|
||||||
// Check if user didn't exceed max team members limit
|
// Check if user didn't exceed max team members limit
|
||||||
if (! $request->user()->canInviteTeamMembers($data->invitations)) {
|
if (! $request->user()->canInviteTeamMembers($data->invitations)) {
|
||||||
return response([
|
return response()->json([
|
||||||
'type' => 'error',
|
'type' => 'error',
|
||||||
'message' => 'You exceed your members limit.',
|
'message' => 'You exceed your members limit.',
|
||||||
], 401);
|
], 401);
|
||||||
@@ -89,7 +93,7 @@ class TeamFoldersController extends Controller
|
|||||||
$folder = Folder::create([
|
$folder = Folder::create([
|
||||||
'user_id' => $request->user()->id,
|
'user_id' => $request->user()->id,
|
||||||
'name' => $data->name,
|
'name' => $data->name,
|
||||||
'team_folder' => 1,
|
'team_folder' => true,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
// Attach owner into members
|
// Attach owner into members
|
||||||
@@ -102,7 +106,7 @@ class TeamFoldersController extends Controller
|
|||||||
// Invite team members
|
// Invite team members
|
||||||
$this->inviteMembers->onQueue()->execute($data->invitations, $folder);
|
$this->inviteMembers->onQueue()->execute($data->invitations, $folder);
|
||||||
|
|
||||||
return response(new FolderResource($folder), 201);
|
return response()->json(new FolderResource($folder), 201);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update(
|
public function update(
|
||||||
@@ -110,10 +114,10 @@ class TeamFoldersController extends Controller
|
|||||||
Folder $folder,
|
Folder $folder,
|
||||||
UpdateInvitationsAction $updateInvitations,
|
UpdateInvitationsAction $updateInvitations,
|
||||||
UpdateMembersAction $updateMembers,
|
UpdateMembersAction $updateMembers,
|
||||||
): ResponseFactory | Response {
|
): JsonResponse {
|
||||||
// Abort in demo mode
|
// Abort in demo mode
|
||||||
if (isDemoAccount()) {
|
if (isDemoAccount()) {
|
||||||
return response(new FolderResource($folder), 201);
|
return response()->json(new FolderResource($folder), 201);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Authorize request
|
// Authorize request
|
||||||
@@ -121,7 +125,7 @@ class TeamFoldersController extends Controller
|
|||||||
|
|
||||||
// Check if user didn't exceed max team members limit
|
// Check if user didn't exceed max team members limit
|
||||||
if (! $request->user()->canInviteTeamMembers($request->input('invitations'))) {
|
if (! $request->user()->canInviteTeamMembers($request->input('invitations'))) {
|
||||||
return response([
|
return response()->json([
|
||||||
'type' => 'error',
|
'type' => 'error',
|
||||||
'message' => 'You exceed your members limit.',
|
'message' => 'You exceed your members limit.',
|
||||||
], 401);
|
], 401);
|
||||||
@@ -137,14 +141,26 @@ class TeamFoldersController extends Controller
|
|||||||
$request->input('members')
|
$request->input('members')
|
||||||
);
|
);
|
||||||
|
|
||||||
return response(new FolderResource($folder), 201);
|
return response()->json(new FolderResource($folder), 201);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function destroy(Folder $folder): ResponseFactory | Response
|
public function destroy(Folder $folder): JsonResponse
|
||||||
{
|
{
|
||||||
|
if (! $folder->team_folder) {
|
||||||
|
return response()->json([
|
||||||
|
'type' => 'error',
|
||||||
|
'message' => "You're trying to access non-team folder.",
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
$successMessage = [
|
||||||
|
'type' => 'success',
|
||||||
|
'message' => 'The team was dissolved.',
|
||||||
|
];
|
||||||
|
|
||||||
// Abort in demo mode
|
// Abort in demo mode
|
||||||
if (isDemoAccount()) {
|
if (isDemoAccount()) {
|
||||||
return response('Done.', 201);
|
return response()->json($successMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->authorize('owner', $folder);
|
$this->authorize('owner', $folder);
|
||||||
@@ -162,9 +178,9 @@ class TeamFoldersController extends Controller
|
|||||||
($this->setTeamFolderPropertyForAllChildren)($folder, false);
|
($this->setTeamFolderPropertyForAllChildren)($folder, false);
|
||||||
|
|
||||||
$folder->update([
|
$folder->update([
|
||||||
'team_folder' => 0,
|
'team_folder' => false,
|
||||||
]);
|
]);
|
||||||
|
|
||||||
return response('Done.', 204);
|
return response()->json($successMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|||||||
* @property string parent_id
|
* @property string parent_id
|
||||||
* @property string email
|
* @property string email
|
||||||
* @property string status
|
* @property string status
|
||||||
|
* @property string permission
|
||||||
* @property string created_at
|
* @property string created_at
|
||||||
* @property string updated_at
|
* @property string updated_at
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -23,7 +23,10 @@ class ConvertIntoTeamFolderRequest extends FormRequest
|
|||||||
public function rules()
|
public function rules()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'invitations' => 'required|array',
|
'invitations' => 'required|array',
|
||||||
|
'invitations.*.email' => 'required|email',
|
||||||
|
'invitations.*.permission' => 'required|string',
|
||||||
|
'invitations.*.type' => 'required|string',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,8 +23,11 @@ class CreateTeamFolderRequest extends FormRequest
|
|||||||
public function rules()
|
public function rules()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'name' => 'required|string',
|
'name' => 'required|string',
|
||||||
'invitations' => 'required|array',
|
'invitations' => 'required|array',
|
||||||
|
'invitations.*.email' => 'required|email',
|
||||||
|
'invitations.*.permission' => 'required|string',
|
||||||
|
'invitations.*.type' => 'required|string',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,8 +23,13 @@ class UpdateTeamFolderMembersRequest extends FormRequest
|
|||||||
public function rules()
|
public function rules()
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'members' => 'present|array',
|
'members' => 'present|array',
|
||||||
'invitations' => 'present|array',
|
'members.*.permission' => 'required|string',
|
||||||
|
'members.*.id' => 'required|uuid',
|
||||||
|
'invitations' => 'present|array',
|
||||||
|
'invitations.*.email' => 'required|email',
|
||||||
|
'invitations.*.permission' => 'required|string',
|
||||||
|
'invitations.*.type' => 'required|string',
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ namespace Domain\UploadRequest\Controllers;
|
|||||||
|
|
||||||
use Auth;
|
use Auth;
|
||||||
use Gate;
|
use Gate;
|
||||||
use Illuminate\Auth\Access\AuthorizationException;
|
|
||||||
use Notification;
|
use Notification;
|
||||||
use Illuminate\Http\JsonResponse;
|
|
||||||
use Domain\Folders\Models\Folder;
|
use Domain\Folders\Models\Folder;
|
||||||
|
use Illuminate\Http\JsonResponse;
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use Illuminate\Auth\Access\AuthorizationException;
|
||||||
use Domain\UploadRequest\Requests\StoreUploadRequest;
|
use Domain\UploadRequest\Requests\StoreUploadRequest;
|
||||||
use Domain\UploadRequest\Resources\UploadRequestResource;
|
use Domain\UploadRequest\Resources\UploadRequestResource;
|
||||||
use Domain\UploadRequest\Notifications\UploadRequestNotification;
|
use Domain\UploadRequest\Notifications\UploadRequestNotification;
|
||||||
|
|||||||
Reference in New Issue
Block a user