Add workspace update functionality (#699)
* Add workspace update functionality * Refactor workspace settings header layout and edit button styling * Update workspace route and API endpoint to use root path --------- Co-authored-by: Julien Nahum <julien@nahum.net>
This commit is contained in:
@@ -66,7 +66,7 @@ class WorkspaceController extends Controller
|
||||
|
||||
public function create(Request $request)
|
||||
{
|
||||
$user = $request->user();
|
||||
$user = $request->user();
|
||||
|
||||
$this->validate($request, [
|
||||
'name' => 'required',
|
||||
@@ -91,4 +91,24 @@ class WorkspaceController extends Controller
|
||||
'workspace' => new WorkspaceResource($workspace),
|
||||
]);
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$workspace = Auth::user()->workspaces()->findOrFail($id);
|
||||
$this->authorize('update', $workspace);
|
||||
|
||||
$this->validate($request, [
|
||||
'name' => 'required',
|
||||
]);
|
||||
|
||||
$workspace->update([
|
||||
'name' => $request->name,
|
||||
'icon' => $request->emoji ?? '',
|
||||
]);
|
||||
|
||||
return $this->success([
|
||||
'message' => 'Workspace updated.',
|
||||
'workspace' => new WorkspaceResource($workspace),
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ class WorkspacePolicy
|
||||
*/
|
||||
public function update(User $user, Workspace $workspace)
|
||||
{
|
||||
return false;
|
||||
return $user->ownsWorkspace($workspace);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -143,6 +143,7 @@ Route::group(['middleware' => 'auth:api'], function () {
|
||||
)->name('forms.index');
|
||||
Route::put('/custom-domains', [WorkspaceController::class, 'saveCustomDomain'])->name('save-custom-domains');
|
||||
Route::put('/email-settings', [WorkspaceController::class, 'saveEmailSettings'])->name('save-email-settings');
|
||||
Route::put('/', [WorkspaceController::class, 'update'])->name('update');
|
||||
Route::delete('/', [WorkspaceController::class, 'delete'])->name('delete');
|
||||
|
||||
Route::middleware('pro-form')->group(function () {
|
||||
|
||||
@@ -5,7 +5,7 @@ it('can create and delete Workspace', function () {
|
||||
|
||||
for ($i = 1; $i <= 3; $i++) {
|
||||
$this->postJson(route('open.workspaces.create'), [
|
||||
'name' => 'Workspace Test - '.$i,
|
||||
'name' => 'Workspace Test - ' . $i,
|
||||
'icon' => '🧪',
|
||||
])
|
||||
->assertSuccessful()
|
||||
@@ -34,3 +34,30 @@ it('can create and delete Workspace', function () {
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it('can update workspace', function () {
|
||||
$user = $this->actingAsUser();
|
||||
|
||||
$this->postJson(route('open.workspaces.create'), [
|
||||
'name' => 'Workspace Test',
|
||||
'icon' => '🧪',
|
||||
])
|
||||
->assertSuccessful()
|
||||
->assertJson([
|
||||
'type' => 'success',
|
||||
'message' => 'Workspace created.',
|
||||
]);
|
||||
|
||||
expect($user->workspaces()->count())->toBe(1);
|
||||
|
||||
$workspace = $user->workspaces()->first();
|
||||
$this->putJson(route('open.workspaces.update', $workspace->id), [
|
||||
'name' => 'Workspace Test Updated',
|
||||
'icon' => '🔬',
|
||||
])
|
||||
->assertSuccessful()
|
||||
->assertJson([
|
||||
'type' => 'success',
|
||||
'message' => 'Workspace updated.',
|
||||
]);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user