auth.ts 955 B

123456789101112131415161718192021222324252627
  1. import { Effect } from "effect"
  2. import { AuthV2 } from "../auth"
  3. import { PluginV2 } from "../plugin"
  4. export const AuthPlugin = PluginV2.define({
  5. id: PluginV2.ID.make("auth"),
  6. effect: Effect.gen(function* () {
  7. const auth = yield* AuthV2.Service
  8. return {
  9. "provider.update": Effect.fn(function* (evt) {
  10. const account = yield* auth.active(AuthV2.ServiceID.make(evt.provider.id)).pipe(Effect.orDie)
  11. if (!account) return
  12. evt.provider.enabled = {
  13. via: "auth",
  14. service: account.serviceID,
  15. }
  16. if (account.credential.type === "api") {
  17. evt.provider.options.aisdk.provider.apiKey = account.credential.key
  18. Object.assign(evt.provider.options.aisdk.provider, account.credential.metadata ?? {})
  19. }
  20. if (account.credential.type === "oauth") {
  21. evt.provider.options.aisdk.provider.apiKey = account.credential.access
  22. }
  23. }),
  24. }
  25. }),
  26. })