mirror of
https://github.com/solidtime-io/solidtime.git
synced 2026-08-16 04:02:15 +01:00
Added invitation delete endpoint
This commit is contained in:
committed by
Constantin Graf
parent
ad6146c483
commit
a149db655c
@@ -9,12 +9,21 @@ use App\Http\Requests\V1\Invitation\InvitationStoreRequest;
|
||||
use App\Http\Resources\V1\Invitation\InvitationCollection;
|
||||
use App\Http\Resources\V1\Invitation\InvitationResource;
|
||||
use App\Models\Organization;
|
||||
use App\Models\OrganizationInvitation;
|
||||
use Illuminate\Auth\Access\AuthorizationException;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Laravel\Jetstream\Contracts\InvitesTeamMembers;
|
||||
|
||||
class InvitationController extends Controller
|
||||
{
|
||||
protected function checkPermission(Organization $organization, string $permission, ?OrganizationInvitation $organizationInvitation = null): void
|
||||
{
|
||||
parent::checkPermission($organization, $permission);
|
||||
if ($organizationInvitation !== null && $organizationInvitation->organization_id !== $organization->id) {
|
||||
throw new AuthorizationException('Invitation does not belong to organization');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* List all invitations of an organization
|
||||
*
|
||||
@@ -54,4 +63,20 @@ class InvitationController extends Controller
|
||||
|
||||
return response()->json(null, 204);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove a pending invitation
|
||||
*
|
||||
* @throws AuthorizationException
|
||||
*
|
||||
* @operationId removeInvitation
|
||||
*/
|
||||
public function destroy(Organization $organization, OrganizationInvitation $invitation): JsonResponse
|
||||
{
|
||||
$this->checkPermission($organization, 'invitations:remove', $invitation);
|
||||
|
||||
$invitation->delete();
|
||||
|
||||
return response()->json(null, 204);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,9 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Database\Factories\OrganizationInvitationFactory;
|
||||
use Illuminate\Database\Eloquent\Concerns\HasUuids;
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Relations\BelongsTo;
|
||||
use Laravel\Jetstream\Jetstream;
|
||||
use Laravel\Jetstream\TeamInvitation as JetstreamTeamInvitation;
|
||||
@@ -15,9 +17,12 @@ use Laravel\Jetstream\TeamInvitation as JetstreamTeamInvitation;
|
||||
* @property string $role
|
||||
* @property string $organization_id
|
||||
* @property-read Organization $organization
|
||||
*
|
||||
* @method static OrganizationInvitationFactory factory()
|
||||
*/
|
||||
class OrganizationInvitation extends JetstreamTeamInvitation
|
||||
{
|
||||
use HasFactory;
|
||||
use HasUuids;
|
||||
|
||||
/**
|
||||
|
||||
@@ -86,5 +86,6 @@ class AppServiceProvider extends ServiceProvider
|
||||
});
|
||||
|
||||
Route::model('member', Membership::class);
|
||||
Route::model('invitation', OrganizationInvitation::class);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,6 +93,9 @@ class JetstreamServiceProvider extends ServiceProvider
|
||||
'organizations:view',
|
||||
'organizations:update',
|
||||
'import',
|
||||
'invitations:view',
|
||||
'invitations:create',
|
||||
'invitations:remove',
|
||||
'members:view',
|
||||
'members:invite-placeholder',
|
||||
'members:change-role',
|
||||
|
||||
Reference in New Issue
Block a user