import { HttpApiEndpoint, HttpApiGroup } from "@effect/platform";import { Schema } from "effect";import { UserStoreError, WorkOSError } from "./errors"; const AuthUser = Schema.Struct({ id: Schema.String, email: Schema.String, name: Schema.NullOr(Schema.String), avatarUrl: Schema.NullOr(Schema.String),}); const AuthTeam = Schema.Struct({ id: Schema.String, name: Schema.String,}); const AuthMeResponse = Schema.Struct({ user: AuthUser, team: Schema.NullOr(AuthTeam),}); const AuthCallbackSearch = Schema.Struct({ code: Schema.String,}); export const AUTH_PATHS = { login: "/api/auth/login", logout: "/api/auth/logout", callback: "/api/auth/callback",} as const; /** Public auth endpoints — no authentication required */export class CloudAuthPublicApi extends HttpApiGroup.make("cloudAuthPublic") .add( HttpApiEndpoint.get("login")`/auth/login`, ) .add( HttpApiEndpoint.get("callback")`/auth/callback` .setUrlParams(AuthCallbackSearch) .addError(UserStoreError) .addError(WorkOSError), ) {} /** Protected auth endpoints — require authentication */export class CloudAuthApi extends HttpApiGroup.make("cloudAuth") .add( HttpApiEndpoint.get("me")`/auth/me` .addSuccess(AuthMeResponse) .addError(UserStoreError), ) .add( HttpApiEndpoint.post("logout")`/auth/logout`, ){}
import { HttpApiEndpoint, HttpApiGroup } from "@effect/platform";
import { Schema } from "effect";
import { UserStoreError, WorkOSError } from "./errors";
const AuthUser = Schema.Struct({
id: Schema.String,
email: Schema.String,
name: Schema.NullOr(Schema.String),
avatarUrl: Schema.NullOr(Schema.String),
});
const AuthTeam = Schema.Struct({
id: Schema.String,
name: Schema.String,
});
const AuthMeResponse = Schema.Struct({
user: AuthUser,
team: Schema.NullOr(AuthTeam),
});
const AuthCallbackSearch = Schema.Struct({
code: Schema.String,
});
export const AUTH_PATHS = {
login: "/api/auth/login",
logout: "/api/auth/logout",
callback: "/api/auth/callback",
} as const;
/** Public auth endpoints — no authentication required */
export class CloudAuthPublicApi extends HttpApiGroup.make("cloudAuthPublic")
.add(
HttpApiEndpoint.get("login")`/auth/login`,
)
.add(
HttpApiEndpoint.get("callback")`/auth/callback`
.setUrlParams(AuthCallbackSearch)
.addError(UserStoreError)
.addError(WorkOSError),
) {}
/** Protected auth endpoints — require authentication */
export class CloudAuthApi extends HttpApiGroup.make("cloudAuth")
.add(
HttpApiEndpoint.get("me")`/auth/me`
.addSuccess(AuthMeResponse)
.addError(UserStoreError),
)
.add(
HttpApiEndpoint.post("logout")`/auth/logout`,
)
{}