mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-07-14 08:36:22 +08:00
fb3a0e7b8f
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
23 lines
650 B
TypeScript
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);
|
|
};
|
|
};
|