const AuthorizationLive = Layer.effect(
Authorization,
Effect.gen(function* () {
return {
api_token: (bearerToken) =>
Effect.gen(function* () {
if (bearerToken) {
const user = yield* findUserByApiToken(bearerToken);
if (!user) return yield* Unauthorized.make({ message: "Invalid API token" }); // error 1
return new User({ id: 1 })
} else {
return yield* Unauthorized.make({ message: "No API key provided" }); // error 2
}
}),
cookie_session: (token) =>
Effect.gen(function* () {
const account = yield* getAccountFromCookieSession(token);
if (account) {
return new User({ id: 1 })
} else {
return yield* Unauthorized.make({ message: "Invalid session" }); // error 3
}
}),
}
})
)
const AuthorizationLive = Layer.effect(
Authorization,
Effect.gen(function* () {
return {
api_token: (bearerToken) =>
Effect.gen(function* () {
if (bearerToken) {
const user = yield* findUserByApiToken(bearerToken);
if (!user) return yield* Unauthorized.make({ message: "Invalid API token" }); // error 1
return new User({ id: 1 })
} else {
return yield* Unauthorized.make({ message: "No API key provided" }); // error 2
}
}),
cookie_session: (token) =>
Effect.gen(function* () {
const account = yield* getAccountFromCookieSession(token);
if (account) {
return new User({ id: 1 })
} else {
return yield* Unauthorized.make({ message: "Invalid session" }); // error 3
}
}),
}
})
)