79
common/Workspaces/Controllers/WorkspaceMembersController.php
Executable file
79
common/Workspaces/Controllers/WorkspaceMembersController.php
Executable file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace Common\Workspaces\Controllers;
|
||||
|
||||
use App\Models\User;
|
||||
use Auth;
|
||||
use Common\Core\BaseController;
|
||||
use Common\Workspaces\Actions\JoinWorkspace;
|
||||
use Common\Workspaces\Actions\RemoveMemberFromWorkspace;
|
||||
use Common\Workspaces\Workspace;
|
||||
use Common\Workspaces\WorkspaceInvite;
|
||||
use Common\Workspaces\WorkspaceMember;
|
||||
use Illuminate\Http\Request;
|
||||
use Session;
|
||||
use const App\Providers\WORKSPACE_HOME_ROUTE;
|
||||
|
||||
class WorkspaceMembersController extends BaseController
|
||||
{
|
||||
public function __construct(
|
||||
protected Request $request,
|
||||
protected User $user
|
||||
) {
|
||||
}
|
||||
|
||||
public function join(WorkspaceInvite $workspaceInvite)
|
||||
{
|
||||
if ($user = Auth::user()) {
|
||||
app(JoinWorkspace::class)->execute($workspaceInvite, $user);
|
||||
if ($this->request->expectsJson()) {
|
||||
return $this->success([
|
||||
'workspace' => $workspaceInvite->workspace->loadCount(
|
||||
'members',
|
||||
),
|
||||
]);
|
||||
} else {
|
||||
return redirect(WORKSPACE_HOME_ROUTE);
|
||||
}
|
||||
} else {
|
||||
Session::put('workspaceInvite', $workspaceInvite->id);
|
||||
if (User::where('email', $workspaceInvite->email)->exists()) {
|
||||
return redirect(
|
||||
"workspace/join/login?email={$workspaceInvite->email}",
|
||||
);
|
||||
} else {
|
||||
return redirect(
|
||||
"workspace/join/register?email={$workspaceInvite->email}",
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function destroy(Workspace $workspace, int $userId)
|
||||
{
|
||||
$this->authorize('destroy', [
|
||||
WorkspaceMember::class,
|
||||
$workspace,
|
||||
$userId,
|
||||
]);
|
||||
|
||||
app(RemoveMemberFromWorkspace::class)->execute($workspace, $userId);
|
||||
|
||||
return $this->success();
|
||||
}
|
||||
|
||||
public function changeRole(Workspace $workspace, int $memberId)
|
||||
{
|
||||
$this->authorize('update', [WorkspaceMember::class, $workspace]);
|
||||
|
||||
$validatedData = $this->request->validate([
|
||||
'roleId' => 'required|integer',
|
||||
]);
|
||||
|
||||
app(WorkspaceMember::class)
|
||||
->where('id', $memberId)
|
||||
->update(['role_id' => $validatedData['roleId']]);
|
||||
|
||||
return $this->success();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user