mirror of
https://github.com/outline/outline.git
synced 2026-06-13 03:14:59 +03:00
50 lines
1.1 KiB
TypeScript
50 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(
|
|
Object.assign({}, model, {
|
|
isEnabled: false,
|
|
isConnected: false,
|
|
})
|
|
);
|
|
}
|
|
}
|
|
|
|
export default AuthenticationProvider;
|