DEleted function in request and changed the way the controller uses it,
This commit is contained in:
@@ -6,6 +6,7 @@ use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Admin\UpdateUserAdminStatusRequest;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Support\Arr;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
|
||||
@@ -24,6 +25,7 @@ class UserManagementController extends Controller
|
||||
|
||||
public function update(UpdateUserAdminStatusRequest $request, User $user): RedirectResponse
|
||||
{
|
||||
|
||||
$user->forceFill([
|
||||
'is_admin' => $request->boolean('is_admin'),
|
||||
])->save();
|
||||
|
||||
@@ -21,15 +21,18 @@ class ProjectBacklogController extends Controller
|
||||
|
||||
public function index(Request $request, Project $project): Response
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userCanViewProject($request->user(), $project),
|
||||
$this->projectPermissionService->userCanViewProject($user, $project),
|
||||
403,
|
||||
);
|
||||
|
||||
|
||||
return Inertia::render('projects/Backlog', [
|
||||
'boardColumns' => $project->boardColumns()->get(),
|
||||
'canEditTickets' => $this->projectPermissionService->userHasPermission($request->user(), $project, 'edit'),
|
||||
'canCreateTickets' => $this->projectPermissionService->userHasPermission($request->user(), $project, 'create'),
|
||||
'canEditTickets' => $this->projectPermissionService->userHasPermission($user, $project, 'edit'),
|
||||
'canCreateTickets' => $this->projectPermissionService->userHasPermission($user, $project, 'create'),
|
||||
'project' => $project,
|
||||
'status' => session('status'),
|
||||
'ticketPriorities' => $project->ticketPriorities()->get(),
|
||||
@@ -45,12 +48,15 @@ class ProjectBacklogController extends Controller
|
||||
|
||||
public function store(StoreProjectTicketRequest $request, Project $project): RedirectResponse
|
||||
{
|
||||
$user = $request->user();
|
||||
$validated = $request->validated();
|
||||
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userHasPermission($request->user(), $project, 'create'),
|
||||
$this->projectPermissionService->userHasPermission($user, $project, 'create'),
|
||||
403,
|
||||
);
|
||||
|
||||
$ticket = $this->createProjectTicket->handle($project, $request->validated(), $request->user());
|
||||
$ticket = $this->createProjectTicket->handle($project, $validated, $user);
|
||||
|
||||
return to_route('projects.backlog.index', $project)
|
||||
->with('status', "{$ticket->ticket_key} was added to the backlog.");
|
||||
|
||||
@@ -22,8 +22,10 @@ class ProjectBoardController extends Controller
|
||||
|
||||
public function index(Request $request, Project $project): Response
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userCanViewProject($request->user(), $project),
|
||||
$this->projectPermissionService->userCanViewProject($user, $project),
|
||||
403,
|
||||
);
|
||||
|
||||
@@ -34,7 +36,7 @@ class ProjectBoardController extends Controller
|
||||
->with(['ticketPriority', 'ticketType']),
|
||||
])
|
||||
->get(),
|
||||
'canEditTickets' => $this->projectPermissionService->userHasPermission($request->user(), $project, 'edit'),
|
||||
'canEditTickets' => $this->projectPermissionService->userHasPermission($user, $project, 'edit'),
|
||||
'project' => $project,
|
||||
'status' => session('status'),
|
||||
]);
|
||||
@@ -45,8 +47,10 @@ class ProjectBoardController extends Controller
|
||||
Project $project,
|
||||
Ticket $ticket,
|
||||
): RedirectResponse {
|
||||
$user = $request->user();
|
||||
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userHasPermission($request->user(), $project, 'edit'),
|
||||
$this->projectPermissionService->userHasPermission($user, $project, 'edit'),
|
||||
403,
|
||||
);
|
||||
|
||||
@@ -74,7 +78,7 @@ class ProjectBoardController extends Controller
|
||||
|
||||
$this->createTicketWorklogEntry->handle(
|
||||
$ticket->fresh(),
|
||||
$request->user(),
|
||||
$user,
|
||||
'status_changed',
|
||||
"Moved from {$originLabel} to {$destinationLabel}.",
|
||||
[
|
||||
|
||||
@@ -11,6 +11,7 @@ use App\Models\Team;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Arr;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
|
||||
@@ -23,11 +24,13 @@ class ProjectController extends Controller
|
||||
|
||||
public function index(Request $request): Response
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
$projectQuery = Project::query()
|
||||
->orderByDesc('id');
|
||||
|
||||
if (! $request->user()->is_admin) {
|
||||
$viewableProjectIds = $this->projectPermissionService->viewableProjectIds($request->user());
|
||||
if (! $user->is_admin) {
|
||||
$viewableProjectIds = $this->projectPermissionService->viewableProjectIds($user);
|
||||
|
||||
if ($viewableProjectIds === []) {
|
||||
return Inertia::render('projects/Index', [
|
||||
@@ -60,21 +63,23 @@ class ProjectController extends Controller
|
||||
|
||||
public function show(Request $request, Project $project): Response
|
||||
{
|
||||
$user = $request->user();
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userCanViewProject($request->user(), $project),
|
||||
$this->projectPermissionService->userCanViewProject($user, $project),
|
||||
403,
|
||||
);
|
||||
|
||||
return Inertia::render('projects/Show', [
|
||||
'canManageAccess' => $this->projectPermissionService->userCanManageProjectAccess($request->user(), $project),
|
||||
'canManageAccess' => $this->projectPermissionService->userCanManageProjectAccess($user, $project),
|
||||
'project' => $project,
|
||||
]);
|
||||
}
|
||||
|
||||
public function access(Request $request, Project $project): Response
|
||||
{
|
||||
$user = $request->user();
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userCanManageProjectAccess($request->user(), $project),
|
||||
$this->projectPermissionService->userCanManageProjectAccess($user, $project),
|
||||
403,
|
||||
);
|
||||
|
||||
@@ -107,12 +112,21 @@ class ProjectController extends Controller
|
||||
Project $project,
|
||||
User $user,
|
||||
): RedirectResponse {
|
||||
$user = $request->user();
|
||||
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userCanManageProjectAccess($request->user(), $project),
|
||||
$this->projectPermissionService->userCanManageProjectAccess($user, $project),
|
||||
403,
|
||||
);
|
||||
|
||||
$this->projectPermissionService->syncUserPermissions($project, $user, $request->permissions());
|
||||
$validated = $request->validated();
|
||||
$permissions = collect(Arr::get($validated, 'permissions'))
|
||||
->map(fn (mixed $permission): string => (string) $permission)
|
||||
->unique()
|
||||
->values()
|
||||
->all();
|
||||
|
||||
$this->projectPermissionService->syncUserPermissions($project, $user, $permissions);
|
||||
|
||||
return to_route('projects.access', $project)
|
||||
->with('status', "{$user->name} permissions were updated.");
|
||||
@@ -128,7 +142,14 @@ class ProjectController extends Controller
|
||||
403,
|
||||
);
|
||||
|
||||
$this->projectPermissionService->syncTeamPermissions($project, $team, $request->permissions());
|
||||
$validated = $request->validated();
|
||||
$permissions = collect(Arr::get($validated, 'permissions'))
|
||||
->map(fn (mixed $permission): string => (string) $permission)
|
||||
->unique()
|
||||
->values()
|
||||
->all();
|
||||
|
||||
$this->projectPermissionService->syncTeamPermissions($project, $team, $permissions);
|
||||
|
||||
return to_route('projects.access', $project)
|
||||
->with('status', "{$team->name} permissions were updated.");
|
||||
|
||||
@@ -13,6 +13,7 @@ use App\Models\User;
|
||||
use App\Models\UserGitConnection;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Inertia\Inertia;
|
||||
@@ -28,20 +29,21 @@ class ProjectRepositorySettingsController extends Controller
|
||||
|
||||
public function show(Request $request, Project $project): Response
|
||||
{
|
||||
$user = $request->user();
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userCanManageProjectAccess($request->user(), $project),
|
||||
$this->projectPermissionService->userCanManageProjectAccess($user, $project),
|
||||
403,
|
||||
);
|
||||
|
||||
return Inertia::render('projects/settings/Repositories', [
|
||||
'availableRepositorySources' => $this->availableRepositorySources($request->user()),
|
||||
'availableRepositorySources' => $this->availableRepositorySources($user),
|
||||
'project' => $project,
|
||||
'repositoryConnections' => $project->repositoryConnections()
|
||||
->get()
|
||||
->map(fn (RepositoryConnection $repositoryConnection): array => [
|
||||
'base_url' => $repositoryConnection->base_url,
|
||||
'created_at' => $repositoryConnection->created_at?->toISOString(),
|
||||
'has_personal_access' => $this->hasPersonalAccess($request->user(), $repositoryConnection),
|
||||
'has_personal_access' => $this->hasPersonalAccess($user, $repositoryConnection),
|
||||
'id' => $repositoryConnection->id,
|
||||
'owner_name' => $repositoryConnection->owner_name,
|
||||
'project_id' => $repositoryConnection->project_id,
|
||||
@@ -62,15 +64,20 @@ class ProjectRepositorySettingsController extends Controller
|
||||
StoreRepositoryConnectionRequest $request,
|
||||
Project $project,
|
||||
): RedirectResponse {
|
||||
$user = $request->user();
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userCanManageProjectAccess($request->user(), $project),
|
||||
$this->projectPermissionService->userCanManageProjectAccess($user, $project),
|
||||
403,
|
||||
);
|
||||
|
||||
$validated = $request->validated();
|
||||
$userGitConnectionId = Arr::get($validated, 'user_git_connection_id');
|
||||
$providerRepositoryId = Arr::get($validated, 'provider_repository_id');
|
||||
|
||||
$repositoryAttributes = $this->repositoryAttributesForSelection(
|
||||
$request->user(),
|
||||
$request->userGitConnectionId(),
|
||||
$request->providerRepositoryId(),
|
||||
$user,
|
||||
$userGitConnectionId,
|
||||
$providerRepositoryId,
|
||||
);
|
||||
|
||||
$this->ensureRepositoryConnectionIsUnique($project, $repositoryAttributes);
|
||||
@@ -86,15 +93,22 @@ class ProjectRepositorySettingsController extends Controller
|
||||
Project $project,
|
||||
RepositoryConnection $repositoryConnection,
|
||||
): RedirectResponse {
|
||||
$user = $request->user();
|
||||
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userCanManageProjectAccess($request->user(), $project),
|
||||
$this->projectPermissionService->userCanManageProjectAccess($user, $project),
|
||||
403,
|
||||
);
|
||||
|
||||
|
||||
$validated = $request->validated();
|
||||
$userGitConnectionId = Arr::get($validated, 'user_git_connection_id');
|
||||
$providerRepositoryId = Arr::get($validated, 'provider_repository_id');
|
||||
|
||||
$repositoryAttributes = $this->repositoryAttributesForSelection(
|
||||
$request->user(),
|
||||
$request->userGitConnectionId(),
|
||||
$request->providerRepositoryId(),
|
||||
$user,
|
||||
$userGitConnectionId,
|
||||
$providerRepositoryId,
|
||||
);
|
||||
|
||||
$this->ensureRepositoryConnectionIsUnique(
|
||||
|
||||
@@ -14,6 +14,7 @@ use App\Models\Ticket;
|
||||
use App\Models\UserGitConnection;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Throwable;
|
||||
|
||||
@@ -30,17 +31,23 @@ class ProjectTicketBranchController extends Controller
|
||||
Project $project,
|
||||
Ticket $ticket,
|
||||
): JsonResponse {
|
||||
$user = $request->user();
|
||||
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userHasPermission($request->user(), $project, 'edit'),
|
||||
$this->projectPermissionService->userHasPermission($user, $project, 'edit'),
|
||||
403,
|
||||
);
|
||||
|
||||
$validated = $request->validated();
|
||||
$repositoryConnectionId = Arr::get($validated, 'repository_connection_id');
|
||||
$branchName = trim((string) Arr::get($validated, 'branch_name'));
|
||||
|
||||
$repositoryConnection = $this->projectRepositoryConnection(
|
||||
$project,
|
||||
$request->repositoryConnectionId(),
|
||||
$repositoryConnectionId,
|
||||
);
|
||||
$userGitConnection = $this->matchingUserGitConnection(
|
||||
$request->user()->id,
|
||||
$user->id,
|
||||
$repositoryConnection,
|
||||
);
|
||||
|
||||
@@ -51,7 +58,7 @@ class ProjectTicketBranchController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
$syntaxMessage = $this->validateGitBranchName->message($request->branchName());
|
||||
$syntaxMessage = $this->validateGitBranchName->message($branchName);
|
||||
|
||||
if ($syntaxMessage !== null) {
|
||||
return response()->json([
|
||||
@@ -72,7 +79,7 @@ class ProjectTicketBranchController extends Controller
|
||||
),
|
||||
)
|
||||
->contains(
|
||||
fn (GitBranch $branch): bool => $branch->name === $request->branchName(),
|
||||
fn (GitBranch $branch): bool => $branch->name === $branchName,
|
||||
);
|
||||
} catch (Throwable) {
|
||||
return response()->json([
|
||||
@@ -99,17 +106,26 @@ class ProjectTicketBranchController extends Controller
|
||||
Project $project,
|
||||
Ticket $ticket,
|
||||
): RedirectResponse {
|
||||
|
||||
$user = $request->user();
|
||||
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userHasPermission($request->user(), $project, 'edit'),
|
||||
$this->projectPermissionService->userHasPermission($user, $project, 'edit'),
|
||||
403,
|
||||
);
|
||||
|
||||
$validated = $request->validated();
|
||||
$repositoryConnectionId = Arr::get($validated, 'repository_connection_id');
|
||||
$branchName = trim((string) Arr::get($validated, 'branch_name'));
|
||||
|
||||
|
||||
|
||||
$repositoryConnection = $this->projectRepositoryConnection(
|
||||
$project,
|
||||
$request->repositoryConnectionId(),
|
||||
$repositoryConnectionId,
|
||||
);
|
||||
$userGitConnection = $this->matchingUserGitConnection(
|
||||
$request->user()->id,
|
||||
$user->id,
|
||||
$repositoryConnection,
|
||||
);
|
||||
|
||||
@@ -119,7 +135,7 @@ class ProjectTicketBranchController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
$syntaxMessage = $this->validateGitBranchName->message($request->branchName());
|
||||
$syntaxMessage = $this->validateGitBranchName->message($branchName);
|
||||
|
||||
if ($syntaxMessage !== null) {
|
||||
throw ValidationException::withMessages([
|
||||
@@ -139,7 +155,7 @@ class ProjectTicketBranchController extends Controller
|
||||
),
|
||||
)
|
||||
->contains(
|
||||
fn (GitBranch $branch): bool => $branch->name === $request->branchName(),
|
||||
fn (GitBranch $branch): bool => $branch->name === $branchName,
|
||||
);
|
||||
} catch (Throwable) {
|
||||
throw ValidationException::withMessages([
|
||||
@@ -166,7 +182,7 @@ class ProjectTicketBranchController extends Controller
|
||||
$userGitConnection->api_token,
|
||||
$repositoryConnection->owner_name,
|
||||
$repositoryConnection->repository_name,
|
||||
$request->branchName(),
|
||||
$branchName,
|
||||
$repository->defaultBranch,
|
||||
);
|
||||
} catch (Throwable) {
|
||||
@@ -178,7 +194,7 @@ class ProjectTicketBranchController extends Controller
|
||||
return to_route('projects.tickets.show', [$project, $ticket])
|
||||
->with(
|
||||
'status',
|
||||
"{$request->branchName()} was created in {$repositoryConnection->repository_full_name}.",
|
||||
"{$branchName} was created in {$repositoryConnection->repository_full_name}.",
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ use App\Models\TicketLink;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Arr;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
|
||||
@@ -29,15 +30,17 @@ class ProjectTicketController extends Controller
|
||||
|
||||
public function show(Request $request, Project $project, Ticket $ticket): Response
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userCanViewProject($request->user(), $project),
|
||||
$this->projectPermissionService->userCanViewProject($user, $project),
|
||||
403,
|
||||
);
|
||||
|
||||
$excludedParentIds = [$ticket->id, ...$this->descendantIds($ticket)];
|
||||
|
||||
return Inertia::render('projects/Ticket', [
|
||||
'canEditTicket' => $this->projectPermissionService->userHasPermission($request->user(), $project, 'edit'),
|
||||
'canEditTicket' => $this->projectPermissionService->userHasPermission($user, $project, 'edit'),
|
||||
'childTicketTree' => $this->buildChildTicketTree($ticket),
|
||||
'linkedTickets' => $this->linkedTickets($ticket),
|
||||
'parentTicketOptions' => Ticket::query()
|
||||
@@ -53,12 +56,12 @@ class ProjectTicketController extends Controller
|
||||
]),
|
||||
'project' => $project,
|
||||
'repositoryBranches' => $this->resolveTicketBranchMatches->handle(
|
||||
$request->user(),
|
||||
$user,
|
||||
$project,
|
||||
$ticket,
|
||||
),
|
||||
'repositoryPullRequests' => $this->resolveTicketPullRequestMatches->handle(
|
||||
$request->user(),
|
||||
$user,
|
||||
$project,
|
||||
$ticket,
|
||||
),
|
||||
@@ -97,16 +100,22 @@ class ProjectTicketController extends Controller
|
||||
Project $project,
|
||||
Ticket $ticket,
|
||||
): RedirectResponse {
|
||||
|
||||
$user = $request->user();
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userHasPermission($request->user(), $project, 'edit'),
|
||||
$this->projectPermissionService->userHasPermission($user, $project, 'edit'),
|
||||
403,
|
||||
);
|
||||
|
||||
$validated = $request->validated();
|
||||
$fieldValues = Arr::get($validated, 'field_values');
|
||||
$ticketAttributes = $request->ticketAttributes();
|
||||
|
||||
$wasUpdated = $this->updateProjectTicket->handle(
|
||||
$ticket,
|
||||
$request->user(),
|
||||
$request->ticketAttributes(),
|
||||
$request->fieldValues(),
|
||||
$user,
|
||||
$ticketAttributes,
|
||||
$fieldValues,
|
||||
);
|
||||
|
||||
$statusMessage = $wasUpdated
|
||||
|
||||
@@ -10,6 +10,7 @@ use App\Models\Ticket;
|
||||
use App\Models\TicketLink;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class ProjectTicketLinkController extends Controller
|
||||
@@ -24,25 +25,31 @@ class ProjectTicketLinkController extends Controller
|
||||
Project $project,
|
||||
Ticket $ticket,
|
||||
): RedirectResponse {
|
||||
|
||||
$user = $request->user();
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userHasPermission($request->user(), $project, 'edit'),
|
||||
$this->projectPermissionService->userHasPermission($user, $project, 'edit'),
|
||||
403,
|
||||
);
|
||||
|
||||
$validated = $request->validated();
|
||||
$linkedTicketId = Arr::get($validated, 'linked_ticket_id');
|
||||
$ticketLinkTypeId = Arr::get($validated, 'ticket_link_type_id');
|
||||
|
||||
$linkedTicket = Ticket::query()
|
||||
->where('project_id', $project->id)
|
||||
->findOrFail($request->linkedTicketId());
|
||||
->findOrFail($linkedTicketId);
|
||||
|
||||
[$sourceTicketId, $targetTicketId] = $this->normalizeTicketPair($ticket->id, $linkedTicket->id);
|
||||
|
||||
$ticketLink = DB::transaction(function () use ($linkedTicket, $request, $sourceTicketId, $targetTicketId, $ticket): TicketLink {
|
||||
$ticketLink = DB::transaction(function () use ($linkedTicket, $user, $ticketLinkTypeId, $sourceTicketId, $targetTicketId, $ticket): TicketLink {
|
||||
$ticketLink = TicketLink::query()->updateOrCreate(
|
||||
[
|
||||
'source_ticket_id' => $sourceTicketId,
|
||||
'target_ticket_id' => $targetTicketId,
|
||||
],
|
||||
[
|
||||
'ticket_link_type_id' => $request->ticketLinkTypeId(),
|
||||
'ticket_link_type_id' => $ticketLinkTypeId,
|
||||
],
|
||||
);
|
||||
|
||||
@@ -50,7 +57,7 @@ class ProjectTicketLinkController extends Controller
|
||||
|
||||
$this->createTicketWorklogEntry->handle(
|
||||
$ticket,
|
||||
$request->user(),
|
||||
$user,
|
||||
'link_updated',
|
||||
"Linked {$linkedTicket->ticket_key} as {$ticketLink->ticketLinkType->label}.",
|
||||
[
|
||||
@@ -61,7 +68,7 @@ class ProjectTicketLinkController extends Controller
|
||||
|
||||
$this->createTicketWorklogEntry->handle(
|
||||
$linkedTicket,
|
||||
$request->user(),
|
||||
$user,
|
||||
'link_updated',
|
||||
"Linked {$ticket->ticket_key} as {$ticketLink->ticketLinkType->label}.",
|
||||
[
|
||||
@@ -83,8 +90,10 @@ class ProjectTicketLinkController extends Controller
|
||||
Ticket $ticket,
|
||||
TicketLink $ticketLink,
|
||||
): RedirectResponse {
|
||||
|
||||
$user = $request->user();
|
||||
abort_unless(
|
||||
$this->projectPermissionService->userHasPermission($request->user(), $project, 'edit'),
|
||||
$this->projectPermissionService->userHasPermission($user, $project, 'edit'),
|
||||
403,
|
||||
);
|
||||
|
||||
@@ -101,12 +110,12 @@ class ProjectTicketLinkController extends Controller
|
||||
|
||||
$label = $ticketLink->ticketLinkType->label;
|
||||
|
||||
DB::transaction(function () use ($label, $linkedTicket, $request, $ticket, $ticketLink): void {
|
||||
DB::transaction(function () use ($label, $linkedTicket, $user, $ticket, $ticketLink): void {
|
||||
$ticketLink->delete();
|
||||
|
||||
$this->createTicketWorklogEntry->handle(
|
||||
$ticket,
|
||||
$request->user(),
|
||||
$user,
|
||||
'link_removed',
|
||||
"Removed {$label} link to {$linkedTicket->ticket_key}.",
|
||||
[
|
||||
@@ -117,7 +126,7 @@ class ProjectTicketLinkController extends Controller
|
||||
|
||||
$this->createTicketWorklogEntry->handle(
|
||||
$linkedTicket,
|
||||
$request->user(),
|
||||
$user,
|
||||
'link_removed',
|
||||
"Removed {$label} link to {$ticket->ticket_key}.",
|
||||
[
|
||||
|
||||
@@ -16,6 +16,7 @@ use App\Models\TicketType;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Inertia\Inertia;
|
||||
@@ -54,10 +55,15 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
$this->abortUnlessCanManage($request, $project);
|
||||
$this->initializeProjectTicketMetadata->handle($project);
|
||||
|
||||
$ticketType = DB::transaction(function () use ($project, $request): TicketType {
|
||||
$validated = $request->validated();
|
||||
$name = Arr::get($validated, 'name');
|
||||
$position = Arr::get($validated, 'position');
|
||||
|
||||
|
||||
$ticketType = DB::transaction(function () use ($project, $name, $position): TicketType {
|
||||
$ticketType = $project->ticketTypes()->create([
|
||||
'is_builtin' => false,
|
||||
'name' => $request->validated('name'),
|
||||
'name' => $name,
|
||||
'position' => $project->ticketTypes()->count() + 1,
|
||||
'system_key' => null,
|
||||
]);
|
||||
@@ -65,7 +71,7 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
$this->reorderModels(
|
||||
$project->ticketTypes()->whereKeyNot($ticketType->id)->get()->values(),
|
||||
$ticketType,
|
||||
$request->position() ?? $project->ticketTypes()->count(),
|
||||
$position ?? $project->ticketTypes()->count(),
|
||||
);
|
||||
|
||||
return $ticketType;
|
||||
@@ -83,15 +89,19 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
$this->abortUnlessCanManage($request, $project);
|
||||
$this->initializeProjectTicketMetadata->handle($project);
|
||||
|
||||
DB::transaction(function () use ($project, $request, $ticketType): void {
|
||||
$validated = $request->validated();
|
||||
$name = Arr::get($validated, 'name');
|
||||
$position = Arr::get($validated, 'position');
|
||||
|
||||
DB::transaction(function () use ($project, $name, $position, $ticketType): void {
|
||||
$ticketType->update([
|
||||
'name' => $request->validated('name'),
|
||||
'name' => $name,
|
||||
]);
|
||||
|
||||
$this->reorderModels(
|
||||
$project->ticketTypes()->whereKeyNot($ticketType->id)->get()->values(),
|
||||
$ticketType,
|
||||
$request->position(),
|
||||
$position,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -121,16 +131,20 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
{
|
||||
$this->abortUnlessCanManage($request, $project);
|
||||
|
||||
$ticketPriority = DB::transaction(function () use ($project, $request): TicketPriority {
|
||||
$validated = $request->validated();
|
||||
$name = Arr::get($validated, 'name');
|
||||
$position = Arr::get($validated, 'position');
|
||||
|
||||
$ticketPriority = DB::transaction(function () use ($project, $name, $position): TicketPriority {
|
||||
$ticketPriority = $project->ticketPriorities()->create([
|
||||
'name' => $request->validated('name'),
|
||||
'name' => $name,
|
||||
'position' => $project->ticketPriorities()->count() + 1,
|
||||
]);
|
||||
|
||||
$this->reorderModels(
|
||||
$project->ticketPriorities()->whereKeyNot($ticketPriority->id)->get()->values(),
|
||||
$ticketPriority,
|
||||
$request->position() ?? $project->ticketPriorities()->count(),
|
||||
$position ?? $project->ticketPriorities()->count(),
|
||||
);
|
||||
|
||||
return $ticketPriority;
|
||||
@@ -147,15 +161,19 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
): RedirectResponse {
|
||||
$this->abortUnlessCanManage($request, $project);
|
||||
|
||||
DB::transaction(function () use ($project, $request, $ticketPriority): void {
|
||||
$validated = $request->validated();
|
||||
$name = Arr::get($validated, 'name');
|
||||
$position = Arr::get($validated, 'position');
|
||||
|
||||
DB::transaction(function () use ($project, $name, $position, $ticketPriority): void {
|
||||
$ticketPriority->update([
|
||||
'name' => $request->validated('name'),
|
||||
'name' => $name,
|
||||
]);
|
||||
|
||||
$this->reorderModels(
|
||||
$project->ticketPriorities()->whereKeyNot($ticketPriority->id)->get()->values(),
|
||||
$ticketPriority,
|
||||
$request->position(),
|
||||
$position,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -188,17 +206,22 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
): RedirectResponse {
|
||||
$this->abortUnlessCanManage($request, $project);
|
||||
|
||||
$ticketFieldDefinition = DB::transaction(function () use ($project, $request): TicketFieldDefinition {
|
||||
$validated = $request->validated();
|
||||
$label = Arr::get($validated, 'label');
|
||||
$fieldType = Arr::get($validated, 'field_type');
|
||||
$position = Arr::get($validated, 'position');
|
||||
|
||||
$ticketFieldDefinition = DB::transaction(function () use ($project, $fieldType, $label): TicketFieldDefinition {
|
||||
$ticketFieldDefinition = $project->ticketFieldDefinitions()->create([
|
||||
'field_type' => $request->validated('field_type'),
|
||||
'label' => $request->validated('label'),
|
||||
'field_type' => $fieldType,
|
||||
'label' => $label,
|
||||
'position' => $project->ticketFieldDefinitions()->count() + 1,
|
||||
]);
|
||||
|
||||
$this->reorderModels(
|
||||
$project->ticketFieldDefinitions()->whereKeyNot($ticketFieldDefinition->id)->get()->values(),
|
||||
$ticketFieldDefinition,
|
||||
$request->position() ?? $project->ticketFieldDefinitions()->count(),
|
||||
$position ?? $project->ticketFieldDefinitions()->count(),
|
||||
);
|
||||
|
||||
return $ticketFieldDefinition;
|
||||
@@ -215,16 +238,21 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
): RedirectResponse {
|
||||
$this->abortUnlessCanManage($request, $project);
|
||||
|
||||
DB::transaction(function () use ($project, $request, $ticketFieldDefinition): void {
|
||||
$validated = $request->validated();
|
||||
$label = Arr::get($validated, 'label');
|
||||
$fieldType = Arr::get($validated, 'field_type');
|
||||
$position = Arr::get($validated, 'position');
|
||||
|
||||
DB::transaction(function () use ($project, $fieldType, $label, $ticketFieldDefinition, $position): void {
|
||||
$ticketFieldDefinition->update([
|
||||
'field_type' => $request->validated('field_type'),
|
||||
'label' => $request->validated('label'),
|
||||
'field_type' => $fieldType,
|
||||
'label' => $label,
|
||||
]);
|
||||
|
||||
$this->reorderModels(
|
||||
$project->ticketFieldDefinitions()->whereKeyNot($ticketFieldDefinition->id)->get()->values(),
|
||||
$ticketFieldDefinition,
|
||||
$request->position(),
|
||||
$position,
|
||||
);
|
||||
});
|
||||
|
||||
@@ -253,18 +281,22 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
|
||||
public function storeLinkType(StoreProjectNamedSettingRequest $request, Project $project): RedirectResponse
|
||||
{
|
||||
$validated = $request->validated();
|
||||
$name = Arr::get($validated, 'name');
|
||||
$position = Arr::get($validated, 'position');
|
||||
|
||||
$this->abortUnlessCanManage($request, $project);
|
||||
|
||||
$ticketLinkType = DB::transaction(function () use ($project, $request): TicketLinkType {
|
||||
$ticketLinkType = DB::transaction(function () use ($project, $position, $name): TicketLinkType {
|
||||
$ticketLinkType = $project->ticketLinkTypes()->create([
|
||||
'label' => $request->validated('name'),
|
||||
'label' => $name,
|
||||
'position' => $project->ticketLinkTypes()->count() + 1,
|
||||
]);
|
||||
|
||||
$this->reorderModels(
|
||||
$project->ticketLinkTypes()->whereKeyNot($ticketLinkType->id)->get()->values(),
|
||||
$ticketLinkType,
|
||||
$request->position() ?? $project->ticketLinkTypes()->count(),
|
||||
$position ?? $project->ticketLinkTypes()->count(),
|
||||
);
|
||||
|
||||
return $ticketLinkType;
|
||||
@@ -279,17 +311,22 @@ class ProjectTicketMetadataSettingsController extends Controller
|
||||
Project $project,
|
||||
TicketLinkType $ticketLinkType,
|
||||
): RedirectResponse {
|
||||
|
||||
$validated = $request->validated();
|
||||
$name = Arr::get($validated, 'name');
|
||||
$position = Arr::get($validated, 'position');
|
||||
|
||||
$this->abortUnlessCanManage($request, $project);
|
||||
|
||||
DB::transaction(function () use ($project, $request, $ticketLinkType): void {
|
||||
DB::transaction(function () use ($project, $name, $position, $ticketLinkType): void {
|
||||
$ticketLinkType->update([
|
||||
'label' => $request->validated('name'),
|
||||
'label' => $name,
|
||||
]);
|
||||
|
||||
$this->reorderModels(
|
||||
$project->ticketLinkTypes()->whereKeyNot($ticketLinkType->id)->get()->values(),
|
||||
$ticketLinkType,
|
||||
$request->position(),
|
||||
$position,
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Actions\Git\GitProviderKey;
|
||||
use App\Actions\Git\GitProviderManager;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Settings\StoreUserGitConnectionRequest;
|
||||
@@ -9,6 +10,7 @@ use App\Http\Requests\Settings\UpdateUserGitConnectionRequest;
|
||||
use App\Models\UserGitConnection;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Arr;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
use Throwable;
|
||||
@@ -21,8 +23,11 @@ class GitConnectionController extends Controller
|
||||
|
||||
public function edit(Request $request): Response
|
||||
{
|
||||
$user = $request->user();
|
||||
$session = $request->session();
|
||||
|
||||
return Inertia::render('settings/GitConnections', [
|
||||
'gitConnections' => $request->user()->gitConnections
|
||||
'gitConnections' => $user->gitConnections
|
||||
->map(fn (UserGitConnection $gitConnection): array => [
|
||||
'account_login' => $gitConnection->account_login,
|
||||
'account_name' => $gitConnection->account_name,
|
||||
@@ -36,17 +41,25 @@ class GitConnectionController extends Controller
|
||||
'user_id' => $gitConnection->user_id,
|
||||
])
|
||||
->values(),
|
||||
'status' => $request->session()->get('status'),
|
||||
'status' => $session->get('status'),
|
||||
]);
|
||||
}
|
||||
|
||||
public function store(StoreUserGitConnectionRequest $request): RedirectResponse
|
||||
{
|
||||
$validated = $request->validated();
|
||||
|
||||
$apiToken = Arr::get($validated, 'api_token');
|
||||
$baseUrl = Arr::get($validated, 'base_url');
|
||||
$provider = GitProviderKey::from((string) Arr::get($validated, 'provider'));
|
||||
$user = $request->user();
|
||||
|
||||
|
||||
try {
|
||||
$gitProvider = $this->gitProviderManager->client($request->provider());
|
||||
$gitProvider = $this->gitProviderManager->client($provider);
|
||||
$authenticatedUser = $gitProvider->getAuthenticatedUser(
|
||||
$request->baseUrl(),
|
||||
$request->apiToken(),
|
||||
$baseUrl,
|
||||
$apiToken,
|
||||
);
|
||||
} catch (Throwable) {
|
||||
return back()
|
||||
@@ -58,11 +71,11 @@ class GitConnectionController extends Controller
|
||||
UserGitConnection::query()->create([
|
||||
'account_login' => $authenticatedUser->login,
|
||||
'account_name' => $authenticatedUser->name,
|
||||
'api_token' => $request->apiToken(),
|
||||
'base_url' => $request->baseUrl(),
|
||||
'provider' => $request->provider(),
|
||||
'api_token' => $apiToken,
|
||||
'base_url' => $baseUrl,
|
||||
'provider' => $provider,
|
||||
'provider_user_id' => $authenticatedUser->providerUserId,
|
||||
'user_id' => $request->user()->id,
|
||||
'user_id' => $user->id,
|
||||
]);
|
||||
|
||||
return to_route('git-connections.edit')
|
||||
@@ -75,11 +88,18 @@ class GitConnectionController extends Controller
|
||||
): RedirectResponse {
|
||||
$this->abortUnlessOwner($request, $gitConnection);
|
||||
|
||||
$validated = $request->validated();
|
||||
$apiToken = Arr::get($validated, 'api_token');
|
||||
$baseUrl = Arr::get($validated, 'base_url');
|
||||
$provider = GitProviderKey::from((string) Arr::get($validated, 'provider'));
|
||||
|
||||
|
||||
|
||||
try {
|
||||
$gitProvider = $this->gitProviderManager->client($request->provider());
|
||||
$gitProvider = $this->gitProviderManager->client($provider);
|
||||
$authenticatedUser = $gitProvider->getAuthenticatedUser(
|
||||
$request->baseUrl(),
|
||||
$request->apiToken(),
|
||||
$baseUrl,
|
||||
$apiToken,
|
||||
);
|
||||
} catch (Throwable) {
|
||||
return back()
|
||||
@@ -91,9 +111,9 @@ class GitConnectionController extends Controller
|
||||
$gitConnection->update([
|
||||
'account_login' => $authenticatedUser->login,
|
||||
'account_name' => $authenticatedUser->name,
|
||||
'api_token' => $request->apiToken(),
|
||||
'base_url' => $request->baseUrl(),
|
||||
'provider' => $request->provider(),
|
||||
'api_token' => $apiToken,
|
||||
'base_url' => $baseUrl,
|
||||
'provider' => $provider,
|
||||
'provider_user_id' => $authenticatedUser->providerUserId,
|
||||
]);
|
||||
|
||||
@@ -115,6 +135,7 @@ class GitConnectionController extends Controller
|
||||
|
||||
private function abortUnlessOwner(Request $request, UserGitConnection $gitConnection): void
|
||||
{
|
||||
abort_unless($gitConnection->user_id === $request->user()->id, 403);
|
||||
$user = $request->user();
|
||||
abort_unless($gitConnection->user_id === $user->id, 403);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,9 +19,12 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function edit(Request $request): Response
|
||||
{
|
||||
$session = $request->session();
|
||||
$user = $request->user();
|
||||
|
||||
return Inertia::render('settings/Profile', [
|
||||
'mustVerifyEmail' => $request->user() instanceof MustVerifyEmail,
|
||||
'status' => $request->session()->get('status'),
|
||||
'mustVerifyEmail' => $user instanceof MustVerifyEmail,
|
||||
'status' => $session->get('status'),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -30,13 +33,15 @@ class ProfileController extends Controller
|
||||
*/
|
||||
public function update(ProfileUpdateRequest $request): RedirectResponse
|
||||
{
|
||||
$request->user()->fill($request->validated());
|
||||
|
||||
if ($request->user()->isDirty('email')) {
|
||||
$request->user()->email_verified_at = null;
|
||||
$user = $request->user();
|
||||
$user->fill($request->validated());
|
||||
|
||||
if ($user->isDirty('email')) {
|
||||
$user->email_verified_at = null;
|
||||
}
|
||||
|
||||
$request->user()->save();
|
||||
$user->save();
|
||||
|
||||
return to_route('profile.edit');
|
||||
}
|
||||
@@ -47,13 +52,14 @@ class ProfileController extends Controller
|
||||
public function destroy(ProfileDeleteRequest $request): RedirectResponse
|
||||
{
|
||||
$user = $request->user();
|
||||
$session = $request->session();
|
||||
|
||||
Auth::logout();
|
||||
|
||||
$user->delete();
|
||||
|
||||
$request->session()->invalidate();
|
||||
$request->session()->regenerateToken();
|
||||
$session->invalidate();
|
||||
$session->regenerateToken();
|
||||
|
||||
return redirect('/');
|
||||
}
|
||||
|
||||
@@ -30,6 +30,7 @@ class SecurityController extends Controller implements HasMiddleware
|
||||
*/
|
||||
public function edit(TwoFactorAuthenticationRequest $request): Response
|
||||
{
|
||||
$user = $request->user();
|
||||
$props = [
|
||||
'canManageTwoFactor' => Features::canManageTwoFactorAuthentication(),
|
||||
];
|
||||
@@ -37,7 +38,7 @@ class SecurityController extends Controller implements HasMiddleware
|
||||
if (Features::canManageTwoFactorAuthentication()) {
|
||||
$request->ensureStateIsValid();
|
||||
|
||||
$props['twoFactorEnabled'] = $request->user()->hasEnabledTwoFactorAuthentication();
|
||||
$props['twoFactorEnabled'] = $user->hasEnabledTwoFactorAuthentication();
|
||||
$props['requiresConfirmation'] = Features::optionEnabled(Features::twoFactorAuthentication(), 'confirm');
|
||||
}
|
||||
|
||||
@@ -49,7 +50,9 @@ class SecurityController extends Controller implements HasMiddleware
|
||||
*/
|
||||
public function update(PasswordUpdateRequest $request): RedirectResponse
|
||||
{
|
||||
$request->user()->update([
|
||||
$user = $request->user();
|
||||
|
||||
$user->update([
|
||||
'password' => $request->password,
|
||||
]);
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ use App\Http\Requests\UpdateTeamMembersRequest;
|
||||
use App\Models\Team;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Support\Arr;
|
||||
use Inertia\Inertia;
|
||||
use Inertia\Response;
|
||||
|
||||
@@ -49,7 +50,15 @@ class TeamController extends Controller
|
||||
|
||||
public function updateMembers(UpdateTeamMembersRequest $request, Team $team): RedirectResponse
|
||||
{
|
||||
$this->projectPermissionService->syncTeamMembers($team, $request->userIds());
|
||||
$validated = $request->validated();
|
||||
|
||||
$userIds = collect(Arr::get($validated, 'user_ids', []))
|
||||
->map(fn (mixed $userId): int => (int) $userId)
|
||||
->unique()
|
||||
->values()
|
||||
->all();
|
||||
|
||||
$this->projectPermissionService->syncTeamMembers($team, $userIds);
|
||||
|
||||
return to_route('admin.teams.index')
|
||||
->with('status', "{$team->name} members were updated.");
|
||||
|
||||
@@ -17,6 +17,13 @@ class StoreUserGitConnectionRequest extends FormRequest
|
||||
{
|
||||
return $this->user() !== null;
|
||||
}
|
||||
protected function prepareForValidation(): void
|
||||
{
|
||||
$this->merge([
|
||||
'base_url' => $this->normalizedBaseUrl(),
|
||||
'provider' => Str::lower(trim((string) $this->input('provider'))),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
@@ -42,30 +49,6 @@ class StoreUserGitConnectionRequest extends FormRequest
|
||||
))],
|
||||
];
|
||||
}
|
||||
|
||||
protected function prepareForValidation(): void
|
||||
{
|
||||
$this->merge([
|
||||
'base_url' => $this->normalizedBaseUrl(),
|
||||
'provider' => Str::lower(trim((string) $this->input('provider'))),
|
||||
]);
|
||||
}
|
||||
|
||||
public function apiToken(): string
|
||||
{
|
||||
return (string) $this->validated('api_token');
|
||||
}
|
||||
|
||||
public function baseUrl(): string
|
||||
{
|
||||
return (string) $this->validated('base_url');
|
||||
}
|
||||
|
||||
public function provider(): GitProviderKey
|
||||
{
|
||||
return GitProviderKey::from((string) $this->validated('provider'));
|
||||
}
|
||||
|
||||
private function normalizedBaseUrl(): string
|
||||
{
|
||||
$baseUrl = Str::of((string) $this->input('base_url'))
|
||||
|
||||
@@ -19,6 +19,13 @@ class UpdateUserGitConnectionRequest extends FormRequest
|
||||
return $this->user() !== null;
|
||||
}
|
||||
|
||||
protected function prepareForValidation(): void
|
||||
{
|
||||
$this->merge([
|
||||
'base_url' => $this->normalizedBaseUrl(),
|
||||
'provider' => Str::lower(trim((string) $this->input('provider'))),
|
||||
]);
|
||||
}
|
||||
/**
|
||||
* Get the validation rules that apply to the request.
|
||||
*
|
||||
@@ -47,30 +54,6 @@ class UpdateUserGitConnectionRequest extends FormRequest
|
||||
))],
|
||||
];
|
||||
}
|
||||
|
||||
protected function prepareForValidation(): void
|
||||
{
|
||||
$this->merge([
|
||||
'base_url' => $this->normalizedBaseUrl(),
|
||||
'provider' => Str::lower(trim((string) $this->input('provider'))),
|
||||
]);
|
||||
}
|
||||
|
||||
public function apiToken(): string
|
||||
{
|
||||
return (string) $this->validated('api_token');
|
||||
}
|
||||
|
||||
public function baseUrl(): string
|
||||
{
|
||||
return (string) $this->validated('base_url');
|
||||
}
|
||||
|
||||
public function provider(): GitProviderKey
|
||||
{
|
||||
return GitProviderKey::from((string) $this->validated('provider'));
|
||||
}
|
||||
|
||||
private function normalizedBaseUrl(): string
|
||||
{
|
||||
$baseUrl = Str::of((string) $this->input('base_url'))
|
||||
|
||||
@@ -28,14 +28,5 @@ class StoreProjectNamedSettingRequest extends FormRequest
|
||||
];
|
||||
}
|
||||
|
||||
public function position(): ?int
|
||||
{
|
||||
$position = $this->validated('position');
|
||||
|
||||
if ($position === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (int) $position;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,14 +27,6 @@ class StoreProjectTicketBranchRequest extends FormRequest
|
||||
'repository_connection_id' => ['required', 'integer', 'exists:repository_connections,id'],
|
||||
];
|
||||
}
|
||||
|
||||
public function branchName(): string
|
||||
{
|
||||
return trim((string) $this->validated('branch_name'));
|
||||
}
|
||||
|
||||
public function repositoryConnectionId(): int
|
||||
{
|
||||
return (int) $this->validated('repository_connection_id');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -28,13 +28,5 @@ class StoreRepositoryConnectionRequest extends FormRequest
|
||||
];
|
||||
}
|
||||
|
||||
public function providerRepositoryId(): string
|
||||
{
|
||||
return (string) $this->validated('provider_repository_id');
|
||||
}
|
||||
|
||||
public function userGitConnectionId(): int
|
||||
{
|
||||
return (int) $this->validated('user_git_connection_id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,14 +31,4 @@ class StoreTicketFieldDefinitionRequest extends FormRequest
|
||||
];
|
||||
}
|
||||
|
||||
public function position(): ?int
|
||||
{
|
||||
$position = $this->validated('position');
|
||||
|
||||
if ($position === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return (int) $position;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,14 +61,4 @@ class StoreTicketLinkRequest extends FormRequest
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
public function linkedTicketId(): int
|
||||
{
|
||||
return (int) $this->validated('linked_ticket_id');
|
||||
}
|
||||
|
||||
public function ticketLinkTypeId(): int
|
||||
{
|
||||
return (int) $this->validated('ticket_link_type_id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,15 +33,4 @@ class SyncProjectPermissionsRequest extends FormRequest
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array<int, string>
|
||||
*/
|
||||
public function permissions(): array
|
||||
{
|
||||
return collect($this->validated('permissions', []))
|
||||
->map(fn (mixed $permission): string => (string) $permission)
|
||||
->unique()
|
||||
->values()
|
||||
->all();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -28,8 +28,5 @@ class UpdateProjectNamedSettingRequest extends FormRequest
|
||||
];
|
||||
}
|
||||
|
||||
public function position(): int
|
||||
{
|
||||
return (int) $this->validated('position');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -181,18 +181,6 @@ class UpdateProjectTicketRequest extends FormRequest
|
||||
* value_user_id?: int|string|null
|
||||
* }>
|
||||
*/
|
||||
public function fieldValues(): array
|
||||
{
|
||||
/** @var array<int, array{
|
||||
* ticket_field_definition_id: int,
|
||||
* value_number?: float|int|string|null,
|
||||
* value_user_id?: int|string|null
|
||||
* }> $fieldValues
|
||||
*/
|
||||
$fieldValues = $this->validated('field_values', []);
|
||||
|
||||
return $fieldValues;
|
||||
}
|
||||
|
||||
private function createsCycle(Ticket $ticket, Ticket $candidateParent): bool
|
||||
{
|
||||
|
||||
@@ -28,13 +28,5 @@ class UpdateRepositoryConnectionRequest extends FormRequest
|
||||
];
|
||||
}
|
||||
|
||||
public function providerRepositoryId(): string
|
||||
{
|
||||
return (string) $this->validated('provider_repository_id');
|
||||
}
|
||||
|
||||
public function userGitConnectionId(): int
|
||||
{
|
||||
return (int) $this->validated('user_git_connection_id');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,12 +32,4 @@ class UpdateTeamMembersRequest extends FormRequest
|
||||
/**
|
||||
* @return array<int, int>
|
||||
*/
|
||||
public function userIds(): array
|
||||
{
|
||||
return collect($this->validated('user_ids', []))
|
||||
->map(fn (mixed $userId): int => (int) $userId)
|
||||
->unique()
|
||||
->values()
|
||||
->all();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,8 +31,4 @@ class UpdateTicketFieldDefinitionRequest extends FormRequest
|
||||
];
|
||||
}
|
||||
|
||||
public function position(): int
|
||||
{
|
||||
return (int) $this->validated('position');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,14 +27,4 @@ class ValidateProjectTicketBranchRequest extends FormRequest
|
||||
'repository_connection_id' => ['required', 'integer', 'exists:repository_connections,id'],
|
||||
];
|
||||
}
|
||||
|
||||
public function branchName(): string
|
||||
{
|
||||
return trim((string) $this->validated('branch_name'));
|
||||
}
|
||||
|
||||
public function repositoryConnectionId(): int
|
||||
{
|
||||
return (int) $this->validated('repository_connection_id');
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user