11import { json , type LoaderFunctionArgs } from "@remix-run/server-runtime" ;
22import { z } from "zod" ;
33import { $replica , prisma } from "~/db.server" ;
4- import { authenticateApiRequestWithPersonalAccessToken } from "~/services/personalAccessToken.server" ;
54import { findCurrentWorkerFromEnvironment } from "~/v3/models/workerDeployment.server" ;
6- import { getEnvironmentFromEnv } from "./api.v1.projects.$projectRef.$env" ;
7- import { GetWorkerByTagResponse } from "@trigger.dev/core/v3/schemas" ;
5+ import { type GetWorkerByTagResponse } from "@trigger.dev/core/v3/schemas" ;
86import { env as $env } from "~/env.server" ;
97import { v3RunsPath } from "~/utils/pathBuilder" ;
8+ import {
9+ authenticatedEnvironmentForAuthentication ,
10+ authenticateRequest ,
11+ } from "~/services/apiAuth.server" ;
1012
1113const ParamsSchema = z . object ( {
1214 projectRef : z . string ( ) ,
@@ -21,7 +23,11 @@ const HeadersSchema = z.object({
2123type ParamsSchema = z . infer < typeof ParamsSchema > ;
2224
2325export async function loader ( { request, params } : LoaderFunctionArgs ) {
24- const authenticationResult = await authenticateApiRequestWithPersonalAccessToken ( request ) ;
26+ const authenticationResult = await authenticateRequest ( request , {
27+ personalAccessToken : true ,
28+ organizationAccessToken : true ,
29+ apiKey : false ,
30+ } ) ;
2531
2632 if ( ! authenticationResult ) {
2733 return json ( { error : "Invalid or Missing Access Token" } , { status : 401 } ) ;
@@ -32,51 +38,17 @@ export async function loader({ request, params }: LoaderFunctionArgs) {
3238 if ( ! parsedParams . success ) {
3339 return json ( { error : "Invalid Params" } , { status : 400 } ) ;
3440 }
35-
36- const parsedHeaders = HeadersSchema . safeParse ( Object . fromEntries ( request . headers ) ) ;
37-
38- const branch = parsedHeaders . success ? parsedHeaders . data [ "x-trigger-branch" ] : undefined ;
39-
4041 const { projectRef, env } = parsedParams . data ;
4142
42- const project = await prisma . project . findFirst ( {
43- where : {
44- externalRef : projectRef ,
45- organization : {
46- members : {
47- some : {
48- userId : authenticationResult . userId ,
49- } ,
50- } ,
51- } ,
52- } ,
53- select : {
54- id : true ,
55- slug : true ,
56- organization : {
57- select : {
58- slug : true ,
59- } ,
60- } ,
61- } ,
62- } ) ;
63-
64- if ( ! project ) {
65- return json ( { error : "Project not found" } , { status : 404 } ) ;
66- }
43+ const parsedHeaders = HeadersSchema . safeParse ( Object . fromEntries ( request . headers ) ) ;
44+ const triggerBranch = parsedHeaders . success ? parsedHeaders . data [ "x-trigger-branch" ] : undefined ;
6745
68- const envResult = await getEnvironmentFromEnv ( {
69- projectId : project . id ,
70- userId : authenticationResult . userId ,
46+ const runtimeEnv = await authenticatedEnvironmentForAuthentication (
47+ authenticationResult ,
48+ projectRef ,
7149 env ,
72- branch,
73- } ) ;
74-
75- if ( ! envResult . success ) {
76- return json ( { error : envResult . error } , { status : 404 } ) ;
77- }
78-
79- const runtimeEnv = envResult . environment ;
50+ triggerBranch
51+ ) ;
8052
8153 const currentWorker = await findCurrentWorkerFromEnvironment (
8254 {
@@ -110,8 +82,8 @@ export async function loader({ request, params }: LoaderFunctionArgs) {
11082
11183 const urls = {
11284 runs : `${ $env . APP_ORIGIN } ${ v3RunsPath (
113- { slug : project . organization . slug } ,
114- { slug : project . slug } ,
85+ { slug : runtimeEnv . organization . slug } ,
86+ { slug : runtimeEnv . project . slug } ,
11587 { slug : runtimeEnv . slug } ,
11688 { versions : [ currentWorker . version ] }
11789 ) } `,
0 commit comments