export class AdminUser extends HttpApiMiddleware.Tag<AdminUser>()(
"Http/Admin",
{
failure: HttpApiError.Forbidden,
},
) { }
export const AdminLive = Layer.effect(
AdminUser,
Effect.gen(function*() {
return AdminUser.of(
Effect.gen(function*() {
const user = yield* CurrentUser;
if (user.role !== "admin") {
yield* Effect.logWarning(
"Non-admin user attempted to access admin route",
{
userId: user.id,
role: user.role,
},
);
return yield* new HttpApiError.Forbidden();
}
return yield* Effect.void;
}),
);
}),
);
export class AdminUser extends HttpApiMiddleware.Tag<AdminUser>()(
"Http/Admin",
{
failure: HttpApiError.Forbidden,
},
) { }
export const AdminLive = Layer.effect(
AdminUser,
Effect.gen(function*() {
return AdminUser.of(
Effect.gen(function*() {
const user = yield* CurrentUser;
if (user.role !== "admin") {
yield* Effect.logWarning(
"Non-admin user attempted to access admin route",
{
userId: user.id,
role: user.role,
},
);
return yield* new HttpApiError.Forbidden();
}
return yield* Effect.void;
}),
);
}),
);