Files
AFFiNE-Mirror/packages/backend/server/src/plugins/registry.ts
T
liuyi fb3a0e7b8f refactor(server): auth (#5895)
Remove `next-auth` and implement our own Authorization/Authentication system from scratch.

## Server

- [x] tokens
  - [x] function
  - [x] encryption

- [x] AuthController
  - [x] /api/auth/sign-in
  - [x] /api/auth/sign-out
  - [x] /api/auth/session
  - [x] /api/auth/session (WE SUPPORT MULTI-ACCOUNT!)

- [x] OAuthPlugin
  - [x] OAuthController
  - [x] /oauth/login
  - [x] /oauth/callback
  - [x] Providers
    - [x] Google
    - [x] GitHub

## Client

- [x] useSession
- [x] cloudSignIn
- [x] cloudSignOut

## NOTE:

Tests will be adding in the future
2024-03-12 10:00:09 +00:00

23 lines
650 B
TypeScript

import { omit } from 'lodash-es';
import { AvailablePlugins } from '../fundamentals/config';
import { OptionalModule, OptionalModuleMetadata } from '../fundamentals/nestjs';
export const REGISTERED_PLUGINS = new Map<AvailablePlugins, AFFiNEModule>();
function register(plugin: AvailablePlugins, module: AFFiNEModule) {
REGISTERED_PLUGINS.set(plugin, module);
}
interface PluginModuleMetadata extends OptionalModuleMetadata {
name: AvailablePlugins;
}
export const Plugin = (options: PluginModuleMetadata) => {
return (target: any) => {
register(options.name, target);
return OptionalModule(omit(options, 'name'))(target);
};
};