mirror of
https://github.com/outline/outline.git
synced 2026-06-13 11:25:03 +03:00
1a893b0e45
Adds group sync from external authentication providers, allowing team group memberships to be automatically managed based on provider data on sign-in in the future.
49 lines
1.1 KiB
TypeScript
49 lines
1.1 KiB
TypeScript
import { computed, observable } from "mobx";
|
|
import type { AuthenticationProviderSettings } from "@shared/types";
|
|
import Model from "./base/Model";
|
|
import Field from "./decorators/Field";
|
|
import { AfterDelete } from "./decorators/Lifecycle";
|
|
import type AuthenticationProvidersStore from "~/stores/AuthenticationProvidersStore";
|
|
|
|
class AuthenticationProvider extends Model {
|
|
static modelName = "AuthenticationProvider";
|
|
|
|
displayName: string;
|
|
|
|
name: string;
|
|
|
|
providerId: string;
|
|
|
|
groupSyncSupported: boolean;
|
|
|
|
groupSyncUsesClaim: boolean;
|
|
|
|
@observable
|
|
isConnected: boolean;
|
|
|
|
@Field
|
|
@observable
|
|
isEnabled: boolean;
|
|
|
|
@Field
|
|
@observable
|
|
settings: AuthenticationProviderSettings | undefined;
|
|
|
|
@computed
|
|
get isActive() {
|
|
return this.isEnabled && this.isConnected;
|
|
}
|
|
|
|
@AfterDelete
|
|
static afterDelete(model: AuthenticationProvider) {
|
|
// Restore a placeholder record to allow re-connection
|
|
return (model.store as AuthenticationProvidersStore).add({
|
|
...model,
|
|
isEnabled: false,
|
|
isConnected: false,
|
|
});
|
|
}
|
|
}
|
|
|
|
export default AuthenticationProvider;
|